<?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>