Fremdattribute

(Auszug aus "XML Schema" von Eric van der Vlist)

Auch wenn xs:annotation sicherlich die flexibelste Methode dafür ist, beliebige Informationen in einem Schema unterzubringen, definiert W3C XML Schema eine zweite Öffnung in seinem Vokabular, die entweder als Alternative zu oder in Verbindung mit Anmerkungen verwendet werden kann. Sämtliche Elemente von W3C XML Schema (außer xs:documentation und xs:appinfo) akzeptieren jedes Attribut, das einen anderen Namensraum als den von W3C XML Schema hat (präfixlose Attribute sind verboten!). Solche Attribute können dazu verwendet werden, ein Schema zu dokumentieren:

<xs:element name="author" type="authorType" doc:doc="Dieses Element beschreibt den Autor eines Buches." xmlns:doc="http://dyomedea.com/ns/doc"/>

Dieser Ansatz wird auch von den SAF (Schema Adjunct Framework)-Ausschmückungen verwendet, deren einfache Form in Attribute eingebettet werden kann:

<xs:element name="author" type="authorType" sql:table="TBL_AUTHOR" xmlns:sql="http://www.extensibility.com/saf/spec/safsample/sql-map.saf"/>

Diese riesige Öffnung, die sich hier bei Attributen auftut, ist besonders für reine Attribut-Vokabulare wie XLink interessant. Einfache XLinks können unmittelbar in W3C XML Schema eingebettet werden. Das folgende Beispiel verknüpft die Definition unseres author-Elements direkt mit einem XSLT-Template:

<xs:element name="author" type="authorType" xlink:arcrole="http://www.w3.org/1999/xhtml" xlink:role="http://www.w3.org/1999/XSL/Transform" xlink:title="Author template" xlink:href="library.xslt#author" xmlns:xlink="http://www.w3.org/1999/xlink"/>

Aufgrund der Ausnahmen bei xs:appinfo und xs:documentation, die keine Fremdattribute akzeptieren, können diesen Elementen unglücklicherweise keine Metadaten durch Attribute hinzugefügt werden, daher ist das folgende Beispiel ungültig:

<xs:element name="author" type="authorType">
   <xs:annotation>
      <xs:appinfo xlink:arcrole="http://www.w3.org/1999/XSL/Transform" xlink:role="http://www.w3.org/1999/XSL/Transform" xlink:title="Author template" xlink:href="library.xslt#author" xmlns:xlink="http://www.w3.org/1999/xlink">
         <div class="resource">
            <h4>XSLT-Transformation</h4>
            <p>Dieses <a href="library.xslt#author">Template</a> zeigt die Beschreibung eines Autors an.</p>
         </div>
      </xs:appinfo>
      <xs:appinfo title="CSS Stylesheet" role="http://www.isi.edu/in-notes/iana/assignments/media-types/text/css" href="author.css">
         <div class="resource">
            <h4>CSS-Stylesheet</h4>
            <p>Ein <a href="author.css">CSS-Stylesheet</a>, das die Stile definiert, die zur Anzeige eines Autors verwendet werden können.</p>
         </div>
      </xs:appinfo>
   </xs:annotation>
</xs:element>

Natürlich gelten hier die üblichen Beschränkungen von Attributen: Attribute sind weniger erweiterbar als Elemente, und sie können keine strukturierten Inhalte aufnehmen.

   

<< zurück vor >>

 

 

 

Tipp der data2type-Redaktion:
Zum Thema XML Schema bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:

Copyright © 2003 O'Reilly Verlag GmbH & Co. KG
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "XML Schema" denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

O’Reilly Verlag GmbH & Co. KG, Balthasarstraße 81, 50670 Köln, kommentar(at)oreilly.de