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配置文件里的配置,当这一步骤没有 ...
随机推荐
- locust的 -T,--tags使用
官网的TAG配置说明:-T [TAG [TAG ...]], --tags [TAG [TAG ...]]List of tags to include in the test, so only ta ...
- 浅谈TypeScript对业务可维护性的影响
前言 笔者认为, TypeScript是服务于业务的, 核心就是提高代码的可维护性. TypeScript是把双刃剑, 如果类型系统使用的不好, 反而会阻碍开发, 甚至最后就变成了anyScript. ...
- 力扣1773(java&python)-统计匹配检索规则的物品数量(简单)
题目: 给你一个数组 items ,其中 items[i] = [typei, colori, namei] ,描述第 i 件物品的类型.颜色以及名称. 另给你一条由两个字符串 ruleKey 和 r ...
- 力扣119(java)-杨辉三角Ⅱ(简单)
题目: 给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行. 在「杨辉三角」中,每个数是它左上方和右上方的数的和. 示例 1: 输入: rowIndex = 3输出: [1 ...
- 力扣396(java)-旋转数组(中等)
题目: 给定一个长度为 n 的整数数组 nums . 假设 arrk 是数组 nums 顺时针旋转 k 个位置后的数组,我们定义 nums 的 旋转函数 F 为: F(k) = 0 * arrk[0 ...
- 暑期集训 Day7 —— 模拟赛复盘
${\color{Green} \mathrm{Problem\ 1 :最优包含 }} $ 发现是 DP,于是开始设计状态:DP[i][j] 表示前一个字符串匹配到位置 i,后一个匹配到 j 的最少修 ...
- ModelScope初探:一行代码调用成熟AI模型。
简介: 如何用一行代码调用成熟AI模型?试试ModelScope,让AI开发者解放生产力! ModelScope是阿里推出的下一代开源的模型即服务共享平台,为泛AI开发者提供灵活.易用.低成本的一站式 ...
- 在kubernetes集群中使用虚拟节点创建1万Pod-支持在线教育业务
使用虚拟节点提升k8s集群容量和弹性 在kubernetes集群中添加虚拟节点的方式已被非常多的客户普遍使用,基于虚拟节点可以极大提升集群的Pod容量和弹性,灵活动态的按需创建ECI Pod,免去集群 ...
- CNCF 沙箱项目 OCM Placement 多集群调度指南
简介:在这篇文章中,将介绍 Placement 如何选择到所需的集群,Placement 可以提供的调度功能,以及一些场景下的最佳实践,使用者可以参考示例来编写符合自己要求的 Placement.其 ...
- 汽车之家:基于 Flink + Iceberg 的湖仓一体架构实践
简介: 由汽车之家实时计算平台负责人邸星星在 4 月 17 日上海站 Meetup 分享的,基于 Flink + Iceberg 的湖仓一体架构实践. 内容简要: 一.数据仓库架构升级的背景 二.基于 ...