Declaring Complex Types

<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema">
 
  <xsd:element name="SONG" type="SongType"/>

  <xsd:complexType name="ComposerType">
    <xsd:element name="NAME">
      <xsd:complexType>
         <xsd:element name="GIVEN"  type="xsd:string" 
           minOccurs="1" maxOccurs="1"/>
         <xsd:element name="FAMILY" type="xsd:string" 
           minOccurs="1" maxOccurs="1"/>      
      </xsd:complexType>
    </xsd:element>
  </xsd:complexType>

  <xsd:complexType name="ProducerType">
    <xsd:element name="NAME">
      <xsd:complexType>
        <xsd:element name="GIVEN"  type="xsd:string" 
          minOccurs="1" maxOccurs="1"/>
        <xsd:element name="FAMILY" type="xsd:string" 
          minOccurs="1" maxOccurs="1"/>      
      </xsd:complexType>
    </xsd:element>
  </xsd:complexType>

  <xsd:complexType name="PhotoType">
    <xsd:complexContent>
       <xsd:restriction base="xsd:anyType">
         <xsd:attribute name="ALT"    type="xsd:string"/>
         <xsd:attribute name="WIDTH"  type="xsd:nonNegativeInteger"/>
         <xsd:attribute name="HEIGHT" type="xsd:nonNegativeInteger"/> 
      </xsd:restriction>
    </xsd:complexContent>
  </xsd:complexType>
  
  <xsd:complexType name="SongType">
  
    <xsd:element name="TITLE"     type="xsd:string" minOccurs="1" maxOccurs="1"/>
    <xsd:element name="PHOTO"     type="PhotoType"  minOccurs="0" maxOccurs="1"/>
    <xsd:element name="COMPOSER"  type="ComposerType" minOccurs="1" maxOccurs="unbounded"/>
    <xsd:element name="PRODUCER"  type="ProducerType" minOccurs="0" maxOccurs="unbounded"/>
    <xsd:element name="PUBLISHER" type="xsd:string" minOccurs="0" maxOccurs="1"/>
  
    <xsd:element name="YEAR"   type="xsd:year" minOccurs="1" maxOccurs="1"/>

    <xsd:element name="ARTIST" type="xsd:string" minOccurs="1" maxOccurs="unbounded"/>
    
  </xsd:complexType>

</xsd:schema>

Previous | Next | Top | Cafe con Leche

Copyright 2000 Elliotte Rusty Harold
elharo@metalab.unc.edu
Last Modified September 30, 2000