XML Schema 字符串数据类型及约束详解
字符串数据类型用于包含字符字符串的值。字符串数据类型可以包含字符、换行符、回车符和制表符。
以下是模式中字符串声明的示例:
<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,关注后即可获取最新文章推送
看完如果觉得有帮助,欢迎点赞、收藏、关注
XML Schema 字符串数据类型及约束详解的更多相关文章
- Python数据类型及其方法详解
Python数据类型及其方法详解 我们在学习编程语言的时候,都会遇到数据类型,这种看着很基础也不显眼的东西,却是很重要,本文介绍了python的数据类型,并就每种数据类型的方法作出了详细的描述,可供知 ...
- [五]基础数据类型之Short详解
Short 基本数据类型short 的包装类 Short 类型的对象包含一个 short 类型的字段 原文地址:[五]基础数据类型之Short详解 属性简介 值为 215-1 ...
- VC++常用数据类型及其操作详解
原文地址:http://blog.csdn.net/ithomer/article/details/5019367 VC++常用数据类型及其操作详解 一.VC常用数据类型列表 二.常用数据类型转化 2 ...
- Python字符串切片操作知识详解
Python字符串切片操作知识详解 这篇文章主要介绍了Python中字符串切片操作 的相关资料,需要的朋友可以参考下 一:取字符串中第几个字符 print "Hello"[0] 表 ...
- 1_03_MSSQL课程_约束详解
复习: ->创建数据库的SQL:******** create database 数据库名 on ( name=‘’, size=5MB, filegrowth=2MB, filename=&q ...
- 《手把手教你》系列技巧篇(五十)-java+ selenium自动化测试-字符串操作-上篇(详解教程)
1.简介 自动化测试中进行断言的时候,我们可能经常遇到的场景.从一个字符串中找出一组数字或者其中的某些关键字,而不是将这一串字符串作为结果进行断言.这个时候就需要我们对字符串进行操作,宏哥这里介绍两种 ...
- 《手把手教你》系列技巧篇(五十一)-java+ selenium自动化测试-字符串操作-下篇(详解教程)
1.简介 自动化测试中进行断言的时候,我们可能经常遇到的场景.从一个字符串中找出一组数字或者其中的某些关键字,而不是将这一串字符串作为结果进行断言.这个时候就需要我们对字符串进行操作,宏哥这里介绍两种 ...
- Solr系列三:solr索引详解(Schema介绍、字段定义详解、Schema API 介绍)
一.Schema介绍 1. Schema 是什么? Schema:模式,是集合/内核中字段的定义,让solr知道集合/内核包含哪些字段.字段的数据类型.字段该索引存储. 2. Schema 的定义方式 ...
- 自定义控件的自定义的属性attrs.xml下的declare-styleable中format详解
最近在摸索自定义控件,查找到一些自定义属性的一些资料,解决转载记载下来:看了此详解才方便理解! 我们在做项目的时候,由于android自带的属性不能满足需求,android提供了自定义属性的方法,其中 ...
- web.xml的加载过程配置详解
一:web.xml加载过程 简单说一下,web.xml的加载过程.当我们启动一个WEB项目容器时,容器包括(JBoss,Tomcat等).首先会去读取web.xml配置文件里的配置,当这一步骤没有 ...
随机推荐
- HarmonyOS数据管理与应用数据持久化(二)
通过键值型数据库实现数据持久化 场景介绍 键值型数据库存储键值对形式的数据,当需要存储的数据没有复杂的关系模型,比如存储商品名称及对应价格.员工工号及今日是否已出勤等,由于数据复杂度低,更容易兼容不同 ...
- 保护C#代码的艺术:深入浅出代码混淆技术
摘要 在C#开发中,代码的保护是一个不可忽视的问题.本文深入探讨了几种常用的C#代码混淆工具,帮助开发者理解如何有效地保护代码不被反编译.同时,本文也对混淆技术的优缺点进行了分析,并提供了一些实际使用 ...
- android 当在github下载一个android项目后
前言 github是一个很好的社区,有时候呢,我们从android下载项目下来无法build,有很多原因,比如说库不见了,或者说自己没有安装过支持的api版本等,会遇到各种问题. 在此总结一下. 问题 ...
- redis 简单整理——客户端案例分析[十八]
前言 简单整理一下客户端案例分析. 正文 现象一: 服务端现象:Redis主节点内存陡增,几乎用满maxmemory,而从节点 内存并没有变化. 客户端现象:客户端产生了OOM异常,也就是Redis主 ...
- docker 应用篇————dockerfile[十四]
前言 简单介绍一下dockerfile. 正文 dockerfile就是docker image的构建文件. 然后来运行一下. 然后就产生了test:1.0 这个镜像. 然后启动一下你就发现了这个镜像 ...
- 美团二面:如何保证Redis与Mysql双写一致性?连续两个面试问到了!
引言 Redis作为一款高效的内存数据存储系统,凭借其优异的读写性能和丰富的数据结构支持,被广泛应用于缓存层以提升整个系统的响应速度和吞吐量.尤其是在与关系型数据库(如MySQL.PostgreSQL ...
- 修改中文、英文参考文献在文末列表中的顺序:EndNote
本文介绍在EndNote软件中,使得参考文献按照语种排列,中文在前.英文在后的方法. 前期我们在EndNote参考文献格式Output Styles界面介绍一文中,详细介绍了文献管理软件End ...
- 为了让你在“口袋奇兵”聊遍全球,Serverless 做了什么?
简介: 江娱互动是一家新兴的游戏企业,自 2018 年成立伊始,江娱互动就面向广阔的全球游戏市场,通过创造有趣的游戏体验,在竞争激烈的游戏市场占得一席之地.仅仅 2 年的时间,江娱互动就凭借 Topw ...
- RedShift到MaxCompute迁移实践指导
简介: 本文主要介绍Amazon Redshift如何迁移到MaxCompute,主要从语法对比和数据迁移两方面介绍,由于Amazon Redshift和MaxCompute存在语法差异,这篇文章讲解 ...
- 阿里云飞天论文获国际架构顶会 ATC 2021最佳论文:全球仅三篇
简介: 近日,计算机系统结构国际顶级学术会议 USENIX ATC在线上举行.ATC 始办于1992年,是由USENIX组织的计算机系统领域的顶级会议,至今已成功举办31届,计算机系统领域中Oak语言 ...