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配置文件里的配置,当这一步骤没有 ...
随机推荐
- MySQL 8.0字符集校正
MySQL升级为8.0版本时,之前版本的字符集往往是不同的,需要校正. 执行下面的三个SQL语句的查询结果,可以从库.表.列三个层面对字符集进行校正. 库 select concat('alter d ...
- ssm 创建bean的三种方式和spring依赖注入的三种方式
<!--创建bean的第一种方式:使用默认无参构造函数 在默认情况下: 它会根据默认无参构造函数来创建类对象.如果 bean 中没有默认无参构造函数,将会创建失败--> <bean ...
- 本周三晚19:00Hello HarmonyOS应用篇第7课—分布式应用开发
6月15日19:00 Hello HarmonyOS系列应用篇迎来的本系列直播课的最后一课,将会有怎样的精彩呈现呢? 万物互联的时代已经来临,如果你想运用过往的技术,开发一个有"跨设备操 ...
- CSS 布局专题
0x01 浮动布局 (1)常见网页布局 顶部商标栏(Logo):展示网站的标志.名称以及具有代表性的图片 导航栏(Navigation):展示网站大概的分类 左侧边栏(Left-side Bar):展 ...
- CentOS升级内核-- CentOS9 Stream/CentOS8 Stream/CentOS7
官方文档在此 升级原因 当我们安装一些软件(对,我说的就是Kubernetes),可能需要新内核的支持,而CentOS又比较保守,不太升级,所以需要我们手工升级. # 看下目前是什么版本内核 unam ...
- 报表 BI 选型的那些事
前言 报表工具是一个接近 20 年的产物了 但是,直到现在,在各种数据信息化的系统中,报表工具的作用,不仅没有褪色,反而是因为信息化需求的增大.数据的增多,以及报表工具本身迭代后越来越方便好用,使得它 ...
- Web前端 - Vue
<!-- id标识vue作用的范围 --> <div id="app"> <!-- {{}} 插值表达式,绑定vue中的data数据 --> { ...
- CSS 样式清单整理(二)
16.元素占满整个屏幕 heigth如果使用100%,会根据父级的高度来决定,所以使用100vh单位. .dom{ width:100%; height:100vh; } 17.CSS实现文本两端对齐 ...
- 《c#高级编程》第2章C#2.0中的更改(一)——泛型
一.实例 当我们需要编写一些通用的代码,但是不确定它们将处理的数据类型时,泛型就非常有用了.下面是一个简单的 C# 泛型示例: using System; public class Example { ...
- MySQL统计信息不准导致的性能问题
简介: 统计信息不准导致错误的执行计划,引发性能问题 表的统计信息错误导致优化器选择错误的执行计划. 一个客户的性能优化案例: 没有修改数据库实例的任何配置参数以及业务代码没有变更的情况下,一条 sq ...