Workshops --> XML --> Demo --> schema2.html
SLIS@IU logo

L595 XML@IU logo

Creating Schemas

Here's an example of a DTD that we used earlier displayed as an external DTD

<!ELEMENT memo (header, memotext)>
<!ELEMENT header (to, cc, bcc*, from)>
<!ELEMENT to (name)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT cc (name)>
<!ELEMENT bcc (name)>
<!ELEMENT from (sender)>
<!ELEMENT sender (#PCDATA)>
<!ELEMENT memotext (#PCDATA)>

We are using the following components: ELEMENT, #PCDATA, and operators

They represent the structure and content of the memorandum (as a genre of document) including:

memo
header
memotext
to
cc
bcc
from sender name memotext text string (or #PCDATA)

Schema language provides a range of components to represent the same structure and content including:

simple type elements complex type elements integers text strings
sequences groups boolean operators orders of appearance

Here's what it might look like

<?xml version="1.0" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://somewhere.org"
xmlns="http://somewhere.org"
elementFormDefault="qualified">

<xsd:element name="name" type="xsd:string"/>
<xsd:element name="sender" type="xsd:string"/>
<xsd:element name="memotext" type="xsd:string"/>

<xsd:element name="memo">
    <xsd:complexType>
        <xsd:sequence>
            <xsd:element ref="header" minOccurs="1" maxOccurs="1"/>
            <xsd:element ref="memotext" minOccurs="1" maxOccurs="1"/>
        </xsd:sequence>
    </xsd:complexType>
</xsd:element>

<xsd:element name="header">
        <xsd:complexType>
            <xsd:choice>
                <xsd:element ref="to" minOccurs="1" maxOccurs="1"/>
                <xsd:element ref="cc" minOccurs="1" maxOccurs="1"/>
                <xsd:element ref="bcc" minOccurs="0" maxOccurs="unbounded"/>
                <xsd:element ref="from" minOccurs="1" maxOccurs="1"/>
            </xsd:choice>
        </xsd:complexType>
</xsd:element>

<xsd:element name="to">
        <xsd:complexType>
                <xsd:element ref="name" minOccurs="1" maxOccurs="1"/>
        </xsd:complexType>
</xsd:element>

<xsd:element name="cc">
        <xsd:complexType>
                <xsd:element ref="name" minOccurs="1" maxOccurs="1"/>
        </xsd:complexType>
</xsd:element>

<xsd:element name="bcc">
        <xsd:complexType>
                <xsd:element ref="name" minOccurs="1" maxOccurs="1"/>
        </xsd:complexType>
</xsd:element>

<xsd:element name="from">
        <xsd:complexType>
                <xsd:element ref="sender" minOccurs="1" maxOccurs="1"/>
        </xsd:complexType>
</xsd:element>

</xsd:schema>

What components of schema language are being used here?

Home
schema schema 2 schema 3 schema 4 schema 5 schema 6 schema 7 schema 8 schema 9
Next

schema 10 schema 11 schema 12 schema 13 schema 14 schema 15 schema 16 schema 17

Page by Howard Rosenbaum
Find me at hrosenba@indiana.edu You are here: http://www.slis.indiana.edu/hrosenba/www/Workshops/XML/Demo/schema2.html