Optionen und weiterführende Links



In der Datenbank befinden sich derzeit 477 Specials. Alle Specials anzeigen...

Namensräume

Namensräume

Manchmal wollt Ihr Tags aus verschiedenen XML-Sprachen im selben Dokument verwenden. Das ist beispielsweise der Fall, wenn Eure Webseite (in XHTML) eine mathematische Formel (in MathML) oder eine Zeichnung (in SVG) enthalten soll. Dann kann es Euch aber passieren, daß mehrere Sprachen den gleichen XML-Namen für unterschiedliche Tags verwenden. In solchen Fällen müßt Ihr irgendwie angeben, welche Variante Ihr meint. Das tut Ihr, indem Ihr den passenden Namensraum der Sprache, aus dem der gewünschte Tag kommt, angebt. Deshalb definiert jede XML-Sprache einen eigenen Namensraum. Das könnt Ihr Euch ähnlich vorstellen wie den Gültigkeitsbereich einer Variablen. Bei «doppeldeutigen» Tagnamen gebt Ihr einfach den entsprechenden Namensraum mit an.

Dazu gibt es zwei Möglichkeiten: Mit Hilfe des Attributs 'xmlns' könnt Ihr einem Tag (und allen darin enthaltenen Kindstags) einen Namensraum zuordnen

<comic xmlns="http://mein.server.test/XML/comic">
  <titel>Die Beispiel-Serie</title>
  <autor>A. U. Tor</autor>

  <logo xmlns="mein.server.test/XML/grafik">

    <titel>Logo &quot;Beispiel-Serie&quot;</titel>
  </logo>

</comic>

Hier werden zwei verschiedene Tags mit dem Namen 'titel' verwendet, das eine aus dem Namensraum 'http://mein.server.test/XML/comic', das andere aus dem Namensraum 'http://mein.server.test/XML/grafik'. Wie Ihr seht, wird eine URL angegeben. Allerdings muß unter dieser URL nicht unbedingt auch wirklich etwas abrufbar sein. Es ist nur eine Konvention, vergleichbar mit einem eindeutigen Namen.

Die zweite Möglichkeit ist die Verwendung von qualifizierten Namen. Ein qualifizierter Name besteht aus einem Präfix, einem Doppelpunkt und dem lokalen Namen (das ist der «normale» Tagname). Die Zuordnung der Präfixe zu den Namensräumen geschieht mit mehreren xmlns-Attributen im Wurzelelement

<comic
  xmlns:comic="http://mein.server.test/XML/comic"
  xmlns:grafik="http://mein.server.test/XML/grafik">

  <comic:titel>Die Beispiel-Serie</comic:title>
  <autor>A. U. Tor</autor>

  <logo xmlns="mein.server.test/XML/grafik">
    <grafik:titel>Logo &quot;Beispiel-Serie&quot;</grafik:titel>
  </logo>

</comic>

Ihr unterscheidet also die Tags nach den qualifizierten Namen 'comic:titel' und 'grafik:titel'.

Ansichtssache

Eine Frage brennt Euch vermutlich schon seit einiger Zeit auf der Zunge: Wenn die Tags eines XML-Dokuments nur Aussagen über den Inhalt machen und Ihr nahezu beliebige eigene Tags definieren könnt - woher weiß dann Euer Browser, wie er das XML-Dokument darstellen soll? Die kurze und unbefriedigende Antwort ist: Er weiß es natürlich gar nicht. Ihr könnt es ihm aber sagen, und zwar mit Hilfe des vertrauten CSS oder mit XSL. Zuerst einige Worte zu CSS mit XML.

Eine externe CSS-Datei könnt Ihr mit Hilfe einer PI (Steueranweisung) in Euer XML-Dokument einbinden

<?xml-stylesheet href="myStyles.css" type="text/css"?>

In dieser CSS-Datei könnt Ihr mit gewöhnlichen Tag-Selektoren das Aussehen Eurer XML-Tags festlegen. Nehmen wir als Beispiel folgendes XML-Dokument, das eine Comic-Sammlung beschreibt

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<?xml-stylesheet href="comics-styles.css" type="text/css"?>

<comics>

  <book>
    <title>Die Beispiel-Serie</title>

    <author>A. U. Tor</author>
  </book>

  <book>
    <title>Noch eine Serie</title>

    <author>Blei&Stift</author>
  </book>

</comics>

Die dazugehörige CSS-Datei könnte etwa so aussehen

book{display:block;
     margin:10px;
     background-color:lightgray;
     border-style:solid;
     border-width:thin;
     padding:5px}

title{display:block;
      font-size:125%;
      color:darkred}

author{display:block;
       font-weight:bold}

Neben diesen einfachen Tag-Selektoren könnt Ihr noch weitere Selektorarten verwenden, von denen ich die wichtigsten kurz beschreiben werde (die Eigenschafts-Wert-Paare sind als «formatierung» symbolisiert)

tag1, tag2{formatierung} /* Wird auf beide Tags angewendet */

*{formatierung} /* Universalselektor, wird auf alle Tags angewendet */

/* Wird angewendet, wenn tag2 als Abkömmling von tag1 vorkommt */
tag1 tag2{formatierung}

/* Wird angewendet, wenn ein tag-Element
  ein 'attribut'-Attribut besitzt */
tag[attribut]{formatierung}

/* Wird angewendet, wenn ein tag-Element
  ein 'attribut'-Attribut mit dem Wert 'wert' besitzt */
tag[attribut="wert"]{formatierung}


Special vom: 16.01.2003
Autor dieses Specials: Henning Kockerbeck
Die weiteren Unterseiten dieses Specials:
Die reine Lehre - HTML
Stilvoll - CSS
Kleiner Grundkurs Programmieren
Jetzt wird's dynamisch - JavaScript
Die andere Seite der Dynamik - PHP
Neue Gefilde - XML
Weiterführende Links
Zurück zur Hauptseite des Specials


?>