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 还支持其他功能,如约束、注释、枚举等。