- XML 教程
- XML - 首页
- XML - 概述
- XML - 语法
- XML - 文档
- XML - 声明
- XML - 标签
- XML - 元素
- XML - 属性
- XML - 注释
- XML - 字符实体
- XML - CDATA 区段
- XML - 空格
- XML - 处理
- XML - 编码
- XML - 验证
- XML 有用资源
- XML - 快速指南
- XML - 有用资源
XML - 模式
XML 模式通常称为XML 模式定义 (XSD)。它用于描述和验证 XML 数据的结构和内容。XML 模式定义了元素、属性和数据类型。模式元素支持命名空间。它类似于数据库模式,描述数据库中的数据。
语法
您需要在 XML 文档中声明一个模式,如下所示:
示例
以下示例演示了如何使用模式:
<?xml version = "1.0" encoding = "UTF-8"?> <xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema"> <xs:element name = "contact"> <xs:complexType> <xs:sequence> <xs:element name = "name" type = "xs:string" /> <xs:element name = "company" type = "xs:string" /> <xs:element name = "phone" type = "xs:int" /> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
XML 模式背后的基本思想是,它们描述了 XML 文档可以采用的合法格式。
元素
正如我们在XML - 元素章节中看到的,元素是 XML 文档的构建块。可以在 XSD 中定义元素,如下所示:
<xs:element name = "x" type = "y"/>
定义类型
您可以通过以下方式定义 XML 模式元素:
简单类型
简单类型元素仅在文本上下文中使用。一些预定义的简单类型包括:xs:integer、xs:boolean、xs:string、xs:date。例如:
<xs:element name = "phone_number" type = "xs:int" />
复杂类型
复杂类型是其他元素定义的容器。这允许您指定元素可以包含哪些子元素,并在 XML 文档中提供一些结构。例如:
<xs:element name = "Address"> <xs:complexType> <xs:sequence> <xs:element name = "name" type = "xs:string" /> <xs:element name = "company" type = "xs:string" /> <xs:element name = "phone" type = "xs:int" /> </xs:sequence> </xs:complexType> </xs:element>
在上面的示例中,Address 元素包含子元素。它是其他<xs:element>定义的容器,允许在 XML 文档中构建简单的元素层次结构。
全局类型
使用全局类型,您可以在文档中定义单个类型,所有其他引用都可以使用该类型。例如,假设您想将person和company泛化到公司的不同地址。在这种情况下,您可以定义一个通用类型,如下所示:
<xs:element name = "AddressType"> <xs:complexType> <xs:sequence> <xs:element name = "name" type = "xs:string" /> <xs:element name = "company" type = "xs:string" /> </xs:sequence> </xs:complexType> </xs:element>
现在让我们在示例中使用此类型,如下所示:
<xs:element name = "Address1"> <xs:complexType> <xs:sequence> <xs:element name = "address" type = "AddressType" /> <xs:element name = "phone1" type = "xs:int" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name = "Address2"> <xs:complexType> <xs:sequence> <xs:element name = "address" type = "AddressType" /> <xs:element name = "phone2" type = "xs:int" /> </xs:sequence> </xs:complexType> </xs:element>
不必为Address1和Address2分别定义两次名称和公司,我们现在有一个定义。这使得维护更简单,即,如果您决定向地址添加“Postcode”元素,则只需在一个地方添加即可。
属性
XSD 中的属性在元素内提供额外信息。属性具有名称和类型属性,如下所示:
<xs:attribute name = "x" type = "y"/>
广告