<?xml version="1.0" encoding="UTF-8"?>
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
 	<!--  -->
 	<!-- Schema für Vorlagenbeschreibungen in VM (vgl. http://de.wikipedia.org/wiki/Benutzer:Revvar/VM) -->
 	<!--  -->
 	<!--  -->
 	<!-- 2007-03-21: v0.15: fix: Condition ist optional, Reihenfolge der Kinder in Parameter beliebig -->
 	<!-- 2007-03-20: v0.14: ergänzt: Attribute "height" für <Parameter/>,"label" für <Value/>, sowie Default als Kindknoten von
                                Parameter Attribute length darf jetzt auch "max" annehmen, Parameter#name Type von NMTOKEN->string -->
 	<!-- 2007-03-18: v0.13: Attribut "label" bei <Parameter/> hinzugefügt -->
 	<!-- 2007-03-04: v0.12: Attribut "showempty" bei <Group/> hinzugefügt -->
 	<!-- 2007-02-08: v0.11: Attribut "condition" bei <Parameter/> gelöscht, Doku für Attribut "predefined" ergänzt -->
 	<!-- 2007-02-07: v0.10: erste Version -->
 	<!--  -->
 	<xs:element name="TemplateUsage">
 		<xs:annotation>
 			<xs:documentation>Wurzelknoten, welcher die Beschreibung enthält.</xs:documentation>
 		</xs:annotation>
 		<xs:complexType>
 			<xs:choice>
 				<xs:element ref="Group" minOccurs="1" maxOccurs="unbounded"/>
 			</xs:choice>
 			<xs:attribute name="output" use="optional" default="collapse">
 				<xs:annotation>
 					<xs:documentation>(optional) - Beschreibt die Art des erzeugten Vorlagen-Quelltextes.
						Vorgabe: "collapse" - Es werden nur Parameter genutzt, denen ein Wert zugewiesen wurde.
                                                Leere Parameter fallen weg. Der Quelltext enthält keine Zeilenumbrüche. Diese Ausgabe
                                                eignet sich bei Vorlagen mit wenigen Parametern und intuitiven Namen (zum Beispiel:
                                                http://de.wikipedia.org/wiki/Vorlage:Literatur). Alternativ: "expand" - Der Vorlagenquelltext
                                                enthält alle, auch leere, Parameter. Zusätzlich wird bei benannten Gruppen, der
                                                Gruppenname als HTML-Kommentar eingefügt, sowie die Gruppen durch eine zusätzliche
                                                Leerzeile optisch getrennt. Jeder Parameter steht auf einer separaten Zeile. Diese
                                                Ausgabeart eignet sich für Vorlagen mit einer Vielzahl von Parametern, und erleichtert
                                                Nutzern ohne Toolunterstützung, die Arbeit mit der Vorlage (zum Beispiel: 
                                                http://de.wikipedia.org/wiki/Vorlage:Infobox Schienenfahrzeug).
 					</xs:documentation>
 				</xs:annotation>
 				<xs:simpleType>
 					<xs:restriction base="xs:string">
 						<xs:enumeration value="collapse"/>
 						<xs:enumeration value="expand"/>
 					</xs:restriction>
 				</xs:simpleType>
 			</xs:attribute>
 			<xs:attribute name="max_value_indentation" type="xs:nonNegativeInteger" use="optional" default="32">
 				<xs:annotation>
 					<xs:documentation>(optional) - Legt fest bis zu maximal wie viele Zeichen die Werte der
                                                          Vorlagenparameter nach rechts gerückt werden dürfen, um diese einheitlich
                                                          auszurichten. Ein Wert von 0 daktiviert diese Funktion.
 					</xs:documentation>
 				</xs:annotation>
 			</xs:attribute>
 		</xs:complexType>
 	</xs:element>
 	<!--  -->
 	<xs:element name="Group">
 		<xs:annotation>
 			<xs:documentation>Gruppiert eine Menge von Parametern. Im Formular werden diese in einem separaten Bereich
                                          dargestellt. Ist eine Gruppierung nicht zweckmäßig, so sind alle Parameter in einer
                                          einzigen Gruppe zu beschreiben.</xs:documentation>
 		</xs:annotation>
 		<xs:complexType>
 			<xs:choice>
 				<xs:element ref="Parameter" maxOccurs="unbounded"/>
 			</xs:choice>
 			<xs:attribute name="name" use="optional" type="xs:string">
 				<xs:annotation>
 					<xs:documentation>(optional) - Beschreibt den Inhalt der Gruppe. Ist dieses Attribut angegeben,
                                                          so wird es als Gruppenüberschrift angezeigt.</xs:documentation>
 				</xs:annotation>
 			</xs:attribute>
 			<xs:attribute name="showempty" use="optional" default="true">
 				<xs:annotation>
 					<xs:documentation>(optional) - Legt fest ob im Ausgabemodus „expand“ die Gruppe angezeigt werden
                                                          soll, wenn kein Parameter dieser Gruppe ein Wert zugewiesen wurde.
                                                          Vorgabe: "true" - Alle Parameter der Gruppe werden ausgegeben, auch wenn keinem
                                                                            ein Wert zugewiesen wurde.
                                                          Alternativ: "false" - Alle Parameter dieser Gruppe werden nur ausgegeben, wenn
                                                                                wenigstens einem Parameter ein Wert zugewiesen wurde.</xs:documentation>
 				</xs:annotation>
 				<xs:simpleType>
 					<xs:restriction base="xs:string">
 						<xs:enumeration value="true"/>
 						<xs:enumeration value="false"/>
 					</xs:restriction>
 				</xs:simpleType>
 			</xs:attribute>
 		</xs:complexType>
 	</xs:element>
 	<!--  -->
 	<xs:element name="Parameter">
 		<xs:annotation>
 			<xs:documentation>Beschreibt einen benannten Parameter der Vorlage. Nur als Kindknoten von "Group" erlaubt.</xs:documentation>
 		</xs:annotation>
 		<xs:complexType>
 			<xs:choice minOccurs="0">
 				<xs:sequence>
 					<xs:element ref="Help"/>
 					<xs:choice minOccurs="0">
 						<xs:sequence>
 							<xs:element ref="Default"/>
 							<xs:choice minOccurs="0">
 								<xs:element ref="Value" maxOccurs="unbounded"/>
 								<xs:element ref="Condition"/>
 							</xs:choice>
 						</xs:sequence>
 						<xs:sequence>
 							<xs:choice>
 								<xs:element ref="Value" maxOccurs="unbounded"/>
 								<xs:element ref="Condition"/>
 							</xs:choice>
 							<xs:element ref="Default" minOccurs="0"/>
 						</xs:sequence>
 					</xs:choice>
 				</xs:sequence>
 				<xs:sequence>
 					<xs:element ref="Default"/>
 					<xs:choice minOccurs="0">
 						<xs:sequence>
 							<xs:element ref="Help"/>
 							<xs:choice minOccurs="0">
 								<xs:element ref="Value" maxOccurs="unbounded"/>
 								<xs:element ref="Condition"/>
 							</xs:choice>
 						</xs:sequence>
 						<xs:sequence>
 							<xs:choice>
 								<xs:element ref="Value" maxOccurs="unbounded"/>
 								<xs:element ref="Condition"/>
 							</xs:choice>
 							<xs:element ref="Help" minOccurs="0"/>
 						</xs:sequence>
 					</xs:choice>
 				</xs:sequence>
 				<xs:sequence>
 					<xs:choice>
 						<xs:element ref="Value" maxOccurs="unbounded"/>
 						<xs:element ref="Condition"/>
 					</xs:choice>
 					<xs:choice minOccurs="0">
 						<xs:sequence>
 							<xs:element ref="Default"/>
 							<xs:element ref="Help" minOccurs="0"/>
 						</xs:sequence>
 						<xs:sequence>
 							<xs:element ref="Help"/>
 							<xs:element ref="Default" minOccurs="0"/>
 						</xs:sequence>
 					</xs:choice>
 				</xs:sequence>
 			</xs:choice>
 			<xs:attribute name="name" type="xs:string" use="required">
 				<xs:annotation>
 					<xs:documentation>Name des Parameters.</xs:documentation>
 				</xs:annotation>
 			</xs:attribute>
 			<xs:attribute name="label" type="xs:string" use="optional">
 				<xs:annotation>
 					<xs:documentation>(optional) - Alternative Bezeichnung, die statt des Namens im
                                                                       Formular angezeigt wird. Zum Beispiel: „Chefredakteur“ statt „chefred“.</xs:documentation>
 				</xs:annotation>
 			</xs:attribute>
 			<xs:attribute name="length" type="xs:string" use="optional">
 				<xs:annotation>
 					<xs:documentation>(optional) - Länge des Eingabefeldes in Zeichen oder „max“. Letzere Angabe
                                                                       bewirkt das der Parameter vollständig über eine eigene Zeile gestreckt
                                                                       wird. Bei Zahlenangaben variiert die tatsächliche Länge leider je nach
                                                                       verwendeten Browser und verwendeter Schritart. Es können aber
                                                                       mindestens die angegebenen Anzahl von Zeichen dargestellt werden.
                                                                       Sinnvoll ist die Angabe bei Parametern mit inhaltlich begrenzter Länge,
                                                                       wie Höhen- und Geschwindigkeitsangaben, und bei Parametern denen in der
                                                                       Regel sehr lange Texte übergeben werden. Vorgabe sind 20 Zeichen.</xs:documentation>
 				</xs:annotation>
 			</xs:attribute>
 			<xs:attribute name="height" type="xs:positiveInteger" use="optional">
 				<xs:annotation>
 					<xs:documentation>(optional) - Höhe des Eingabefeldes in Zeilen. Vorgabe ist eine Zeile.</xs:documentation>
 				</xs:annotation>
 			</xs:attribute>
 			<xs:attribute name="null" use="optional" default="true">
 				<xs:annotation>
 					<xs:documentation>(optional) - Legt fest, ob ein Wert für diesen Parameter eingegeben werden muss. 
						Vorgabe: "true"  - Ein leeres Feld ist erlaubt - es muss kein Wert eingegeben werden.
						Alternativ: "false" - Die Angabe eines Wertes ist Pflicht. Der Parametername ist im Formular
                                                                      unterstrichen. Vor dem Übernehmen der Eingaben prüft das Programm, ob
                                                                      ein Wert eingegeben wurde, und markiert dieses Feld im Fehlerfall.
 					</xs:documentation>
 				</xs:annotation>
 				<xs:simpleType>
 					<xs:restriction base="xs:string">
 						<xs:enumeration value="true"/>
 						<xs:enumeration value="false"/>
 					</xs:restriction>
 				</xs:simpleType>
 			</xs:attribute>
 			<xs:attribute name="predefined" use="optional" default="false">
 				<xs:annotation>
 					<xs:documentation>(optional) - Sagt aus, ob die Vorlage für diesen Parameter einen vordefinierten Wert
                                                                       nutzt, wenn kein Wert übergeben wird. 
                                                                       Vorgabe: "false" - Es existiert kein vordefinierter Wert. Bei der Ausgabeart
                                                                                         „expand“, wird der Parameter bei fehlender Eingabe auch
                                                                                         mit leerem Inhalt im Vorlagentext erzeugt (zum Beispiel: „ISBN=“).
                                                                       Alternativ: "true" - Es existiert ein vordefinierter Standardwert für diesen
                                                                                            Parameter. Dies hat bei der Ausgabe „expand“ die Auswirkung,
                                                                                            dass der Parameter, wenn er leer ist, ohne Gleichheitszeichen
                                                                                            erzeugt wird. Dadurch bleibt er weiterhin dokumentiert, ist
                                                                                            aber trotzdem nicht definiert. Stattdessen erzeugt dies einen
                                                                                            unbenannten Parameter (zum Beispiel {{{1}}}) mit dem
                                                                                            Parameternamen als Inhalt.
 					</xs:documentation>
 				</xs:annotation>
 				<xs:simpleType>
 					<xs:restriction base="xs:string">
 						<xs:enumeration value="true"/>
 						<xs:enumeration value="false"/>
  					</xs:restriction>
 				</xs:simpleType>
  			</xs:attribute>
 		</xs:complexType>
 	</xs:element>
 	<!--  -->
 	<xs:element name="Help" type="xs:string">
 		<xs:annotation>
 			<xs:documentation>(optional) - Enthält eine Hilfetext, der die Verwendung des Parameters beschreibt. Im Formular wird dieser in der
                                                       Statuszeile angezeigt, wenn das dazugehörige Eingabefeld aktiv ist. Des weiteren wird die Hilfe als
                                                       Tooltip angezeigt. Nur als Kindknoten von "Parameter" erlaubt.</xs:documentation>
 		</xs:annotation>
 	</xs:element>
 	<!--  -->
 	<xs:element name="Value">
 		<xs:annotation>
 			<xs:documentation>(optional) - Erlaubt die Angabe eines Wertes die der Parameter annehmen darf. Im Formular wird anstatt eine
                                                       Texteingabefeldes eine Auswahlliste angezeigt, welches mit allen Value-Elementen des Parameters
                                                       gefüllt ist. Nur als Kindknoten von "Parameter" erlaubt.</xs:documentation>
 		</xs:annotation>
 		<xs:complexType>
 			<xs:simpleContent>
 				<xs:extension base="xs:string">
 					<xs:attribute name="label" type="xs:string" use="optional">
 						<xs:annotation>
 							<xs:documentation>(optional) - Alternative Bezeichnung, die statt des Namens im Formular
                                                                                       angezeigt wird. Zum Beispiel: „Chefredakteur“ statt „chefred“.</xs:documentation>
 						</xs:annotation>
 					</xs:attribute>
      				</xs:extension>
 			</xs:simpleContent>
 		</xs:complexType>
 	</xs:element>
 	<!--  -->
 	<xs:element name="Condition">
 		<xs:annotation>
 			<xs:documentation>(optional) - Erlaubt die Angabe eines regulären Ausdrucks, der für eine gültige Eingabe erfüllt sein muss.
                                                       Vor dem Übernehmen der Eingaben prüft das Programm die Gültigkeit und markiert dieses Feld im Fehlerfall.</xs:documentation>
 		</xs:annotation>
 	</xs:element>
 	<xs:element name="Default">
 		<xs:annotation>
 			<xs:documentation>(optional) - Über diesen Kindknoten von „Parameter“ lässt sich ein Vorgabewert festlegen, mit dem das Eingabefeld
                                                       immer vorausgefüllt wird, wenn es leer ist.</xs:documentation>
 		</xs:annotation>
 	</xs:element>
 </xs:schema>