Namensräume und Kommentare

18.01.2017 11:31 Uhr

Namensräume

Das Konzept der Namensräume oder namespaces ist für XML genauso wichtig wie einfach. Es ist notwendig, um Konflikte in der Benennung von Elementen zu umgehen, die ungewollt und schnell auftreten können, da Elementnamen eindeutig sein müssen.

Zum Beispiel kann für eine Bildersammlung das Kind-Element <name> und für das einzelne Bild das Kind-Element <titel> gewählt, um in keinen Namenskonflikt durch die zweimalige Verwendung von Titel zu kommen, da ja sowohl die Sammlung wie auch das einzelne Bild einen Namen aufweist. Aber nur selten lässt sich das Problem auf diese Art elegant lösen.

Namenskonflikte entstehen vermehrt auch dann, wenn verschiedene XML-Anwendungen zusammengeführt werden. Gleichnamige Element können in unterschiedlichen Kontexten eine völlig andersartige Bedeutung haben:

Kontext HTML:

<body> Das ist meine Webseite </body>

Kontext HUMAN:

<body>
<height>182 cm</height>
<weight>85 kg</weight>
</body>

Um den Kontext für ein Element festzulegen, wird vor den Elementnamen ein kontextspezifisches Präfix und als Trennzeichen ein Doppelpunkt geschrieben und damit die Eindeutigkeit wieder hergestellt:

<web:body> Das ist meine Webseite </web:body>

und

<man:body>
<man:height>182 cm</man:height>
<man:weight>85 kg</man:weight>
</man:body>

Die Verwendung von derartigen Präfixen setzt voraus, dass zuvor ein Namesraum, also ein Kontext, festgelegt wurde. Diese Deklarationen sollten immer am Anfang der Instanz als Attribut namens xmlns zum Root-Element erfolgen und haben als Wertzuweisung eine beliebige URL:

<html     xmlns="http://www.w3.org/1999/xhtml"
   xmlns:man="http://www.hki.uni-koeln.de/human">
  
   <head>
          <titel> menschlicher Körper</title>
   </head>
  
   <body>
          <man:body>
                 <man:height>182 cm</man:height>
                 <man:weight>85 kg</man:weight>
          </man:body>
   </body>
</html>

Kommentare

Kommentare sind Bereiche, die nicht interpretiert werden sollen. Diese werden wie folgt notiert:

<!-- Kommentar --> oder
<!-- <Elementname>Inhalt</Elementname> -->

vorherige Folie / nächste Folie

Schlagwörter: