XML Schema 参考手册学习笔记

什么是 XML Schema?

XML Schema,也就是 XML模式,是用于描述 XML 文档结构和约束的语言。它可以定义 XML 元素、属性、数据类型和约束,是 XML 设计中非常重要的一部分。

如何定义 XML 元素和属性?

XML Schema 中使用 xs:element 元素来定义 XML 元素,如下所示:

xmlCopy Code
<xs:element name="book"> <xs:complexType> <xs:sequence> <xs:element name="title" type="xs:string"/> <xs:element name="author" type="xs:string"/> <xs:element name="price" type="xs:decimal"/> </xs:sequence> </xs:complexType> </xs:element>

上面的例子中定义了一个名为 "book" 的元素,它包含了 "title"、"author" 和 "price" 三个子元素,并且分别指定了它们的数据类型。

同样,可以使用 xs:attribute 元素来定义 XML 属性,例如:

xmlCopy Code
<xs:attribute name="type" type="xs:string"/>

上面的例子中定义了一个名为 "type" 的属性,它的数据类型是字符串。

如何定义数据类型和约束?

在 XML Schema 中,可以使用内置的数据类型,例如字符串、整数和布尔值。也可以自定义数据类型或者引用其他命名空间中的数据类型。

通过约束,可以对数据类型进行进一步限制。XML Schema 支持多种类型的约束,例如最小值、最大值、长度等等。

下面是一个例子,定义了一个字符串类型的元素,并添加了长度和正则表达式约束:

xmlCopy Code
<xs:element name="username"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:maxLength value="30"/> <xs:pattern value="[a-zA-Z][a-zA-Z0-9]*"/> </xs:restriction> </xs:simpleType> </xs:element>

上面的例子中定义了一个名为 "username" 的元素,它的数据类型为字符串,并且使用了 maxLength 约束表示字符串的最大长度为 30,使用 pattern 约束表示字符串只能包含字母和数字,且以字母开头。

实例

以下是一个完整的 XML Schema 示例,定义了一个 bookstore 元素,包含 book 元素和 publisher 元素:

xmlCopy Code
<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="price" type="xs:decimal"/> </xs:sequence> <xs:attribute name="category" type="xs:string"/> </xs:complexType> </xs:element> <xs:element name="publisher" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

上面的例子中定义了一个名为 "bookstore" 的元素,它包含了多个 "book" 元素和一个 "publisher" 元素。其中,"book" 元素有一个名为 "category" 的属性,表示书籍所属的类别。