<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:element name="index">
    <xs:annotation>
      <xs:documentation>
        Root for Vienna XML publicaiton format
      </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="category"/>
      </xs:sequence>
      <xs:attribute name="size" use="required" type="xs:integer">
        <xs:annotation><xs:documentation>Technical information for the full text index, <b>irrelevant</b></xs:documentation></xs:annotation>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="category">
    <xs:complexType>
      <xs:annotation>
        <xs:documentation>
         A category of the Vienna classification
        </xs:documentation>
      </xs:annotation>
      <xs:sequence>
        <xs:choice minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>
              Optional note or notes<br/>
              <span style='background-color:#a0a0a0'>could be simplified either removing <tt>note</tt> (allowing multiple <tt>note</tt>) or only multiple <tt>note</tt> elemenets</span>
            </xs:documentation>
          </xs:annotation>
          <xs:element ref="note"/>
          <xs:element ref="notes"/>
        </xs:choice>
        <xs:element maxOccurs="unbounded" ref="division"/>
      </xs:sequence>
      <xs:attribute name="id" use="required" type="xs:integer">
        <xs:annotation>
          <xs:documentation>
            Identifier of the category
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="text" use="required">
        <xs:annotation><xs:documentation>text of the category<br/>
        <span style='background-color:#a0a0a0'>separate element would be more consistent</span></xs:documentation></xs:annotation>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="division">
    <xs:annotation>
      <xs:documentation>
        A division of a category
      </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:choice minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>
              Optional note or notes<br/>
              <span style='background-color:#a0a0a0'>could be simplified either removing <tt>note</tt> (allowing multiple <tt>note</tt>) or only multiple <tt>note</tt> elemenets</span>
            </xs:documentation>
          </xs:annotation>
          <xs:element ref="note"/>
          <xs:element ref="notes"/>
        </xs:choice>
        <xs:element minOccurs="0" maxOccurs="unbounded" name="section" type="principalSection">
          <xs:annotation>
            <xs:documentation>zero or more principal sections</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="auxiliaries"/>
      </xs:sequence>
      <xs:attribute name="id" use="required" type="xs:integer"/>
      <xs:attribute name="text" use="required">
        <xs:annotation><xs:documentation>text of the division<br/>
          <span style='background-color:#a0a0a0'>separate element would be consistent</span></xs:documentation></xs:annotation>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="section" mixed="true">
    <xs:annotation><xs:documentation>a section (principal or auxiliary) with its (optional) note(s)<br/>
      <span style='background-color:#a0a0a0'>separate element would be consistent</span></xs:documentation></xs:annotation>
    <xs:sequence>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:annotation><xs:documentation>text of the section, optionally containing references and images<br/>
          <span style='background-color:#a0a0a0'>separate text element would be more consistent</span></xs:documentation></xs:annotation>
        <xs:element ref="img"/>
        <xs:element ref="ref"/>
      </xs:choice>
      <xs:choice minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>
            Optional note or notes<br/>
            <span style='background-color:#a0a0a0'>could be simplified either removing <tt>note</tt> (allowing multiple <tt>note</tt>) or only multiple <tt>note</tt> elemenets</span>
          </xs:documentation>
        </xs:annotation>
        <xs:element ref="note"/>
        <xs:element ref="notes"/>
      </xs:choice>
    </xs:sequence>
    <xs:attribute name="id" use="required" type="xs:integer"/>
  </xs:complexType>
  <xs:complexType name="principalSection">
    <xs:complexContent mixed="true">
      <xs:extension base="section">
        <xs:attribute name="aux"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="auxiliaries">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="text" type="text"><xs:annotation><xs:documentation>text of the header header of auxiliaries</xs:documentation></xs:annotation></xs:element>
          <xs:choice minOccurs="1" maxOccurs="unbounded">
            <xs:element name="auxiliary" type="section" minOccurs="1" maxOccurs="unbounded"/>
            <xs:sequence minOccurs="1" maxOccurs="unbounded">
              <xs:annotation><xs:documentation>se</xs:documentation></xs:annotation>
                <xs:element name="head" type="text">
                  <xs:annotation><xs:documentation>header for a group of auxiliary sections<br/>
                    associated auxiliary sections are those until the next <tt>head</tt> or until the end of the <tt>auxiliaries</tt></xs:documentation></xs:annotation>
                </xs:element>
                <xs:element name="auxiliary" type="section"/>
              </xs:sequence>
          </xs:choice>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  
  <xs:complexType name="text" mixed="true">
      <xs:annotation><xs:documentation>text mixed with references</xs:documentation></xs:annotation>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="ref"/>
      </xs:sequence>
  </xs:complexType>

  

  <xs:element name="notes">
    <xs:annotation><xs:documentation>sequence of note elements (at least 2)</xs:documentation></xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="1" maxOccurs="unbounded" ref="note"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="note">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="ref"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ref" type="xs:NMTOKEN"/>
  <xs:element name="img">
    <xs:complexType>
      <xs:attribute name="src" use="required" type="xs:NCName"/>
    </xs:complexType>
  </xs:element>
</xs:schema>
