Document Structure Description
Document Structure Description oder DSD ist eine Schemasprache, die dazu dient, Klassen von XML-Dokumenten zu beschreiben, die alle dieselben syntaktischen Anforderungen bezüglich ihrer Struktur und ihres Inhalts haben. DSD wurde in Kooperation mit BRICS und AT&T Labs Research entwickelt.
Entwicklungsziele
Die Entwicklungsziele von DSD waren:[1]
- wenige und einfach zu verstehende Sprachbestandteile (auf boolescher Logik und regulären Ausdrücken basierend) und zu enthalten
- auch für Nicht-XML-Experten einfach zu verstehen sein
- Für die meisten praktischen Einsatzzwecke ausdrucksstärker als andere Dokumenttyp-Definitionssprachen zu sein
Konzepte
Das zentrale Konzept von DSD ist, dass jedes DSD-Schema aus einer Liste von Regeln besteht. Ein validierender XML-Parser muss für alle Elemente eines XML-Dokuments alle Regeln verarbeiten. Die Regeln enthalten dabei declare- und require-Abschnitte. Declare-Abschnitte definieren, welchen Inhalt (Subelemente und Zeichendaten) und welche Attribute für das Element zulässig sind. Require-Abschnitte definieren erweiterte Einschränkungen auf Inhalte und Attribute. Dabei werden Regelbedingungen und erweiterte Einschränkungen durch boolesche Logik beschrieben, während die Werte der Attribute und der Inhalt der Elemente durch reguläre Ausdrücke beschrieben werden.
Beispiel
Ein Beispiel für eine DSD ist:
<dsd xmlns="http://www.brics.dk/DSD/2.0"
xmlns:my="http://example.com">
<if><element name="my:foo"/>
<declare>
<attribute name="first"/>
<attribute name="second"/>
<contents>
<element name="my:bar"/>
</contents>
</declare>
</if>
<if><element name="my:bar"/>
<declare>
<contents>
</contents>
</declare>
</if>
</dsd>
Das Element "foo" im XML-Namensraum "http://example.com" kann die beiden Attribute "first" und "second" haben. Der Inhalt des "foo"-Elements kann ausschließlich aus dem "bar"-Element bestehen, welches es enthalten muss. Das "bar"-Element wiederum darf weder Attribute, Text noch weitere Subelemente enthalten, muss also leer sein.
Ein XML-Dokument das bezüglich oben aufgeführter DSD-Spezifikation valide wäre, wäre z. B.:
<foo xmlns="http://example.com" second="2">
<bar/>
</foo>
Weblinks
- Document Structure Description 2.0 Spezifikation (englisch)
- DSD 2.0 von den Autoren erklärt (englisch)
Einzelnachweise
- Anders Moller, Michael I. Schartzbach: Document Structure Description 2.0. BRICS, 2003 (englisch)