XML - Managing Data Exchange/ Recursive relationships (Answers)

realy.xsd (XML schema for exercise 1) edit

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" 
    attributeFormDefault="unqualified">
    <xsd:element name="relay">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="runner" type="runnerType" 
                    maxOccurs="unbounded"/>
            </xsd:sequence>
        </xsd:complexType>
        </xsd:element>
    <xsd:complexType name="runnerType">
        <xsd:sequence>
            <xsd:element name="runnerID" type="xsd:ID"/>
            <xsd:element name="runnerName" type="xsd:string"/>
            <xsd:element name="previousRunner" type="xsd:IDREF" minOccurs="0" maxOccurs="1"/>
        </xsd:sequence>
    </xsd:complexType>
</xsd:schema>
 

relay.xml(XML document for exercise 1) edit

<?xml version="1.0" encoding="UTF-8"?>
<relay xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
  xsi:noNamespaceSchemaLocation='relay.xsd'>
<runner>
    <runnerID>c1</runnerID>
    <runnerName>Tom</runnerName>     
</runner>
<runner>
    <runnerID>c2</runnerID>
    <runnerName>Jim</runnerName> 
    <previousRunner>c1</previousRunner >      
</runner>
<runner>
    <runnerID>c3</runnerID>
    <runnerName>Scott</runnerName> 
    <previousRunner>c2</previousRunner >      
</runner>
<runner>
    <runnerID>c4</runnerID>
    <runnerName>George</runnerName> 
    <previousRunner>c3</previousRunner >      
</runner>
</relay> 


sales.xsd(XML schema for exercise 2) edit

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified">
    <xsd:element name="sales">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="salesPerson" type="salesType" maxOccurs="unbounded"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
    <xsd:complexType name="salesType">
        <xsd:sequence>
            <xsd:element name="sPersonID" type="xsd:ID"/>
            <xsd:element name="sPersonName" type="xsd:string"/>
	<xsd:element name="sPersonState" type="xsd:string"/>
	<xsd:element name="sPersonRegion" type="xsd:string"/>
            <xsd:element name="sPersonBoss" type="sPtype" minOccurs="0" maxOccurs="1"/>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="sPtype">
        <xsd:sequence>
            <xsd:element name="Boss" type="xsd:IDREF"/>
        </xsd:sequence>
    </xsd:complexType>
</xsd:schema>
 

sales.xml(XML document for exercise 2) edit

<?xml version="1.0" encoding="UTF-8"?>
<sales xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
  xsi:noNamespaceSchemaLocation='sales.xsd'>
<salesPerson>
    <sPersonID>c1</sPersonID>
    <sPersonName>Tommy Jones</sPersonName>
    <sPersonState>GA</sPersonState>
    <sPersonState>North</sPersonState>
    <sPersonBoss>
	<Boss>c3</Boss>
    </sPersonBoss>
</salesPerson>
<salesPerson>
    <sPersonID>c2</sPersonID>
    <sPersonName>Tim Jack</sPersonName>
    <sPersonState>GA</sPersonState>
    <sPersonState>North</sPersonState>
    <sPersonBoss>
	<Boss>c3</Boss>
    </sPersonBoss>
</salesPerson>
<salesPerson>
    <sPersonID>c3</sPersonID>
    <sPersonName>Fred Vick</sPersonName>
    <sPersonState>GA</sPersonState>
    <sPersonState>North</sPersonState>
</salesPerson>
<salesPerson>
    <sPersonID>c4</sPersonID>
    <sPersonName>Rob Looker</sPersonName>
    <sPersonState>SC</sPersonState>
    <sPersonState>East</sPersonState>
    <sPersonBoss>
	<Boss>c6</Boss>
    </sPersonBoss>
</salesPerson>
<salesPerson>
    <sPersonID>c5</sPersonID>
    <sPersonName>Scott Nook</sPersonName>
    <sPersonState>SC</sPersonState>
    <sPersonState>East</sPersonState>
    <sPersonBoss>
	<Boss>c6</Boss>
    </sPersonBoss>
</salesPerson>
<salesPerson>
    <sPersonID>c6</sPersonID>
    <sPersonName>Andrew Ingle</sPersonName>
    <sPersonState>SC</sPersonState>
    <sPersonState>East</sPersonState>
</salesPerson>
</sales>

food.xsd(XML schema for exercise 3) edit

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified">
    <xsd:element name="food">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="appetizer" type="aType" maxOccurs="unbounded"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
    <xsd:complexType name="aType">
        <xsd:sequence>
            <xsd:element name="aID" type="xsd:ID"/>
            <xsd:element name="aName" type="xsd:string"/>
            <xsd:element name="aPrice" type="xsd:decimal" minOccurs="0"/>
            <xsd:element name="includes" type="includedType" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="includedType">
        <xsd:sequence>
            <xsd:element name="included" type="xsd:IDREF"/>
        </xsd:sequence>
    </xsd:complexType>
</xsd:schema> 

food.xml(XML document for exercise 3) edit

<?xml version="1.0" encoding="UTF-8"?>
<food xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
  xsi:noNamespaceSchemaLocation= food.xsd'>
<appetizer>
    <aID>a1</acID>
    <aName>Chips and dip</acName>
    <aPrice>2.99</acPrice>
</appetizer>
<appetizer>
    <acID>a2</acID>
    <acName>Salad</acName>
    <acPrice>3.99</acPrice>
</appetizer>
<appetizer>
    <acID>a3</acID>
    <acName>Wings</acName>
    <acPrice>6.99</acPrice>
</appetizer>
<appetizer>
    <acID>a4</acID>
    <acName>Bread</acName>
    <acPrice>4.99</acPrice>
</appetizer>
<appetizer>
    <acID>a5</acID>
    <acName>Big Plate</acName>
    <acPrice>6.99</acPrice>
    <acTime>24</acTime>
    <includes>
    <included>a2</included>   
    </includes>
    <includes>
    <included>a4</included>    
    </includes>
</appetizer>
<appetizer>
    <acID>a6</acID>
    <acName>Party Plate</acName>
    <acPrice>10.99</acPrice>
    <includes>
    <included>a3</included>   
    </includes>
    <includes>
    <included>a1</included>    
    </includes>
</appetizer>
</food>