XML Schema 实例学习笔记

什么是XML Schema?

XML Schema 是一种用于描述和验证 XML 文档结构和内容的规范语言。它可以用来定义元素、属性和数据类型,确保 XML 文档的结构和内容符合某种特定的规范。XML Schema 可以通过 XML Schema 定义语言(XSD)创建。

XML Schema 基本概念

元素

在 XML Schema 中,元素用于描述 XML 文档中的标记,如 <book><author>。每个元素都可以包含一个或多个子元素和/或文本数据。

属性

XML 属性用于为元素提供额外的信息。属性通常用于描述元素的特性和属性。例如,<book isbn="1234567890"> 中的 isbn 就是一个属性。

数据类型

XML Schema 定义了多个数据类型用于描述 XML 文档中的值。以下是一些常见的数据类型:

  • string:表示文本字符串
  • integer:表示整数
  • boolean:表示布尔值
  • date:表示日期
  • time:表示时间

命名空间

XML Schema 支持命名空间,用于解决 XML 文档中元素和属性名称的唯一性问题。命名空间可以使不同 XML 应用程序之间的 XML 文档互相独立,而不会出现命名冲突的情况。

XML Schema 实例

以下是一个简单的 XML 文档示例,它使用了 XML Schema:

xmlCopy Code
<?xml version="1.0" encoding="UTF-8"?> <bookstore xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="bookstore.xsd"> <book category="cooking"> <title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book> <book category="children"> <title lang="en">Harry Potter</title> <author>J.K. Rowling</author> <year>2005</year> <price>29.99</price> </book> </bookstore>

以上示例中,xmlns:xsi 定义了 xsi 命名空间。xsi:noNamespaceSchemaLocation 属性指定了 XML Schema 文件的位置。在该示例中,XML Schema 文件名为 bookstore.xsd

以下是 bookstore.xsd 的内容:

xmlCopy Code
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="bookstore"> <xs:complexType> <xs:sequence> <xs:element name="book" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="title" type="xs:string"/> <xs:element name="author" type="xs:string"/> <xs:element name="year" type="xs:integer"/> <xs:element name="price" type="xs:decimal"/> </xs:sequence> <xs:attribute name="category" type="xs:string"/> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

以上代码定义了 bookstore 元素和其子元素 book 的结构。maxOccurs="unbounded" 表示 book 元素可以出现多次。complexType 定义了 book 元素的属性和子元素的结构。type 属性定义了元素的数据类型。attribute 表示元素的属性。

该 XML 文档使用上述 XML Schema 定义了以下结构:

  • bookstore
    • book (category, title, author, year, price)
    • book (category, title, author, year, price)

该示例仅展示了一个简单的 XML Schema。XML Schema 还支持其他功能,如约束、注释、枚举等。