XML 教程

XML 教程 XML 简介 XML 用途 XML 树结构 XML 语法 XML 元素 XML 属性 XML 命名空间 XML Display XML HttpRequest XML Parser XML DOM XML XPath XML XSLT XML XQuery XML XLink XML 验证器 XML DTD XML Schema XML 服务器 XML 实例 XML 测验

XML AJAX

AJAX 简介 AJAX XMLHttp AJAX 请求 AJAX 响应 AJAX XML 文件 AJAX PHP AJAX ASP AJAX 数据库 AJAX 应用程序 AJAX 实例

XML DOM

DOM 简介 DOM 节点 DOM 访问节点 DOM 节点信息 DOM 节点列表 DOM 节点遍历 DOM 节点导航 DOM 获取节点 DOM 更改节点 DOM 删除节点 DOM 替换节点 DOM 创建节点 DOM 添加节点 DOM 克隆节点 DOM 实例

XPath 教程

XPath 简介 XPath 节点 XPath 语法 XPath 轴(Axes) XPath 运算符 XPath 实例

XSLT 教程

XSLT 简介 XSL 语言 XSLT 转换 XSLT <template> XSLT <value-of> XSLT <for-each> XSLT <sort> XSLT <if> XSLT <choose> XSLT Apply XSLT 客户端 XSLT 服务端 XSLT 编辑 XML XSLT 实例

XQuery 教程

XQuery 简介 XQuery 实例 XQuery FLWOR 表达式 XQuery FLWOR + HTML XQuery 术语 XQuery 语法 XQuery 添加元素和属性 XQuery 选择和过滤 XQuery 函数

XML DTD

DTD 简介 DTD 构建模块 DTD 元素 DTD 属性 DTD 元素 vs. 属性 DTD 实体 DTD 实例

XSD Schema

XSD 简介 XSD How To XSD <schema> XSD 元素 XSD 属性 XSD 限制

XSD Complex

XSD 复杂元素 XSD 空元素 XSD 仅限元素 XSD 纯文本元素 XSD 混合 XSD 指示器 XSD <any> XSD <anyAttribute> XSD 替换 XSD 实例

XSD 数据类型

XSD 字符串 XSD 日期 XSD 数值 XSD 杂项 XSD 参考手册

Web Services

XML Services 简介 XML WSDL XML SOAP XML RDF XML RSS

参考手册

DOM 节点类型 DOM 节点 DOM NodeList DOM NamedNodeMap DOM 文档 DOM 元素 DOM 属性 DOM 文本 DOM CDATA DOM 注释 DOM XMLHttpRequest DOM 解析器 XSLT 元素 XSLT/XPath 函数


XSD 限制/方面

限制用于定义XML元素或属性的可接受值。对XML元素的限制称为facet。


对值的限制

下面的实例定义了一个名为"age"是有限制的,年龄值不能小于0或大于120:

<xs:element name="age">
  <xs:simpleType>
    <xs:restriction base="xs:integer">
      <xs:minInclusive value="0"/>
      <xs:maxInclusive value="120"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

对一组值的限制

为了将XML元素的内容限制为一组可接受的值,我们将使用枚举约束。

下面的实例定义了一个名为&quot;汽车;有限制的。唯一可接受的数值是:奥迪、高尔夫、宝马:

<xs:element name="car">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:enumeration value="Audi"/>
      <xs:enumeration value="Golf"/>
      <xs:enumeration value="BMW"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

上面的例子也可以这样写:

<xs:element name="car" type="carType"/>

<xs:simpleType name="carType">
  <xs:restriction base="xs:string">
    <xs:enumeration value="Audi"/>
    <xs:enumeration value="Golf"/>
    <xs:enumeration value="BMW"/>
  </xs:restriction>
</xs:simpleType>

注释: 在这种情况下,"carType"类型可以被其他元素使用,因为它不是"car"元素的一部分。



对一系列值的限制

为了限制XML元素的内容来定义一系列可以使用的数字或字母,我们将使用模式约束。

下面的实例定义了一个名为"letter"的元素,其中包含一个限制。唯一可接受的值是从a到z的小写字母之一:

<xs:element name="letter">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="[a-z]"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

下一个实例定义了一个名为"initials"的元素,其中包含一个限制。唯一可接受的值是从a到z的三个大写字母:

<xs:element name="initials">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="[A-Z][A-Z][A-Z]"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

下一个实例还定义了一个名为"initials"的元素,其中包含一个限制。唯一可接受的值是从a到z的三个小写或大写字母:

<xs:element name="initials">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="[a-zA-Z][a-zA-Z][a-zA-Z]"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

下一个实例定义了一个名为"choice"的元素,其中包含一个限制。唯一可接受的值是以下字母之一x、y或z:

<xs:element name="choice">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="[xyz]"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

下一个实例定义了一个名为"prodid"的元素,其中包含一个限制。唯一可接受的值是序列中的五位数字,每个数字必须在0到9之间:

<xs:element name="prodid">
  <xs:simpleType>
    <xs:restriction base="xs:integer">
      <xs:pattern value="[0-9][0-9][0-9][0-9][0-9]"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

对一系列值的其他限制

下面的实例定义了一个名为"letter"的元素,其中包含一个限制。可接受的值是从a到z的小写字母出现次数为零或更多:

<xs:element name="letter">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="([a-z])*"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

下一个实例还定义了一个名为"letter"的元素,其中包含一个限制。可接受的值是一对或多对字母,每对由一个小写字母和一个大写字母组成。例如,"sToP"将通过此模式进行验证,而不是"sToP"或"sToP"或"sToP":

<xs:element name="letter">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="([a-z][A-Z])+"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

下一个实例定义了一个名为"gender"的元素,并带有一个限制。唯一可接受的值是男性或女性:

<xs:element name="gender">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="male|female"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

下一个实例定义了一个名为"password"的元素,其中有一个限制。一行中必须正好有八个字符,并且这些字符必须是从a到z的小写或大写字母,或者是从0到9的数字:

<xs:element name="password">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="[a-zA-Z0-9]{8}"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

对空白字符的限制

要指定如何处理空白字符,我们将使用空白约束。

本例定义了一个名为"address"的元素,其中包含一个限制。空白约束设置为"preserve",这意味着XML处理器不会删除任何空白字符:

<xs:element name="address">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:whiteSpace value="preserve"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

本例还定义了一个名为"address"的元素,其中包含一个限制。空白约束设置为"replace",这意味着XML处理器将用空格替换所有空白字符(换行符、制表符、空格和回车):

<xs:element name="address">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:whiteSpace value="replace"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

本例还定义了一个名为"address" 的元素,其中包含一个限制。空格约束设置为"collapse",这意味着XML处理器将删除所有空格字符(换行符、制表符、空格、回车替换为空格,删除前导空格和尾随空格,并将多个空格缩减为单个空格):

<xs:element name="address">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:whiteSpace value="collapse"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

长度限制

为了限制元素中值的长度,我们将使用length、maxLength和minLength约束。

本例定义了一个名为"password"的元素,其中有一个限制。值必须正好是八个字符:

<xs:element name="password">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:length value="8"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

本例定义了另一个名为"password"的元素,其中有一个限制。值必须至少为五个字符,最多为八个字符:

<xs:element name="password">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:minLength value="5"/>
      <xs:maxLength value="8"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

数据类型限制

约束 描述
enumeration 定义可接受值的列表
fractionDigits 指定允许的最大小数位数。必须等于或大于零
length 指定允许的字符或列表项的确切数目。必须等于或大于零
maxExclusive 指定数值的上限(该值必须小于此值)
maxInclusive 指定数值的上限(该值必须小于或等于此值)
maxLength 指定允许的最大字符数或列表项。必须等于或大于零
minExclusive 指定数值的下限(该值必须大于该值)
minInclusive 指定数值的下限(该值必须大于或等于此值)
minLength 指定允许的最小字符数或列表项数。必须等于或大于零
pattern 定义可接受的字符的精确序列
totalDigits 指定允许的确切位数。必须大于零
whiteSpace 指定如何处理空格(换行符、制表符、空格和回车符)