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配置文件里的配置,当这一步骤没有 ...
随机推荐
- RabbitMQ 02 安装
安装 推荐使用Docker进行安装. 执行如下命令. docker run -d --restart always --name rabbitmq \ -e RABBITMQ_DEFAULT_USER ...
- HarmonyOS数据管理与应用数据持久化(一)
一. 数据管理概述 功能介绍 数据管理为开发者提供数据存储.数据管理能力,比如联系人应用数据可以保存到数据库中,提供数据库的安全.可靠等管理机制. ● 数据存储:提供通用数据持久化能力,根据数据特 ...
- nginx重新整理——————nginx 的网络模型[九]
前言 简单介绍一下nginx的网络模型. 正文 网络拓扑图: 数据流: 网络传输大概是这样传输的. nginx 事件循环: 事件处理过程: 上面两张图什么意思呢? 其实就是说,nginx 是通过事件驱 ...
- Django3.0连接数据库注意点
需先在应用下的__Init__.py文件中配置 import pymysqlpymysql.version_info=(1, 3, 13, 'final', 0) # 3.0时需要pymysql.in ...
- warmup预热学习率
学习率是神经网络训练中最重要的超参数之一,针对学习率的优化方式很多,Warmup是其中的一种 (一).什么是Warmup?Warmup是在ResNet论文中提到的一种学习率预热的方法,它在训练开始的时 ...
- 前端使用 Konva 实现可视化设计器(6)
请大家动动小手,给我一个免费的 Star 吧~ 这一章处理一下复制.粘贴.删除.画布归位.层次调整,通过右键菜单控制. github源码 gitee源码 示例地址 复制粘贴 复制粘贴(通过快捷键) / ...
- Java面试题:为什么HashMap不建议使用对象作为Key?
HashMap 是一种基于哈希表的动态数据结构,它允许使用任意不可变对象作为键(key)来存储和检索数据.然而,在某些情况下,使用对象作为 HashMap 的键可能会遇到一些问题. 首先,我们需要明确 ...
- 【ASPLOS 2022】机器学习访存密集计算编译优化框架AStitch,大幅提升任务执行效率
简介: 近日,关于机器学习访存密集计算编译优化框架的论文<AStitch: Enabling A New Multi-Dimensional Optimization Space for Mem ...
- 为 Serverless Devs 插上 Terraform 的翅膀,实现企业级多环境部署(上)
简介: Serverless Devs 离不开对云资源的操作,但支持新资源时需要开发相应的组件代码:如果将环境模板的定义通过 Terraform IaC 来完成,在 Serverless Devs ...
- SysAK 应用抖动诊断篇—— eBPF又立功了! | 龙蜥技术
简介:且看 SysAK 是如何打造一款性能开销不大.安全可靠.且灵活的关中断检测工具. 文 / 系统运维 SIG 编者按:还记得曾经风靡一时的狄仁杰探案系列之<他抖任他抖,IO诊断在我手& ...