<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://springer-sbm.com/export/1.0/"
           targetNamespace="http://springer-sbm.com/export/1.0/"
           elementFormDefault="qualified">

    <!-- define the root element containing export types -->
    <xs:element name="documents">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="document" type="document" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="document">
        <xs:choice>
            <xs:element name="scientificArticle" type="scientificArticle"/>
            <xs:element name="article" type="article"/>
            <xs:element name="advancedTeaser" type="advancedTeaser"/>
            <xs:element name="teaser" type="teaser"/>
        </xs:choice>
    </xs:complexType>

    <!-- define the export types -->
    <xs:complexType name="article">
        <xs:sequence>
            <xs:element type="xs:int" name="documentId" minOccurs="0"/>
            <xs:element type="xs:string" name="title" minOccurs="0"/>
            <xs:element type="teaserMixed" name="teaser" minOccurs="0"/>
            <xs:element type="xs:string" name="language" minOccurs="0"/>
            <xs:element type="xs:string" name="canonicalUrl" minOccurs="0"/>
            <xs:element type="tags" name="tags" minOccurs="0"/>
            <xs:element type="xs:string" name="publicationDate" minOccurs="0"/>
            <xs:element type="xs:string" name="body" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="scientificArticle">
        <xs:sequence>
            <xs:element type="xs:int" name="documentId" minOccurs="0"/>
            <xs:element type="xs:string" name="supertitle" minOccurs="0"/>
            <xs:element type="xs:string" name="title" minOccurs="0"/>
            <xs:element type="xs:string" name="subtitle" minOccurs="0"/>
            <xs:element type="teaserMixed" name="teaser" minOccurs="0"/>
            <xs:element type="xs:string" name="language" minOccurs="0"/>
            <xs:element type="xs:string" name="source" minOccurs="0"/>
            <xs:element type="xs:string" name="references" minOccurs="0"/>
            <xs:element type="xs:string" name="copyright" minOccurs="0"/>
            <xs:element type="xs:string" name="canonicalUrl" minOccurs="0"/>
            <xs:element type="tags" name="tags" minOccurs="0"/>
            <xs:element type="xs:string" name="publicationDate" minOccurs="0"/>
            <xs:element type="xs:string" name="body" minOccurs="0"/>
            <xs:element type="authors" name="authors" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="teaser">
        <xs:sequence>
            <xs:element type="xs:int" name="documentId" minOccurs="0"/>
            <xs:element type="teaserMixed" name="teaser" minOccurs="0"/>
            <xs:element type="xs:string" name="language" minOccurs="0"/>
            <xs:element type="xs:string" name="canonicalUrl" minOccurs="0"/>
            <xs:element type="xs:string" name="publicationDate" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="advancedTeaser">
        <xs:sequence>
            <xs:element type="xs:int" name="documentId" minOccurs="0"/>
            <xs:element type="xs:string" name="title" minOccurs="0"/>
            <xs:element type="teaserMixed" name="teaser" minOccurs="0"/>
            <xs:element type="xs:string" name="language" minOccurs="0"/>
            <xs:element type="xs:string" name="source" minOccurs="0"/>
            <xs:element type="xs:string" name="canonicalUrl" minOccurs="0"/>
            <xs:element type="tags" name="tags" minOccurs="0"/>
            <xs:element type="xs:string" name="publicationDate" minOccurs="0"/>
            <xs:element type="authors" name="authors" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>

    <!-- Define re-usable types-->
    <xs:complexType name="teaserMixed">
        <xs:sequence>
            <xs:element type="xs:string" name="teaserSupertitle" minOccurs="0"/>
            <xs:element type="xs:string" name="teaserTitle" minOccurs="0"/>
            <xs:element type="xs:string" name="teaserSubtitle" minOccurs="0"/>
            <xs:element type="xs:string" name="teaserText" minOccurs="0"/>
            <xs:element type="xs:string" name="teaserTarget" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="tags">
        <xs:all>
            <xs:element name="subjectTags" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element type="xs:string" name="subjectTag" maxOccurs="unbounded" minOccurs="0"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="locationTags" minOccurs="0">
                <xs:complexType>
                    <xs:choice maxOccurs="unbounded" minOccurs="0">
                        <xs:element type="xs:string" name="locationTag"/>
                    </xs:choice>
                </xs:complexType>
            </xs:element>
        </xs:all>
    </xs:complexType>

    <xs:complexType name="authors">
        <xs:sequence>
            <xs:element name="author" maxOccurs="unbounded" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element type="xs:string" name="name"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>

</xs:schema>
