<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
     xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="de">
<xs:annotation>
	<xs:documentation xml:lang="de">Dieses XML-Schema definiert die Elemente, die bei einem gemäß PAS 1068 des DIN
		in XML beschriebenen Bildungsangebot vorkommen (dürfen).
	</xs:documentation>
	<xs:documentation xml:lang="en">This XML Schema defines the elements which can be used to describe an educational offering accordung to the PAS 1068 from the German DIN. The language used in this documents is German only.</xs:documentation>
</xs:annotation>

<!-- Definition der Element-Typen, die innerhalb der PAS "Transparenz" vorkommen koennen-->

<xs:element name="Bildungsangebot">
	<xs:annotation><xs:documentation xml:lang="de">Bildungsangebot ist das Rootelement eines nach PAS Transparenz beschriebenen Bildungsangebotes. Es enthaelt selbst keinen Inhalt, sondern dient nur als Container fuer die acht Hauptkategorien.
	</xs:documentation>
	</xs:annotation>
  <xs:complexType>
    <xs:sequence>
         <xs:element maxOccurs="8" ref="Kategorie"/>
      </xs:sequence>
    </xs:complexType>   	
</xs:element>

<xs:element name="Kategorie">
	<xs:annotation>
		<xs:documentation xml:lang="de">Die PAS Transparenz besteht aus 8 (Haupt-)Kategorien, die unterschiedlich viele Elemente und auch weitere Kategorien enthalten.</xs:documentation>
	</xs:annotation>	
    <xs:complexType>
    	<xs:annotation>
			<xs:documentation xml:lang="de">Dabei muss jede Kategorie die Elemente ID und Bezeichnung enthalten, weitere Kategorien und Elemente sind optional.</xs:documentation>
		</xs:annotation>
     	<xs:sequence>
     		<xs:sequence>
     			<xs:element name="ID" minOccurs="1" maxOccurs="1" type="xs:string"/>
        		<xs:element name="Bezeichnung" minOccurs="1" maxOccurs="1" type="xs:string"/>
			</xs:sequence>
      		<xs:choice minOccurs="0" maxOccurs="unbounded">
        		<xs:element ref="Kategorie" minOccurs="0" maxOccurs="unbounded"/>
       	 		<xs:element ref="PAS_Element" minOccurs="0" maxOccurs="unbounded"/>
			</xs:choice>
      	</xs:sequence>
    </xs:complexType>
  </xs:element>

<xs:element name="PAS_Element">
	<xs:annotation>
		<xs:documentation xml:lang="de">Die Elemente der PAS Transparenz haben eine fest definierte Struktur.</xs:documentation>
	</xs:annotation>
	<xs:complexType>
		<xs:sequence minOccurs="1" maxOccurs="1">
			<xs:element ref="ID" minOccurs="1" maxOccurs="1"/>
        	<xs:element name="Bezeichnung" minOccurs="1" maxOccurs="1" type="xs:string"/>
        	<xs:element ref="Klasse" minOccurs="1" maxOccurs="1"/>
        	<xs:element ref="Darstellung" minOccurs="1" maxOccurs="1"/>
        	<xs:element ref="Kommentar" minOccurs="0" maxOccurs="1"/>
        	<xs:element ref="match" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
</xs:element>

<xs:element name="ID">
	<xs:annotation>
		<xs:documentation xml:lang="de">IDs der PAS Transparenz beginnen mit den Zahlen 1-8 fuer die acht Hauptkategorien evtl.gefolgt von einem Punkt, einer weiteren Zahl usw. fuer jede Unterkategorie bzw. jedes Element.   </xs:documentation>
	</xs:annotation>
	<xs:simpleType>
		<xs:restriction base="xs:string">
			<!-- der regulaere Ausdruck ist noch nicht ganz korrekt, da hierbei zwischen den Punkten beliebig viele Ziffern vorkommen koennen...-->
			<xs:pattern value="[1-8]{1}\.?[0-9]{0,2}\.?[0-9]{0,2}\.?[0-9]{0,2}"/>
		</xs:restriction>
	</xs:simpleType>
</xs:element>
 
<xs:element name="Klasse">
	<xs:annotation>
		<xs:documentation xml:lang="de">Ein Element ist entweder zwingend vorgeschrieben (M für muss), bedingt vorgeschrieben (also wenn zutreffend, dann muss es angegeben werden (B)) oder optional (F für fakultativ)).</xs:documentation>
	</xs:annotation>
	<xs:simpleType>
		<xs:restriction base="xs:string">
			<xs:pattern value="[MBF]"/>
		</xs:restriction>
	</xs:simpleType>
</xs:element>

<xs:element name="Darstellung">
	<xs:annotation>
		<xs:documentation xml:lang="de">Fuer jedes PAS_Element gibt es einen Typ, der festlegt, welche Arten von Werten dieses Element haben kann, sowie den eigentlichen Wert.</xs:documentation>
	</xs:annotation>
	<xs:complexType>
		<xs:sequence minOccurs="1" maxOccurs="1">
			<xs:element ref="AngabeTyp" minOccurs="1" maxOccurs="1"/>
			<xs:element name="Wert" minOccurs="0" maxOccurs="1" type="xs:string"/>
		</xs:sequence>
	</xs:complexType>	
</xs:element>

<xs:element name="AngabeTyp">
	<xs:annotation>
		<xs:documentation xml:lang="de">Ein Element ist entweder ein Ja/Nein-Feld oder ein Textfeld. Ein Textfeld kann dabei entweder vom Typ Beschreibung (ausfuehrlicher Text) oder vom Typ Benennung (nur Angabe) sein.</xs:documentation>
	</xs:annotation>	
	<xs:simpleType>
		<xs:restriction base="xs:string">
			<xs:enumeration value="J/N"/>
			<xs:enumeration value="Beschreibung"/>
			<xs:enumeration value="Benennung"/>
		</xs:restriction>
	</xs:simpleType>
</xs:element>

<xs:element name="Kommentar">
	<xs:annotation>
		<xs:documentation xml:lang="de">Dieses Element enthaelt alle Hinweise zum Ausfuellen des Elements bzw. zum Bestimmen des Wertes. "Ausfuellhinweis" enthält Erläuterungen und illustrierende Beispiele zu diesem Element, wenn ein Wertebereich vorgegeben ist, werden die zulässigen Werte in "Wertebereich" aufgeführt und "Beispiele" enthält mögliche Ausprägungen für dieses Element.</xs:documentation>
	</xs:annotation>	
	<xs:complexType>
		<xs:sequence>
			<xs:element name="Ausfuellhinweis" minOccurs="0" maxOccurs="1" type="xs:string"/>
			<xs:element name="Wertebereich" minOccurs="0" maxOccurs="1" type="xs:string"/>
			<xs:element name="Beispiele" minOccurs="0" maxOccurs="1" type="xs:string"/>
		</xs:sequence>
	</xs:complexType>
</xs:element>

<xs:element name="match">
	<xs:annotation>
		<xs:documentation xml:lang="de">Falls dieses Element Entsprechungen in anderen Klassifikationsschemen hat, werden diese mit diesem Element definiert. Für jedes Metadatenschema, in dem es eine Entsprechung gibt, wird jeweils ein "Match"-Element erzeugt. Gibt es in einem Metadatenschema mehr als ein Element, das einem PAS-Element entspricht, so wird innerhalb eines "Match"-Elements für jede Entsprechung ein "Element"-Element erzeugt.</xs:documentation>
	</xs:annotation>
	<xs:complexType>
		<xs:sequence>
			<xs:element name="Schema" minOccurs="1" maxOccurs="unbounded" type="xs:string"/>
			<xs:element name="Element" minOccurs="1" maxOccurs="unbounded">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Elem_ID" minOccurs="0" maxOccurs="1" type="xs:string"/>
						<xs:element name="Bezeichnung" minOccurs="0" maxOccurs="1" type="xs:string"/>
					</xs:sequence>
				</xs:complexType>	
			</xs:element>
		</xs:sequence>
	</xs:complexType>
</xs:element>

</xs:schema>
