字符串数据类型用于包含字符字符串的值。字符串数据类型可以包含字符、换行符、回车符和制表符。

以下是模式中字符串声明的示例:

<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 字符串数据类型及约束详解的更多相关文章

  1. Python数据类型及其方法详解

    Python数据类型及其方法详解 我们在学习编程语言的时候,都会遇到数据类型,这种看着很基础也不显眼的东西,却是很重要,本文介绍了python的数据类型,并就每种数据类型的方法作出了详细的描述,可供知 ...

  2. [五]基础数据类型之Short详解

      Short 基本数据类型short  的包装类 Short 类型的对象包含一个 short 类型的字段      原文地址:[五]基础数据类型之Short详解   属性简介   值为  215-1 ...

  3. VC++常用数据类型及其操作详解

    原文地址:http://blog.csdn.net/ithomer/article/details/5019367 VC++常用数据类型及其操作详解 一.VC常用数据类型列表 二.常用数据类型转化 2 ...

  4. Python字符串切片操作知识详解

    Python字符串切片操作知识详解 这篇文章主要介绍了Python中字符串切片操作 的相关资料,需要的朋友可以参考下 一:取字符串中第几个字符 print "Hello"[0] 表 ...

  5. 1_03_MSSQL课程_约束详解

    复习: ->创建数据库的SQL:******** create database 数据库名 on ( name=‘’, size=5MB, filegrowth=2MB, filename=&q ...

  6. 《手把手教你》系列技巧篇(五十)-java+ selenium自动化测试-字符串操作-上篇(详解教程)

    1.简介 自动化测试中进行断言的时候,我们可能经常遇到的场景.从一个字符串中找出一组数字或者其中的某些关键字,而不是将这一串字符串作为结果进行断言.这个时候就需要我们对字符串进行操作,宏哥这里介绍两种 ...

  7. 《手把手教你》系列技巧篇(五十一)-java+ selenium自动化测试-字符串操作-下篇(详解教程)

    1.简介 自动化测试中进行断言的时候,我们可能经常遇到的场景.从一个字符串中找出一组数字或者其中的某些关键字,而不是将这一串字符串作为结果进行断言.这个时候就需要我们对字符串进行操作,宏哥这里介绍两种 ...

  8. Solr系列三:solr索引详解(Schema介绍、字段定义详解、Schema API 介绍)

    一.Schema介绍 1. Schema 是什么? Schema:模式,是集合/内核中字段的定义,让solr知道集合/内核包含哪些字段.字段的数据类型.字段该索引存储. 2. Schema 的定义方式 ...

  9. 自定义控件的自定义的属性attrs.xml下的declare-styleable中format详解

    最近在摸索自定义控件,查找到一些自定义属性的一些资料,解决转载记载下来:看了此详解才方便理解! 我们在做项目的时候,由于android自带的属性不能满足需求,android提供了自定义属性的方法,其中 ...

  10. web.xml的加载过程配置详解

      一:web.xml加载过程 简单说一下,web.xml的加载过程.当我们启动一个WEB项目容器时,容器包括(JBoss,Tomcat等).首先会去读取web.xml配置文件里的配置,当这一步骤没有 ...

随机推荐

  1. 用于多视角人群计数的协同通信图卷积网络 Co-Communication Graph Convolutional Network for Multi-View Crowd Counting

    Multi-Camara Methods Co-Communication Graph Convolutional Network for Multi-View Crowd Counting 论文ur ...

  2. 2款Notepad++平替工具(实用、跨平台的文本编辑器)

    前言 今天大姚给大家分享2款Notepad++平替工具,实用.跨平台(支持Window/MacOS/Linux操作系统平台)的文本编辑器. NotepadNext NotepadNext是一个跨平台的 ...

  3. 重新整理 .net core 实践篇—————微服务的桥梁EventBus[三十一]

    前言 简单介绍一下EventBus. 正文 EventBus 也就是集成事件,用于服务与服务之间的通信. 比如说我们的订单处理事件,当订单处理完毕后,我们如果通过api马上去调用后续接口. 比如说订单 ...

  4. c# 如何在一般处理程序中返回json

    前言 迁移以前的笔记. 正文 无论是一般处理程序,还是其他程序,处理事项,肯定在于HttpResponse. 这种情况就可以操作,至于字符是自己转换还是由HttpResponse中的信息默认转换,都没 ...

  5. jenkins 持续集成和交付——一个构件小栗子前置(三)

    前言 下面介绍构建一个小栗子. 在此之前有个小前提,就是已经安装好了git 服务器,用的是gogs,详细请看外篇. 正文 插件安装 首先你要安装一个git插件. 装完git插件后,我们还得安装一些gi ...

  6. 重新整理数据结构与算法(c#)—— 二叉树排序树[二十二]

    前言 什么是二叉堆排序呢? 就是上面这种,一个节点大于左节点,但是小于右节点,再我写的例子中会写出大于等于右节点. 那么如何让一个数组进行变成这种二叉树呢? 其实只要有规律就很简单. 第一个元素(0) ...

  7. Java入门01:环境安装与配置

    Java入门01:环境安装与配置 JDK下载 下载地址:https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads ...

  8. iframe跨域,获取iframe中元素

    1.需求让iframe嵌入页面,并且没有滚动条,也就是相当于两个页面拼接在一起 跨域解决,通过框架配置代理 proxy: { '/medical': { target: 'https://exampl ...

  9. Java实现控制台购书系统

    "感谢您阅读本篇博客!如果您觉得本文对您有所帮助或启发,请不吝点赞和分享给更多的朋友.您的支持是我持续创作的动力,也欢迎留言交流,让我们一起探讨技术,共同成长!谢谢!" 代码 im ...

  10. 力扣522(java)-最长特殊序列Ⅱ(中等)

    题目: 给定字符串列表 strs ,返回 它们中 最长的特殊序列 .如果最长特殊序列不存在,返回 -1 . 最长特殊序列 定义如下:该序列为某字符串 独有的最长子序列(即不能是其他字符串的子序列). ...