This section describes a tutorial example on how to include an existing schema document and reuse its datatype definitions.
In the previous section, we wrote the "addressType" definition in "address.xsd".
Now let's try to write a new schema that reuse this definition by using an "include" component.
The new schema, "address_us.xsd", will extend "addressType" to "addressUsType" by adding two more
child elements:
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:annotation>
<xsd:documentation>address_us.xsd
Copyright (c) 2007 by Dr. Herong Yang. All rights reserved.
</xsd:documentation>
</xsd:annotation>
<xsd:include schemaLocation="address.xsd">
<xsd:annotation>
<xsd:documentation>
Borrowing the "addressType" definition
</xsd:documentation>
</xsd:annotation>
</xsd:include>
<xsd:element name="addressUs" type="addressUsType"/>
<xsd:complexType name="addressUsType">
<xsd:complexContent>
<xsd:extension base="addressType">
<xsd:sequence>
<xsd:element name="state" type="xsd:string"/>
<xsd:element name="zip" type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:schema>
Notice that the "include" element is used to include the "address.xsd" into this new schema document.
To test this new schema, you can try this XML document, "address_us.xml":
<?xml version="1.0"?>
<addressUs>
<!-- address_us.xml
- Copyright (c) 2007 by Dr. Herong Yang. All rights reserved.
-->
<street>1 Main Street</street>
<city>New York</city>
<state>NY</state>
<zip>12345</zip>
</addressUs>