Montag, 17. September 2007 |
Kolumne
Namen sind Schall und Rauch. Namen sind das Unterscheidungsmerkmal von
XML. Denn im Unterschied zu den meisten Binärformaten benennt
ein XML-Format die Daten: das ist eine Postleitzahl, das eine
Kontonummer. Und: Namen sind nicht eindeutig. Eine Bank ist ein
Geldinstitut. Eine Bank ist eine gute Gelegenheit, sich auszuruhen.
Bank in der Bank
Eine Bank in der Bank ist – für XML zu viel. XML ist
eine Metasprache. Sie kennt nur spitze Klammern, also Syntax, aber
keine Semantik, also Bedeutung. Die Bedeutung liegt wie so oft im Auge
des Betrachters, sprich in der Verantwortung des Programmes, das
die XML-Daten verarbeitet. Wie ein Programm ein Element interpretiert,
hängt von zweierlei ab: von dessen Kontext und Namen.
Es kommt auf den Kontext an. Wer diesen Satz hört,
weiß: jetzt wird es kompliziert. Damit es einfach bleibt,
sollte der Name entscheiden. Doch was, wenn der nicht eindeutig ist?
Dann muss er in einen Namensraum verpackt werden.
Namensräume sind abstrakte Gebilde. Sie bieten Platz
für Namen, sofern diese eindeutig sind. Es gibt also eine Bank
im Namensraum der Finanzen und eine Bank im Namensraum der
Einrichtungsgegenstände. Damit sich beide Namensräume
unterscheiden, erhält jeder einen eindeutigen Bezeichner:
<fin:bank xmlns:fin="http://finanzen.de">
<ein:bank xmlns:ein="http://einrichtung.de" />
</fin:bank>
Nachzügler
Namensräume sind ein universelles Konzept. Java nutzt es in
Form von Packages, .NET nennt es einfach Namespaces. Und XML? XML kennt
keine Namensräume. Wer wiederum XML kennt, weiß: das
stimmt so nicht. Zwar sind in der Spezifikation "Extensible
Markup Language (XML) 1.0" keine Namensräume
definiert, aber deshalb gibt es das Add-On "Namespaces in XML
1.0" – eine weitere Spezifikation aus dem Hause W3C.
Diese erweitert XML um das Konzept der Namensräume und
bestimmt die Uniform Resource Identifiers (URI) als eindeutige
Bezeichner für Namensräume. URIs sind Ihnen bekannt.
Nein? Aber natürlich! Blicken Sie Ihren Bildschirm entlang
nach oben und Sie werden eine Zeichenfolge beginnend mit
"http://" entdecken. Das ist ein URI!
URLs (Uniform Resource Locators) sind eine Form der URIs. URNs (Uniform
Resource Names) sind eine weitere Spielart. Sie haben die Form
"urn:entwickler:webtech:naked-xml" und sind kaum
gebräuchlich.
In der Auflösung
Entscheidend bei einem URI ist der Scheme-Bezeichner. Er bestimmt
das Format des
URI und das Protokoll, wie der URI aufzulösen ist. "Auflösen"
meint hier nicht
Auflösen im Sinne einer Versammlung, sondern den Prozess der
Interpretation des URI, der Lokalisierung der Ressource über
den URI und der Übermittlung der Ressource über die
Internetleitung.
Doch welche Ressource adressiert ein Namensraum-URI? Die einfache
Antwort: gar keine. Namensräume sind eben ein rein abstraktes
Konzept, und so sind es die Namensraum-URIs. Es findet sich zwar unter
http://www.w3.org/1999/XSL/Transform, dem Namensraum-URL der
XSLT-Elemente, ein XML-Schema-Dokument, das enthält aber nur
Platzhalter und ist auch sonst völlig
überflüssig.
Ein Namensraum-URI dient allein der Identifikation eines Namensraumes.
Eine Auflösung des URI durch den XML-Parser findet bei
Namensraum-URIs nicht statt. So erklärt es sich auch, dass die
Namensraum-URIs http://www.aboutxml.de/ und http://www.aboutxml.de,
obgleich sie dieselbe Ressource referenzieren, zwei unterschiedliche
Namensräume bezeichnen. Denn merke: Namensraum-URIs werden
zeichenweise verglichen! Auch Groß- und Kleinschreibung
spielt demnach eine Rolle.
Tipps statt Tricks
Deshalb folgende Tipps zur Benennung von Namensraum-URLs:
- Schreiben Sie alles klein. Das ist nicht nur angenehmer zu
tippen, sondern reduziert auch das Fehlerpotenzial.
- Verzichten Sie auf Escape-Sequenzen (zum Beispiel "%7E"), um
Sonderzeichen darzustellen,
beziehungsweise vermeiden Sie grundsätzlich Sonderzeichen in
den URLs.
- Schließen Sie den URL nicht mit einem
Schrägstrich ab. Das verleitet den unwissenden Entwickler
(also jene, die nicht diese Kolumne lesen) zu der falschen Annahme,
dass es sich hierbei um einen gewöhnlichen URL handelt und der
Schrägstrich somit überflüssig ist.
- Überlegen Sie sich ein einheitliches Schema
für die Benennung von Namensräumen,
beispielsweise http://www.meinefirma.de/schemas/2007/format.
- Hinterlegen Sie ein Dokument hinter dem Namensraum-URL
– für die Unwissenden! Das kann beispielsweise die
Dokumentation des zugehörigen XML Schemas sein.
Kontrolle ist besser
Apropos XML Schema, auch das ist ein beliebtes
Missverständnis: der Namensraum-URL
lokalisiere das
XML Schema, das zur Validierung des XML-Dokuments verwendet werden
soll. Richtig ist dagegen, dass Namensraum das Schema
identifiziert,
das zur Validierung der XML-Daten dient. Zur Eindeutigkeit gesellt sich
damit die Validierbarkeit als ein weiterer Anwendungszweck von
Namensräumen. Diesen Aspekt beleuchtet die kommende Folge von
Naked XML.
In diesem Sinne, bis in vierzehn Tagen,
Ihr Martin Szugat
Martin Szugat ist Berater und
Fachautor für XML-basierte
Technologien. Seine zweite Leidenschaft gilt dem Social Web. Neben
seiner Tätigkeit für
Naked XML betreut er
beim
Online-Magazin
Create or Die
daher das Thema Social Networks. Sie erreichen ihn via E-Mail an
martin.szugat@techworker.net.