字符串数据类型用于包含字符字符串的值。字符串数据类型可以包含字符、换行符、回车符和制表符。
以下是模式中字符串声明的示例:
<xs:element name="customer" type="xs:string"/>您文档中的一个元素可能如下所示:
<customer>John Smith</customer>或者可能是这样的:
<customer>       John Smith     </customer>注意:如果使用字符串数据类型,XML 处理器将不会修改值。
NormalizedString 数据类型
normalizedString 数据类型派生自 String 数据类型。
normalizedString 数据类型也包含字符,但 XML 处理器将删除换行符、回车符和制表符。
以下是模式中 normalizedString 声明的示例:
<xs:element name="customer" type="xs:normalizedString"/>您文档中的一个元素可能如下所示:
<customer>John Smith</customer>或者可能是这样的:
<customer>     John Smith     </customer>注意:在上面的示例中,XML 处理器将用空格替换制表符。
Token 数据类型
token 数据类型也派生自 String 数据类型。
token 数据类型也包含字符,但 XML 处理器将删除换行符、回车符、制表符、前导和尾随空格,以及多个空格。
以下是模式中 token 声明的示例:
<xs:element name="customer" type="xs:token"/>您文档中的一个元素可能如下所示:
<customer>John Smith</customer>或者可能是这样的:
<customer>     John Smith     </customer>注意:在上面的示例中,XML 处理器将删除制表符。
数据类型
请注意,以下所有数据类型均源自字符串数据类型(除了字符串本身)!
| 名称 | 描述 | 
|---|---|
| ENTITIES | |
| ENTITY | |
| ID | 表示 XML 中的 ID 属性的字符串(仅与模式属性一起使用) | 
| IDREF | 表示 XML 中的 IDREF 属性的字符串(仅与模式属性一起使用) | 
| IDREFS | |
| language | 包含有效语言标识的字符串 | 
| Name | 包含有效 XML 名称的字符串 | 
| NCName | |
| NMTOKEN | 表示 XML 中的 NMTOKEN 属性的字符串(仅与模式属性一起使用) | 
| NMTOKENS | |
| normalizedString | 不包含换行符、回车或制表符的字符串 | 
| QName | |
| string | 字符串 | 
| token | 不包含换行符、回车、制表符、前导或尾随空格或多个空格的字符串 | 
字符串数据类型的限制
可以与字符串数据类型一起使用的限制:
- 枚举
- 长度
- 最大长度
- 最小长度
- 模式(NMTOKENS、IDREFS 和 ENTITIES 不能使用此约束)
- 空白
XSD 日期和时间数据类型
日期和时间数据类型用于包含日期和时间值。
日期数据类型
日期数据类型用于指定日期。
日期以以下形式指定:“YYYY-MM-DD”,其中:
- YYYY表示年份
- MM表示月份
- DD表示日期
注意:所有组件都是必需的!
以下是模式中日期声明的示例:
<xs:element name="start" type="xs:date"/>您文档中的元素可能如下所示:
<start>2002-09-24</start>时区
要指定时区,您可以通过在时间后面添加“Z”来输入 UTC 时间的时间,如下所示:
<start>09:30:10Z</start>或者您可以通过在时间后面添加正数或负数时间来指定 UTC 时间的偏移量,如下所示:
<start>09:30:10-06:00</start>或
<start>09:30:10+06:00</start>日期时间数据类型
日期时间数据类型用于指定日期和时间。
日期时间以以下形式指定:“YYYY-MM-DDThh:mm:ss”,其中:
- YYYY表示年份
- MM表示月份
- DD表示日期
- T表示所需时间部分的开始
- hh表示小时
- mm表示分钟
- ss表示秒
注意:所有组件都是必需的!
以下是模式中日期时间声明的示例:
<xs:element name="startdate" type="xs:dateTime"/>您文档中的元素可能如下所示:
<startdate>2002-05-30T09:00:00</startdate>或者可能如下所示:
<startdate>2002-05-30T09:30:10.5</startdate>时区
要指定时区,您可以通过在时间后面添加“Z”来输入 UTC 时间的日期时间,如下所示:
<startdate>2002-05-30T09:30:10Z</startdate>或者您可以通过在时间后面添加正数或负数时间来指定 UTC 时间的偏移量,如下所示:
<startdate>2002-05-30T09:30:10-06:00</startdate>或
<startdate>2002-05-30T09:30:10+06:00</startdate>持续时间数据类型
持续时间数据类型用于指定时间间隔。
时间间隔以以下形式指定:“PnYnMnDTnHnMnS”,其中:
- P表示周期(必需)
- nY表示年数
- nM表示月数
- nD表示天数
- T表示时间部分的开始(如果您要指定小时、分钟或秒,则必需)
- nH表示小时数
- nM表示分钟数
- nS表示秒数
以下是模式中持续时间声明的示例:
<xs:element name="period" type="xs:duration"/>您文档中的元素可能如下所示:
<period>P5Y</period>上面的示例表示五年的周期。
或者可能如下所示:
<period>P5Y2M10D</period>上面的示例表示五年、两个月和 10 天的周期。
或者可能如下所示:
<period>P5Y2M10DT15H</period>上面的示例表示五年、两个月、10 天和 15 小时的周期。
或者可能如下所示:
<period>PT15H</period>上面的示例表示 15 小时的周期。
负持续时间
要指定负持续时间,请在 P 之前输入减号:
<period>-P10D</period>上面的示例表示负 10 天的周期。
日期和时间数据类型
| 名称 | 描述 | 
|---|---|
| date | 定义日期值 | 
| dateTime | 定义日期和时间值 | 
| duration | 定义时间间隔 | 
| gDay | 定义日期的一部分 - 日(DD) | 
| gMonth | 定义日期的一部分 - 月(MM) | 
| gMonthDay | 定义日期的一部分 - 月和日(MM-DD) | 
| gYear | 定义日期的一部分 - 年(YYYY) | 
| gYearMonth | 定义日期的一部分 - 年和月(YYYY-MM) | 
| time | 定义时间值 | 
日期数据类型的限制
可以与日期数据类型一起使用的限制:
- 枚举
- 最大独占
- 最大包容
- 最小独占
- 最小包容
- 模式
- 空白
XSD 数值数据类型
十进制数据类型用于表示数值。
十进制数据类型
十进制数据类型用于指定数值。
以下是模式中十进制声明的示例:
<xs:element name="price" type="xs:decimal"/>您文档中的元素可能如下所示:
<price>999.50</price>或者可能如下所示:
<price>+999.5450</price>或者可能如下所示:
<price>-999.5230</price>或者可能如下所示:
<price>0</price>或者可能如下所示:
<price>14</price>整数数据类型
整数数据类型用于指定没有小数部分的数值。
以下是模式中整数声明的示例:
<xs:element name="price" type="xs:integer"/>您文档中的元素可能如下所示:
<price>999</price>或者可能如下所示:
<price>+999</price>或者可能如下所示:
<price>-999</price>或者可能如下所示:
<price>0</price>数值数据类型
请注意,以下所有数据类型均源自十进制数据类型(除了十进制本身)!
| 名称 | 描述 | 
|---|---|
| byte | 一个带符号的 8 位整数 | 
| decimal | 一个十进制值 | 
| int | 一个带符号的 32 位整数 | 
| integer | 一个整数值 | 
| long | 一个带符号的 64 位整数 | 
| negativeInteger | 只包含负值(..,-2,-1)的整数 | 
| nonNegativeInteger | 只包含非负值(0,1,2,..)的整数 | 
| nonPositiveInteger | 只包含非正值(..,-2,-1,0)的整数 | 
| positiveInteger | 只包含正值(1,2,..)的整数 | 
| short | 一个带符号的 16 位整数 | 
| unsignedLong | 一个无符号的 64 位整数 | 
| unsignedInt | 一个无符号的 32 位整数 | 
| unsignedShort | 一个无符号的 16 位整数 | 
| unsignedByte | 一个无符号的 8 位整数 | 
数值数据类型的限制
可以与数值数据类型一起使用的限制:
- 枚举
- 小数位数
- 最大独占
- 最大包容
- 最小独占
- 最小包容
- 模式
- 总位数
- 空白
XSD 杂项数据类型
其他杂项数据类型包括布尔型、base64Binary、hexBinary、float、double、anyURI、QName 和 NOTATION。
布尔型数据类型
布尔型数据类型用于指定真值或假值。
以下是模式中布尔型声明的示例:
<xs:attribute name="disabled" type="xs:boolean"/>您文档中的元素可能如下所示:
<price disabled="true">999</price>注意:布尔型的合法值为 true、false、1(表示 true)和 0(表示 false)。
二进制数据类型
二进制数据类型用于表示二进制格式的数据。
我们有两种二进制数据类型:
- base64Binary(Base64 编码的二进制数据)
- hexBinary(十六进制编码的二进制数据)
以下是模式中十六进制二进制声明的示例:
<xs:element name="blobsrc" type="xs:hexBinary"/>任意 URI 数据类型
任意 URI 数据类型用于指定 URI。
以下是模式中任意 URI 声明的示例:
<xs:attribute name="src" type="xs:anyURI"/>注意:如果 URI 包含空格,请用 %20 替换。
杂项数据类型
| 名称 | 描述 | 
|---|---|
| anyURI | |
| base64Binary | |
| boolean | |
| double | |
| float | |
| hexBinary | |
| NOTATION | |
| QName | 
杂项数据类型的限制
可以与其他数据类型一起使用的限制:
- 枚举(布尔型数据类型不能使用此约束)
- 长度(布尔型数据类型不能使用此约束)
- 最大长度(布尔型数据类型不能使用此约束)
- 最小长度(布尔型数据类型不能使用此约束)
- 模式
- 空白
XSD 元素
| 元素 | 说明 | 
|---|---|
| all | 指定子元素可以以任何顺序出现。每个子元素可以出现 0 次或 1 次 | 
| annotation | 指定用于模式注释的顶级元素 | 
| any | 允许作者使用模式未指定的元素扩展 XML 文档 | 
| anyAttribute | 允许作者使用模式未指定的属性扩展 XML 文档 | 
| appinfo | 指定应用程序使用的信息(必须位于注释内部) | 
| attribute | 定义属性 | 
| attributeGroup | 定义用于复杂类型定义中的属性组 | 
| choice | 允许 | 
| complexContent | 定义包含混合内容或仅包含元素的复杂类型上的扩展或限制 | 
| complexType | 定义复杂类型元素 | 
| documentation | 在模式中定义文本注释(必须位于注释内部) | 
| element | 定义元素 | 
| extension | 扩展现有的 simpleType 或 complexType 元素 | 
| field | 指定用于定义标识约束中使用的值的 XPath 表达式 | 
| group | 定义用于复杂类型定义中的元素组 | 
| import | 将具有不同目标命名空间的多个模式添加到文档中 | 
| include | 将具有相同目标命名空间的多个模式添加到文档中 | 
| key | 指定作为键的属性或元素值(在实例文档中作为唯一、非空且始终存在的) | 
| keyref | 指定属性或元素值与指定键或唯一元素的值相对应 | 
| list | 将简单类型元素定义为值列表 | 
| notation | 描述 XML 文档中非 XML 数据的格式 | 
| redefine | 从外部模式中重新定义简单和复杂类型、组和属性组 | 
| restriction | 在 simpleType、simpleContent 或 complexContent 上定义限制 | 
| schema | 定义模式的根元素 | 
| selector | 指定选择一组元素以进行标识约束的 XPath 表达式 | 
| sequence | 指定子元素必须按顺序出现。每个子元素可以出现 0 次到任意次数 | 
| simpleContent | 包含仅扩展或限制文本类型复杂类型或简单类型的内容,并且不包含元素 | 
| simpleType | 定义简单类型并指定有关属性或仅文本元素的值的约束和信息 | 
| union | 将简单类型定义为指定简单数据类型的值集合(联合) | 
| unique | 定义元素或属性值必须在范围内是唯一的 | 
XSD 数据类型的限制/特征
| 约束 | 描述 | 
|---|---|
| enumeration | 定义可接受值的列表 | 
| fractionDigits | 指定允许的最大小数位数。必须等于或大于零 | 
| length | 指定允许的精确字符或列表项数目。必须等于或大于零 | 
| maxExclusive | 指定数值的上限(该值必须小于此值) | 
| maxInclusive | 指定数值的上限(该值必须小于或等于此值) | 
| maxLength | 指定允许的最大字符或列表项数目。必须等于或大于零 | 
| minExclusive | 指定数值的下限(该值必须大于此值) | 
| minInclusive | 指定数值的下限(该值必须大于或等于此值) | 
| minLength | 指定允许的最小字符或列表项数目。必须等于或大于零 | 
| pattern | 定义可接受的确切字符序列 | 
| totalDigits | 指定允许的最大数字位数。必须大于零 | 
| whiteSpace | 指定如何处理空格(换行符、制表符、空格和回车符) | 
最后
为了方便其他设备和平台的小伙伴观看往期文章:
微信公众号搜索:Let us Coding,关注后即可获取最新文章推送
看完如果觉得有帮助,欢迎点赞、收藏、关注

 
  
  
 
 
 

