Using schemas can result in queries that are better optimized and tested. This chapter first provides a brief overview of XML Schema. It then explains how schemas are used with queries, by importing schema definitions and taking advantage of schema-defined types.
A schema is used to describe the structure and data content of XML documents. Example 13-1 shows a schema that might describe our catalog.xml
sample document. This schema can be used to validate the catalog document, assuring that:
Only approved elements and attributes are used
The elements appear in the correct order
All required elements are present
All elements and attributes have valid values
In addition, it can provide information to the query processor about the types of the values in the document—for example, that product numbers are integers.
Example 13-1. Schema for catalog.xml
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="catalog" type="CatalogType"/> <xs:complexType name="CatalogType"> <xs:sequence> <xs:element ref="product" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:element name="product" type="ProductType"/> <xs:complexType name="ProductType"> <xs:sequence> <xs:element name="number" type="xs:integer"/> <xs:element name="name" type="NameType"/> <xs:element name="colorChoices" type="ColorListType" minOccurs="0"/> <xs:element name="desc" minOccurs="0"/> </xs:sequence> <xs:attribute name="dept" type="xs:string"/> </xs:complexType> <xs:simpleType name="ColorListType"> <xs:list itemType="xs:string"/> </xs:simpleType> <xs:complexType name="NameType"> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="language" type="LangType"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:simpleType name="LangType"> <xs:restriction base="xs:string"> <xs:enumeration value="en"/> <xs:enumeration value="fr"/> </xs:restriction> </xs:simpleType> </xs:schema>
3.147.66.128