﻿<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

  <xsd:annotation>
    <xsd:documentation xml:lang="hu">
     EPAX Schema
     Megprobalom az xhtml-t es az epax-ot integralni. 
    </xsd:documentation>
  </xsd:annotation>

  <xsd:element name="Pack">
     <xsd:complexType>
        <xsd:sequence>
         <xsd:element name="TOC" minOccurs='1' maxOccurs='unbounded'>
             <xsd:complexType>
                  <xsd:sequence>
                    <xsd:element name="Head">
                      <xsd:complexType>
                         <xsd:sequence>
                        <xsd:element name="dc_title" type="xsd:string"/>
                        <xsd:element name="Issue">
                            <xsd:complexType>
                                <xsd:simpleContent>
                                   <xsd:extension base="xsd:string">
                                      <xsd:attribute name="year" type="YearNumber"/>
                                      <xsd:attribute name="number" type="xsd:string"/>
                                      <xsd:attribute name="type" default="html">
                                         <xsd:simpleType>
                                           <xsd:restriction base="xsd:string">
                                              <xsd:enumeration value="html"/>
                                              <xsd:enumeration value="pdf"/>
                                              <xsd:enumeration value="jpg"/>
                                              <xsd:enumeration value="gif"/>
                                            </xsd:restriction>
                                         </xsd:simpleType>
                                      </xsd:attribute>
                                   </xsd:extension>
                                </xsd:simpleContent>
                            </xsd:complexType>
                        </xsd:element>
                        <xsd:element name="host" type="xsd:token" fixed="epa.oszk.hu" />
                        <xsd:element name="dc_identifier">
                           <xsd:simpleType>
                            <xsd:restriction base="xsd:integer">
                               <xsd:pattern value="\d{5}"/>
                            </xsd:restriction>
			   </xsd:simpleType>
                        </xsd:element>
                        <xsd:element name="ev_szam_Path">
                           <xsd:simpleType>
                            <xsd:restriction base="xsd:token">
                               <xsd:pattern value="\d{5}(/[^\s/]+)?"/>
                            </xsd:restriction>
			   </xsd:simpleType>
                        </xsd:element>
                        </xsd:sequence>
                      </xsd:complexType>
                    </xsd:element> <!-- **********  Head vege ************ -->
                    <xsd:group ref="contGroup" /> 
                    <xsd:element name="Notes" minOccurs="0" >
                        <xsd:complexType>
                          <xsd:sequence>
                            <xsd:element name="themeTitle" minOccurs="0" >
                              <xsd:complexType mixed="true">
                                <xsd:choice minOccurs="0" maxOccurs="unbounded">
                                  <xsd:group ref="inline1"/>
                                </xsd:choice>
                              </xsd:complexType>
                            </xsd:element>
                            <xsd:element name="Note" type="pType" minOccurs="0" maxOccurs="unbounded" />
                          </xsd:sequence>
                        </xsd:complexType>
                     </xsd:element>
                  </xsd:sequence>
             </xsd:complexType>
           </xsd:element>  <!-- ******************  TOC vege ***************  -->
        </xsd:sequence>
     </xsd:complexType>
</xsd:element> <!-- *********************  Pack vege ***************** -->

<xsd:complexType name="pType">
  <xsd:sequence>
    <xsd:element name="p" maxOccurs='unbounded' type="mischung" />
  </xsd:sequence>
  <xsd:attribute name="lang" default="hu" />
</xsd:complexType>

<xsd:simpleType name="yes-no">
  <xsd:restriction base="xsd:string">
    <xsd:enumeration value="yes"/>
    <xsd:enumeration value="no"/>
  </xsd:restriction>
</xsd:simpleType>

<xsd:simpleType name="IssNumber">
  <xsd:restriction base="xsd:string">
    <xsd:pattern value="(-?\d+)|(\d+-\d+)"/>
  </xsd:restriction>
</xsd:simpleType>

<xsd:simpleType name="YearNumber">
  <xsd:restriction base="xsd:string">
    <xsd:pattern value="(\d{4})|(\d{4}-\d{4})"/>
  </xsd:restriction>
</xsd:simpleType>

<xsd:group name="contGroup">
  <xsd:choice>
    <xsd:element name="NoContents" type="noContentsType"/>
    <xsd:element name="Contents" type="contentsType" />
  </xsd:choice>
</xsd:group>

  <xsd:complexType name="noContentsType">
     <xsd:sequence>
       <xsd:element name="Link" type="linkType" minOccurs='0' maxOccurs='unbounded'/>
       <xsd:element name="Description" type="pType" minOccurs="0"/>
     </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="contentsType">
    <xsd:choice maxOccurs="unbounded">
      <xsd:element name="Section" type="sectionType" />
      <xsd:element name="Article" type="articleType" />
    </xsd:choice>
  </xsd:complexType>

  <xsd:complexType name="sectionType">
   <xsd:sequence>
    <xsd:element name="SectionTitle" type="xsd:string" minOccurs="0" />
    <xsd:element name="Article" type="articleType" maxOccurs="unbounded" />
    </xsd:sequence>
    <xsd:attribute name="type" type="SecType" />
  </xsd:complexType>

<xsd:simpleType name="SecType">
  <xsd:restriction base="xsd:string">
    <xsd:enumeration value="supplement"/>
    <xsd:enumeration value="insert"/>
  </xsd:restriction>
</xsd:simpleType>


  <xsd:complexType name="articleType">
   <xsd:sequence>
    <xsd:element name="Language" type="xsd:token" maxOccurs="unbounded"/>
    <xsd:element name="Link" type="linkType" minOccurs="0" maxOccurs="unbounded"/>
    <xsd:element name="Author" minOccurs="0" maxOccurs="unbounded" >
      <xsd:complexType mixed="true">
       <xsd:sequence>
        <xsd:element name="FamilyName" type="xsd:string" minOccurs="0" />
        <xsd:element name="GivenName" type="xsd:string" minOccurs="0" />
       </xsd:sequence>
       <xsd:attribute name="invert" default="no" type="yes-no" />
       <xsd:attribute name="extracted" default="no" type="yes-no" />
      </xsd:complexType>
    </xsd:element>
    <xsd:element name="Title" maxOccurs="unbounded">
      <xsd:complexType mixed="true">
        <xsd:choice minOccurs="0" maxOccurs="unbounded">
         <xsd:group ref="inline1"/>
        </xsd:choice>
        <xsd:attribute name="lang" default="hu" type="xsd:string" />
      </xsd:complexType>
    </xsd:element>
    <xsd:element name="Range" minOccurs="0" type="xsd:string" />
    <xsd:element name="Description" type="pType" minOccurs="0" maxOccurs="unbounded" />
    <xsd:element name="Note" type="pType" minOccurs="0" maxOccurs="unbounded" />
   </xsd:sequence>
  </xsd:complexType>



  <xsd:complexType name="mischung" mixed="true">
    <xsd:choice minOccurs="0" maxOccurs="unbounded">
       <xsd:group ref="inline0" />
    </xsd:choice>
  </xsd:complexType>



<xsd:group name="inline0">
  <xsd:choice>
       <xsd:element name="ol" type="list" />
       <xsd:element name="ul" type="list" />

       <xsd:element name="a">
        <xsd:complexType mixed="true">
         <xsd:sequence>
           <xsd:element name="img" type="imgType" minOccurs="0" maxOccurs="unbounded" />
         </xsd:sequence>
         <xsd:attribute name="href" type="xsd:anyURI" use="required"/>
        </xsd:complexType>
       </xsd:element>

       <xsd:element name="img" type="imgType" />
       <xsd:group ref="inline1"/>
  </xsd:choice>
</xsd:group>

<xsd:group name="inline1">
  <xsd:choice>
    <xsd:element name="strong" type="xsd:string"/>
    <xsd:element name="em" type="xsd:string"/>
    <xsd:element name="br">
      <xsd:complexType>
        <xsd:sequence />
      </xsd:complexType>
    </xsd:element>
  </xsd:choice>
</xsd:group>

<xsd:complexType name="list">
 <xsd:sequence>
  <xsd:element name="li" maxOccurs="unbounded">
   <xsd:complexType> 
    <xsd:sequence>
     <xsd:element name="p" maxOccurs='unbounded' type="mischung" />
    </xsd:sequence>
   </xsd:complexType>
  </xsd:element>
 </xsd:sequence>
</xsd:complexType>


  <xsd:complexType name="imgType">
    <xsd:complexContent>
      <xsd:restriction base="xsd:anyType">
        <xsd:attribute name="src"    type="xsd:anyURI" />
        <xsd:attribute name="height" type="xsd:token" />
        <xsd:attribute name="width"  type="xsd:token" />
      </xsd:restriction>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="linkType">
    <xsd:simpleContent>
      <xsd:extension base="xsd:token">
        <xsd:attribute name="size" type="xsd:token"/>
        <xsd:attribute name="text" type="xsd:token"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>


</xsd:schema>
