Namensräume

(Auszug aus "XML in a Nutshell" von Elliotte Rusty Harold & W. Scott Means)

Da XPointer auch an Orten auftauchen dürfen, die nicht XML-Dokumente sind (in HTML-Dokumenten, Datenbankfeldern oder auf den Seiten einer Illustrierten), brauchen sie ihren ganz eigenen Mechanismus, um Namensraum-Präfixe an Namensraum-URIs zu binden. Das geschieht, indem ein oder mehrere xmlns-Abschnitte vor den xpointer-Teil gesetzt werden. Die Syntax lautet xmlns(praefix=URI). Dieser XPointer beispielsweise bildet das svg-Präfix auf den Namensraum "http://www.w3.org/2000/svg" ab und sucht dann alle rect-Elemente in diesem Namensraum:

xmlns(svg=http://www.w3.org/2000/svg) xpointer(//svg:rect)

Wie in den meisten anderen Verwendungen von Namensräumen ist in einem XPointer nur der URI entscheidend, nicht das Präfix. Obiger XPointer findet alle rect-Elemente im Namensraum "http://www.w3.org/2000/svg", unabhängig davon, welches Präfix sie verwenden oder ob sie im Default-Namensraum liegen.

Es gibt keine Möglichkeit, einen präfixlosen Default-Namensraum für einen XPointer zu definieren. Allerdings können sich mit einem Präfix versehene Namen in einem XPointer auf Elemente im Zieldokument beziehen, die kein Präfix haben, aber namensraumqualifiziert sind. Dieser XPointer z.B. findet das dritte div-Element in einem XHTML-Dokument:

xmlns(html=http://www.w3.org/1999/xhtml) xpointer(//html:div[3])

Er nimmt das Präfix html, um den XHTML-Namensraum zu erkennen, obwohl XHTML-Dokumente selbst nie Präfixe verwenden.

Es kann auch mehr als ein Namensraum-Präfix verwendet werden, indem ganz einfach weitere xmlns-Hinweise eingefügt werden. Beispielsweise sucht dieser XPointer alle svg-Elemente in XHTML-Dokumenten, indem er jeweils ein Präfix für den SVG- und für den XHTML-Namensraum deklariert:

xmlns(svg=http://www.w3.org/2000/svg)
xmlns(h=http://www.w3.org/1999/xhtml) xpointer(/h:html//svg:svg)

Wenn ein XPointer in ein XML-Dokument eingebunden wird, wirken die Namensraum-Bindungen, die dieses Dokument eingerichtet hat, nicht auf den XPointer. Für ihn gelten nur die Bindungen, die durch die xmlns-Anweisungen hergestellt werden. Enthalten XPointer XPath-Ausdrücke, die sich auf Elemente oder Attribute in einem Namensraum beziehen, müssen ihnen die entsprechenden xmlns-Schnipsel vorausgeschickt werden, die die Namensräume deklarieren.

  

<< zurück vor >>

 

 

 

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

  


Copyright © 2005 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 in a Nutshell" 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