Chapter 2. Creating an XML Schema

While XML has become the standard medium for exchanging data, it's the XML schema that defines the structure, content, and semantics of the XML documents. Before you create an XML document that conforms to an XML schema, create the XML schema with the procedure explained in this chapter. Why is it better to start off from an XML schema instead of directly creating the XML document without a schema? Consider a shipping company that sends XML documents containing details on a cargo shipment to a client. If the XML documents are not based on an XML schema, the shipping company might send XML documents containing different sets of elements and attributes. The client won't be able to interpret the XML documents if the XML documents contain different sets of elements and attributes. If the XML documents are based on an XML schema, the client would receive similar XML documents and be able to interpret them. An XML schema makes XML documents understandable to the different parties involved.

JDeveloper 11g provides various wizards for processing an XML schema. In the New Gallery a new schema file may be created. To construct a schema, select XML schema components from the schema Component Palette. A schema may be registered from the Tools menu. Subsequently, an XML document may be created from a registered schema.

In this chapter we shall create an XML schema in JDeveloper 11g. We shall register an XML document in JDeveloper and subsequently create an XML document instance from the XML schema. The example XML schema document that we shall create is catalog.xsd and is listed here:

<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="catalog" type="catalogType"/>
<xsd:complexType name="catalogType">
<xsd:sequence>
<xsd:element ref="journal" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="journal" type="journalType"/>
<xsd:complexType name="journalType">
<xsd:sequence>
<xsd:element ref="article" minOccurs="0"
maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="title" type="xsd:string"/>
<xsd:attribute name="publisher" type="xsd:string"/>
<xsd:attribute name="edition" type="xsd:string"/>
</xsd:complexType>
<xsd:element name="article" type="articleType"/>
<xsd:complexType name="articleType">
<xsd:sequence>
<xsd:element name="title" type="xsd:string"/>
<xsd:element name="author" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="section" type="xsd:string"/>
</xsd:complexType>
</xsd:schema>

The XML document instance that we shall generate from the schema is catalog.xml and is listed as follows:

<?xml version="1.0" encoding="utf-8"?>
<catalog>
<journal title="Oracle Magazine" publisher="Oracle
Publishing" edition="September-October 2008">
<article section="Features">
<title>Share 2.0</title>
<author>Alan Joch</author>
</article>
</journal>
<journal title="Oracle Magazine" publisher="Oracle
Publishing" edition="March-April 2008">
<article section="Oracle Developer">
<title>Declarative Data Filtering</title>
<author>Steve Muench</author>
</article>
</journal></catalog>