xs:date:不包含时间的日期类型。
xs:gYearMonth:只包含年和月
xs:gYear :只包含年
xs:time:时间类型
Sunday, September 28, 2008
xs:dateTime
一个日期时间类型,给出一些例子:
2001-10-26T21:32:52
2001-10-26T21:32:52+02:00
2001-10-26T19:32:52Z
2001-10-26T19:32:52+00:00
-2001-10-26T21:32:52
2001-10-26T21:32:52.12679
下面的值是不允许的:
2001-10-26 (没有给出时间部分)
2001-10-26T21:32 (秒没有)
2001-10-26T25:32:52+02:00 (小时的的长度超出了24)
01-10-26T21:32 (没有给出所有的部分)
2001-10-26T21:32:52
2001-10-26T21:32:52+02:00
2001-10-26T19:32:52Z
2001-10-26T19:32:52+00:00
-2001-10-26T21:32:52
2001-10-26T21:32:52.12679
下面的值是不允许的:
2001-10-26 (没有给出时间部分)
2001-10-26T21:32 (秒没有)
2001-10-26T25:32:52+02:00 (小时的的长度超出了24)
01-10-26T21:32 (没有给出所有的部分)
Labels:
XSD DataTypes
xs:unsignedLong , xs:unsignedInt , xs:unsignedShort 和xs:unsignedByte .
xs:unsignedLong:无符号长整型,数值介于0到18446744073709551615
xs:unsignedInt:无符号整型,数值介于0到4294967295
xs:unsignedShort:数值介于0到65535
xs:unsignedByte:数值介于0到255
xs:unsignedInt:无符号整型,数值介于0到4294967295
xs:unsignedShort:数值介于0到65535
xs:unsignedByte:数值介于0到255
Labels:
XSD DataTypes
xs:long , xs:int , xs:short 和 xs:byte
xs:long:长整数 介于-9223372036854775808 和 9223372036854775807之间
xs:int:整数 介于-2147483648 和 2147483647之间
xs:short:短整数 介于-32768 和 32767之间
xs:byte:字节型 介于-128 和 127 之间
xs:int:整数 介于-2147483648 和 2147483647之间
xs:short:短整数 介于-32768 和 32767之间
xs:byte:字节型 介于-128 和 127 之间
Labels:
XSD DataTypes
有符号的数字
xs:nonPositiveInteger 和xs:negativeInteger
非正数和非负数整数
xs:nonNegativeInteger 和 xs:positiveInteger
非负数和非正数整数
非正数和非负数整数
xs:nonNegativeInteger 和 xs:positiveInteger
非负数和非正数整数
Labels:
XSD DataTypes
xs:integer
xs:integer继承自xs:decimal,他代表了不包含小数点的整数。下面的值是允许的:
123456
+00000012
-1
-456
下面的值是不允许的:
1 234 (不允许空格)
1. (不允许小数点)
+1,234 (不允许千分位计数法).
123456
+00000012
-1
-456
下面的值是不允许的:
1 234 (不允许空格)
1. (不允许小数点)
+1,234 (不允许千分位计数法).
Labels:
XSD DataTypes
xs:decimal
xs:decimal定义了数字类型,他对数字的精度和长度没有限制,比如下面的值:
123.456
+1234.456
-1234.456
-.45
6-456
但下面的值是不允许的:
1 234.456 (不允许空格)
1234.456E+2 (不允许使用科学计数方式)
+ 1234.456 (不允许空格)
+1,234.456 (千分位计数方式是不允许的)
123.456
+1234.456
-1234.456
-.45
6-456
但下面的值是不允许的:
1 234.456 (不允许空格)
1234.456E+2 (不允许使用科学计数方式)
+ 1234.456 (不允许空格)
+1,234.456 (千分位计数方式是不允许的)
Labels:
XSD DataTypes
xs:anyURI
表明元素的值是URI(遵循RFCs 2396 和2732标准),而且他的内容是非ASIC的,会被转译,举个例
子:
<a href="http://dmoz.org/World/Français/">
Word/Français
</a>
其中的herf就是xs:anyURI类型的,且其值被转换为:
http://dmoz.org/World/Fran%e7ais/
子:
<a href="http://dmoz.org/World/Français/">
Word/Français
</a>
其中的herf就是xs:anyURI类型的,且其值被转换为:
http://dmoz.org/World/Fran%e7ais/
Labels:
XSD DataTypes
xs:QName
xs:QName与xs:Name类似,一个附加的内容是他允许单引号" ' " ,但是这个单引号不能在开头的位置。
一个xs:QName的例子,比如
<xs:attribute name="lang" type="xs:language"/>,
这个language的元祖{"http://www.w3.org/2001/XMLSchema", "language"}
这表language 的名称空间"http://www.w3.org/2001/XMLSchema"
而我们定义的<xs:element ref="book" maxOccurs="unbounded"/>
这个book元素的元祖{NULL,"book"}
也就说他没有名称空间。
一个xs:QName的例子,比如
<xs:attribute name="lang" type="xs:language"/>,
这个language的元祖{"http://www.w3.org/2001/XMLSchema", "language"}
这表language 的名称空间"http://www.w3.org/2001/XMLSchema"
而我们定义的<xs:element ref="book" maxOccurs="unbounded"/>
这个book元素的元祖{NULL,"book"}
也就说他没有名称空间。
Labels:
XSD DataTypes
xs:NCName
他类似于xs:Name,但是不允许":"。比如Test,Hello,-9908-00-00是允许的,但是:-9908-00-00和Hello:World是不允许的。xs:ID, xs:IDREF, 和xs:ENTITY 这个几个元素集成自 xs:NCName.
Labels:
XSD DataTypes
xs:Name
这个元素和xs:NMTOKEN 类似,但是他必须以字符字母、":"、"-"开头,比如Rich,Nihao,-Commonets ,:Name这些是允许的,但是0920291是不允许的,逗号也是不允许的,比如"This,is,a,test"
Labels:
XSD DataTypes
xs:NMTOKEN
xs:NMTOKEN 元素类型限定了元素内容只能是一些列不包括空格和换行的字符串,比如:
"Test" "Hello" "1999-01-01"这些是允许的。但是,"This is a test"
"Hello world
I'm a boy
"
这些字符串是不允许的,逗号也是不允许的"Hello,world"
"Test" "Hello" "1999-01-01"这些是允许的。但是,"This is a test"
"Hello world
I'm a boy
"
这些字符串是不允许的,逗号也是不允许的"Hello,world"
Labels:
XSD DataTypes
xs:language
xs:language 数据类型约束了,元素的内容只能是RFC 1766 标准的语言规范,比如
en, en-US, fr, 或者 fr-FR.
en, en-US, fr, 或者 fr-FR.
Labels:
XSD DataTypes
xs:token
这个数据类型定义了输出的字符为无缩进的格式,而且一种“可读”的格式:
<title lang="en">
Being a Dog Is
a Full-Time Job
</title>
那么输出的结果:
Being a Dog Is a Full-Time Job
换行符号没有被忽略了。
<title lang="en">
Being a Dog Is
a Full-Time Job
</title>
那么输出的结果:
Being a Dog Is a Full-Time Job
换行符号没有被忽略了。
Labels:
XSD DataTypes
xs:normalizedString
这个数据类型定义了输出的字符为无缩进的格式,比如
<title lang="en">
Being a Dog Is
a Full-Time Job
</title>
那么输出的结果:
Being a Dog Is a Full-Time Job
换行符号被替换,成为一种无缩进的字符串格式
<title lang="en">
Being a Dog Is
a Full-Time Job
</title>
那么输出的结果:
Being a Dog Is a Full-Time Job
换行符号被替换,成为一种无缩进的字符串格式
Labels:
XSD DataTypes
xs:string
这个字符串类型定义了一种不替换任何空格的字符串,比如:
<title lang="en">
Being a Dog Is
a Full-Time Job
</title>
那么输出的结果:
Being a Dog Is
a Full-Time Job
换行符号没有被替换,准确的说所有的字符串被原封不动的输出。
Labels:
XSD DataTypes
Saturday, September 27, 2008
创建自己的第一个XML Schema
XML Schema是用来定义和验证XML的规则文件,比如,你的XML中应该包含哪些元素,属性,元素的子元素是什么,他的类型是字符串还是数字,或者可能是日期或者一个唯一的ID。好了从上面这句话中我们就得到几个概念名字:元素:<xs:element>,用于定义你的XML中的元素。</xs:element>属性:<xs:attribute>,用于定义你的XML中的元素的属性。</xs:attribute>类型:元素或者属性的类型,比如:xs:string代表字符串,xs:int 代表一个整数,后面我们会有专门的一节来介绍这些属性。好了,下面开始我们的第一个XML Schema文件
我首先给出XML的源文件的样子
<?xml version="1.0"?>
<library>
<book id="test" available="true">
<isbn>
ISBN001
</isbn>
<title lang="en">
Being a dog is a Full-Time Job
</title>
<author id="CMS">
<name>
Tom Hances
</name>
<born>
1970-01-01
</born>
<death>
2002-01-01
</death>
</author>
<character id="test">
<name>
Slippry
</name>
<born>
2001-01-01
</born>
<qualification>
Tester
</qualification>
</character>
<character id="Urgly">
<name>
Urgly
</name>
<born>
1999-01-01
</born>
<qualification>
Developer
</qualification>
</character>
<character id="Johnson">
<name>
Johnson
</name>
<born>
1999-01-01
</born>
<qualification>
TeamLeader
</qualification>
</character>
</book>
</library>
好了,现在开始定义XSD:
1)所有点XML所有点XML Schema必须以<xs:schema xs="http://www.w3.org/2001/XMLSchema"></xs:schema>开头。
2)<xs:element>代表一个元素 比如book,book元素还有子元素我们一会儿将介绍一种complexType来定义他的元素类型。
其他诸如name,born,qualification 等只是一个简单的元素没有任何子元素也没有任何属性,我们先来定义这些属性。
<xs:element name="name" type="xs:string"></xs:element> <!--name 是一个简单的字符串-->
<xs:element name="qualification" type="xs:string"></xs:element>
<xs:element name="born" type="xs:date"></xs:element><!--born 是一个时期类型的,他的默认格式为yyyy-MM-dd-->
<xs:element name="death" type="xs:date"></xs:element>
<xs:element name="isbn" type="xs:string"></xs:element>
<xs:attribute name="id" type="xs:ID"></xs:attribute><!--这个xs:ID 属性表明他是一个唯一的值-->
<xs:attribute name="available" type="xs:boolean"></xs:attribute><!--xs:boolean布尔值-->
<xs:attribute name="lang" type="xs:language"></xs:attribute><!--还有一个专门的language类型,他的取值范围必须是国际化标准值,比如en,de等等-->
3)好了,所有的简单元素都已经定义好了。
我们来看另外一个元素,title
<title lang="en">
Being a dog is a Full-Time Job
</title>
他只有一个简单的文本内容,有一个属性lang,,没有子元素。这种元素该如何定义呢。XSD 中complexType可以帮助我们,他用于定义XSD标准中没有提供的复杂类型。
想title这样的元素我们可以定义为下:
<xs:element name="title">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute ref="lang">
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
以上的内容中有两个新的关键字,complexType 我们刚才已经讲过了。还有一个simpleContent 他就是用来定义像title这样的只包含文本和属性的简单元素。其中ref="lang"
代表这个属性引用了我们已经定义的lang熟悉。xs:extension base="xs:string" 代表这个元素的类型继承自字符串类型。
4)现在是最复杂的部分,我直接给出例子,下面是Book元素的描述
<xs:element name="book">
<xs:complexType> <!--定义一个复杂的类型-->
<xs:sequence><!--元素内的子元素是顺序出现的-->
<xs:element ref="isbn"/><!--引用一个已经存在的元素-->
<xs:element ref="title"/>
<xs:element ref="author" minOccurs="0" maxOccurs="unbounded"/><!--minOccurs最少出现0次,maxOccurs="unbounded" 最大出现的次数没有限制-->
<xs:element ref="character" minOccurs="0" maxOccurs="unbounded"/><!--如果不定义minOccurs或者maxOccurs默认情况下之出现一次-->
</xs:sequence>
<xs:attribute ref="id"/><!--负责元素的属性定义必须放在sequence 之外,而且必须在他的下面-->
<xs:attribute ref="available"/>
</xs:complexType>
</xs:element>
我首先给出XML的源文件的样子
<?xml version="1.0"?>
<library>
<book id="test" available="true">
<isbn>
ISBN001
</isbn>
<title lang="en">
Being a dog is a Full-Time Job
</title>
<author id="CMS">
<name>
Tom Hances
</name>
<born>
1970-01-01
</born>
<death>
2002-01-01
</death>
</author>
<character id="test">
<name>
Slippry
</name>
<born>
2001-01-01
</born>
<qualification>
Tester
</qualification>
</character>
<character id="Urgly">
<name>
Urgly
</name>
<born>
1999-01-01
</born>
<qualification>
Developer
</qualification>
</character>
<character id="Johnson">
<name>
Johnson
</name>
<born>
1999-01-01
</born>
<qualification>
TeamLeader
</qualification>
</character>
</book>
</library>
好了,现在开始定义XSD:
1)所有点XML所有点XML Schema必须以<xs:schema xs="http://www.w3.org/2001/XMLSchema"></xs:schema>开头。
2)<xs:element>代表一个元素 比如book,book元素还有子元素我们一会儿将介绍一种complexType来定义他的元素类型。
其他诸如name,born,qualification 等只是一个简单的元素没有任何子元素也没有任何属性,我们先来定义这些属性。
<xs:element name="name" type="xs:string"></xs:element> <!--name 是一个简单的字符串-->
<xs:element name="qualification" type="xs:string"></xs:element>
<xs:element name="born" type="xs:date"></xs:element><!--born 是一个时期类型的,他的默认格式为yyyy-MM-dd-->
<xs:element name="death" type="xs:date"></xs:element>
<xs:element name="isbn" type="xs:string"></xs:element>
<xs:attribute name="id" type="xs:ID"></xs:attribute><!--这个xs:ID 属性表明他是一个唯一的值-->
<xs:attribute name="available" type="xs:boolean"></xs:attribute><!--xs:boolean布尔值-->
<xs:attribute name="lang" type="xs:language"></xs:attribute><!--还有一个专门的language类型,他的取值范围必须是国际化标准值,比如en,de等等-->
3)好了,所有的简单元素都已经定义好了。
我们来看另外一个元素,title
<title lang="en">
Being a dog is a Full-Time Job
</title>
他只有一个简单的文本内容,有一个属性lang,,没有子元素。这种元素该如何定义呢。XSD 中complexType可以帮助我们,他用于定义XSD标准中没有提供的复杂类型。
想title这样的元素我们可以定义为下:
<xs:element name="title">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute ref="lang">
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
以上的内容中有两个新的关键字,complexType 我们刚才已经讲过了。还有一个simpleContent 他就是用来定义像title这样的只包含文本和属性的简单元素。其中ref="lang"
代表这个属性引用了我们已经定义的lang熟悉。xs:extension base="xs:string" 代表这个元素的类型继承自字符串类型。
4)现在是最复杂的部分,我直接给出例子,下面是Book元素的描述
<xs:element name="book">
<xs:complexType> <!--定义一个复杂的类型-->
<xs:sequence><!--元素内的子元素是顺序出现的-->
<xs:element ref="isbn"/><!--引用一个已经存在的元素-->
<xs:element ref="title"/>
<xs:element ref="author" minOccurs="0" maxOccurs="unbounded"/><!--minOccurs最少出现0次,maxOccurs="unbounded" 最大出现的次数没有限制-->
<xs:element ref="character" minOccurs="0" maxOccurs="unbounded"/><!--如果不定义minOccurs或者maxOccurs默认情况下之出现一次-->
</xs:sequence>
<xs:attribute ref="id"/><!--负责元素的属性定义必须放在sequence 之外,而且必须在他的下面-->
<xs:attribute ref="available"/>
</xs:complexType>
</xs:element>
Labels:
XSD
Wednesday, September 24, 2008
Subscribe to:
Posts (Atom)