<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
<xs:element name="books">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="book" minOccurs="1" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>
</xs:element>
    
    <xs:element name="book">
 
        <xs:complexType>
          
            <xs:sequence>
                <xs:element ref="genre" />
                <xs:element ref="author" minOccurs="1" maxOccurs="unbounded" />
                <xs:element ref="title" />
                <xs:element ref="placeofpub" />
                <xs:element ref="publisher" />
                <xs:element ref="date" />
                <xs:element ref="chapters" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
            <xs:attribute name="id" type="xs:string" />
        </xs:complexType>
        
    </xs:element>
    
<xs:element name="genre" />
    <xs:attribute name="type" type="xs:string" default="nonfiction" />
<!-- or fixed=nonfiction -->    
    
    <xs:element name="author">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="last" />
                <xs:element ref="first" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    <xs:element name="last">
        <xs:simpleType>
            <xs:restriction base="xs:string"></xs:restriction>
        </xs:simpleType>
    </xs:element>
    
    <xs:element name="first">
        <xs:simpleType>
            <xs:restriction base="xs:string" />
        </xs:simpleType>
    </xs:element>
    
    <xs:element name="title">
        <xs:simpleType>
            <xs:restriction base="xs:string" />
        </xs:simpleType>
    </xs:element>
    
    <xs:element name="placeofpub"> <!-- originally, there were no child elements. This was simpleType, with restriction base=xs:normalizedString, and that was it -->
       <xs:complexType>
           <xs:sequence>
               <xs:element ref="city" />
               <xs:element ref="state" />
           </xs:sequence>
       </xs:complexType>
        </xs:element>
        
        <xs:element name="city">
        <xs:simpleType>
            <xs:restriction base="xs:normalizedString" />
        </xs:simpleType>
        </xs:element>
    
    <xs:element name="state">
        <xs:simpleType>
            <xs:restriction base="xs:Name" />
        </xs:simpleType>
    </xs:element>
    
    <xs:element name="publisher">
        <xs:simpleType>
            <xs:restriction base="xs:string" />
        </xs:simpleType>
    </xs:element>
    
    <xs:element name="date">
        <xs:complexType>
            <xs:attribute name="when" type="xs:gYear" />
        </xs:complexType>
    </xs:element>
    
    <xs:element name="chapters">
        <xs:complexType>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="chapter" />
    </xs:choice>
            </xs:complexType>
    </xs:element>
    
    <xs:element name="chapter">
        <xs:complexType>
            <xs:simpleContent>
                <xs:extension base="xs:string">
                    <xs:attribute name="number" type="xs:positiveInteger" />
                </xs:extension>
            </xs:simpleContent>
        </xs:complexType>
    </xs:element>
    
</xs:schema>

