Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
1 Java ist auch eine Sprache
2 Sprachbeschreibung
3 Klassen und Objekte
4 Der Umgang mit Zeichenketten
5 Eigene Klassen schreiben
6 Exceptions
7 Generics<T>
8 Äußere.innere Klassen
9 Besondere Klassen der Java SE
10 Architektur, Design und angewandte Objektorientierung
11 Die Klassenbibliothek
12 Bits und Bytes und Mathematisches
13 Datenstrukturen und Algorithmen
14 Threads und nebenläufige Programmierung
15 Raum und Zeit
16 Dateien, Verzeichnisse und Dateizugriffe
17 Datenströme
18 Die eXtensible Markup Language (XML)
19 Grafische Oberflächen mit Swing
20 Grafikprogrammierung
21 Netzwerkprogrammierung
22 Verteilte Programmierung mit RMI
23 JavaServer Pages und Servlets
24 Datenbankmanagement mit JDBC
25 Reflection und Annotationen
26 Dienstprogramme für die Java-Umgebung
A Die Begleit-DVD
Stichwort
Ihre Meinung?

Spacer
 <<   zurück
Java ist auch eine Insel von Christian Ullenboom
Das umfassende Handbuch
Buch: Java ist auch eine Insel

Java ist auch eine Insel
geb., mit DVD
1482 S., 49,90 Euro
Rheinwerk Computing
ISBN 978-3-8362-1506-0
Pfeil 18 Die eXtensible Markup Language (XML)
  Pfeil 18.1 Auszeichnungssprachen
    Pfeil 18.1.1 Die Standard Generalized Markup Language (SGML)
    Pfeil 18.1.2 Extensible Markup Language (XML)
  Pfeil 18.2 Eigenschaften von XML-Dokumenten
    Pfeil 18.2.1 Elemente und Attribute
    Pfeil 18.2.2 Beschreibungssprache für den Aufbau von XML-Dokumenten
    Pfeil 18.2.3 Schema – eine Alternative zu DTD
    Pfeil 18.2.4 Namensraum (Namespace)
    Pfeil 18.2.5 XML-Applikationen *
  Pfeil 18.3 Die Java-APIs für XML
    Pfeil 18.3.1 Das Document Object Model (DOM)
    Pfeil 18.3.2 Simple API for XML Parsing (SAX)
    Pfeil 18.3.3 Pull-API StAX
    Pfeil 18.3.4 Java Document Object Model (JDOM)
    Pfeil 18.3.5 JAXP als Java-Schnittstelle zu XML
    Pfeil 18.3.6 DOM-Bäume einlesen mit JAXP *
  Pfeil 18.4 Java Architecture for XML Binding (JAXB)
    Pfeil 18.4.1 Bean für JAXB aufbauen
    Pfeil 18.4.2 JAXBContext und die Marshaller
    Pfeil 18.4.3 Ganze Objektgraphen schreiben und lesen
    Pfeil 18.4.4 Validierung
    Pfeil 18.4.5 Weitere JAXB-Annotationen *
    Pfeil 18.4.6 Beans aus XML-Schema-Datei generieren
  Pfeil 18.5 Serielle Verarbeitung mit StAX
    Pfeil 18.5.1 Unterschiede der Verarbeitungsmodelle
    Pfeil 18.5.2 XML-Dateien mit dem Cursor-Verfahren lesen
    Pfeil 18.5.3 XML-Dateien mit dem Iterator-Verfahren verarbeiten *
    Pfeil 18.5.4 Mit Filtern arbeiten *
    Pfeil 18.5.5 XML-Dokumente schreiben
  Pfeil 18.6 Serielle Verarbeitung von XML mit SAX *
    Pfeil 18.6.1 Schnittstellen von SAX
    Pfeil 18.6.2 SAX-Parser erzeugen
    Pfeil 18.6.3 Operationen der Schnittstelle »ContentHandler«
    Pfeil 18.6.4 ErrorHandler und EntityResolver
  Pfeil 18.7 XML-Dateien mit JDOM verarbeiten
    Pfeil 18.7.1 JDOM beziehen
    Pfeil 18.7.2 Paketübersicht *
    Pfeil 18.7.3 Die Document-Klasse
    Pfeil 18.7.4 Eingaben aus der Datei lesen
    Pfeil 18.7.5 Das Dokument im XML-Format ausgeben
    Pfeil 18.7.6 Der Dokumenttyp *
    Pfeil 18.7.7 Elemente
    Pfeil 18.7.8 Zugriff auf Elementinhalte
    Pfeil 18.7.9 Liste mit Unterelementen erzeugen *
    Pfeil 18.7.10 Neue Elemente einfügen und ändern
    Pfeil 18.7.11 Attributinhalte lesen und ändern
    Pfeil 18.7.12 XPath
  Pfeil 18.8 Transformationen mit XSLT *
    Pfeil 18.8.1 Templates und XPath als Kernelemente von XSLT
    Pfeil 18.8.2 Umwandlung von XML-Dateien mit JDOM und JAXP
  Pfeil 18.9 XML-Schema-Validierung *
    Pfeil 18.9.1 SchemaFactory und Schema
    Pfeil 18.9.2 Validator
    Pfeil 18.9.3 Validierung unterschiedlicher Datenquellen durchführen
  Pfeil 18.10 Zum Weiterlesen


Rheinwerk Computing - Zum Seitenanfang

18.2 Eigenschaften von XML-Dokumenten  Zur nächsten ÜberschriftZur vorigen Überschrift


Rheinwerk Computing - Zum Seitenanfang

18.2.1 Elemente und Attribute  Zur nächsten ÜberschriftZur vorigen Überschrift

Der Inhalt eines XML-Dokuments besteht aus strukturierten Elementen, die hierarchisch geschachtelt sind. Dazwischen befindet sich der Inhalt, der aus weiteren Elementen (daher »hierarchisch«) und reinem Text bestehen kann. Die Elemente können Attribute enthalten, die zusätzliche Informationen in einem Element ablegen:

Listing 18.1  party.xml

<?xml version="1.0"?>
<party datum="31.12.01">
  <gast name="Albert Angsthase">
    <getraenk>Wein</getraenk>
    <getraenk>Bier</getraenk>
    <zustand ledig="true" nuechtern="false"/>
  </gast>
</party>

Die Groß- und Kleinschreibung der Namen für Elemente und Attribute ist für die Unterscheidung wichtig. Ein Attribut besteht aus einem Attributnamen und einem Wert. Der Attributwert steht immer in einfachen oder doppelten Anführungszeichen, und das Gleichheitszeichen weist den Wert dem Attributnamen zu.

Verwendung von Tags

Gemäß der Reference Concrete Syntax geben Elemente in spitzen Klammern die Tags an. Elemente existieren in zwei Varianten: Falls das Element einen Wert einschließt, besteht es aus einem Anfangs-Tag und einem End-Tag.

Element = öffnendes Tag + Inhalt + schließendes Tag

Der Anfangs-Tag gibt den Namen des Tags vor und enthält die Attribute. Der End-Tag hat den gleichen Namen wie der Anfangs-Tag und wird durch einen Schrägstrich nach der ersten Klammer gekennzeichnet. Zwischen dem Anfangs- und dem End-Tag befindet sich der Inhalt des Elements.


Beispiel Das Element <getraenk> mit dem Wert Wein:

<getraenk>Wein</getraenk>

Ein Element, das keine Inhalte einschließt, besteht aus nur einem Tag mit einem Schrägstrich vor der schließenden spitzen Klammer. Diese Tags haben entweder Attribute als Inhalt, oder das Auftreten des Tags ist Bestandteil des Inhalts.


Beispiel Das Element <zustand> mit den Attributen ledig und nuechtern:

<zustand ledig="true" nuechtern="false" />

Bedeutung der Tags

Durch die freie Namensvergabe in XML-Dokumenten ist eine formatierte Darstellung eines Dokuments nicht möglich. Anders als bei HTML gibt es keine festgelegte Menge von Tags, die den Inhalt nach bestimmten Kriterien formatieren. Falls das XML-Dokument in einem Browser dargestellt werden soll, sind zusätzliche Beschreibungen in Form von Formatvorlagen (Stylesheets) für die Darstellung in HTML notwendig.

Wohlgeformt

Ein XML-Dokument muss einige Bedingungen erfüllen, damit es wohlgeformt ist. Wenn es nicht wohlgeformt ist, ist es auch kein XML-Dokument. Damit ein XML-Dokument wohlgeformt ist, muss jedes Element aus einem Anfangs- und einem End-Tag oder nur aus einem abgeschlossenen Tag bestehen. Hierarchische Elemente müssen in umgekehrter Reihenfolge ihrer Öffnung wieder geschlossen werden. Die Anordnung der öffnenden und schließenden Tags legt die Struktur eines XML-Dokuments fest. Jedes XML-Dokument muss ein Wurzelelement enthalten, das alle anderen Elemente einschließt.


Beispiel Das Wurzelelement heißt <party> und schließt das Element <gast> ein:

<party datum="31.12.01">
  <gast name="Albert Angsthase"></gast>
</party>

Spezielle Zeichen in XML (Entitäten)

Wir müssen darauf achten, dass einige Zeichen in XML bestimmte Bedeutungen haben. Dazu gehören &, <, >, " und . Sie werden im Text durch spezielle Abkürzungen, die Entitäten, abgebildet. Dies sind für die oben genannten Zeichen &amp;, &lt;, &gt;, &quot; und &apos;. Diese Entitäten für die Sonderzeichen sind als einzige durch den Standard festgelegt.

<!-- Kommentare -->

XML-Dokumente können auch Kommentare enthalten. Diese werden beim Auswerten der Daten übergangen. Kommentare verbessern die Qualität des XML-Dokuments für den Benutzer wesentlich. Sie können an jeder Stelle des Dokuments verwendet werden, nur nicht innerhalb der Tags. Kommentare haben die Form:

<!-- Text des Kommentars -->

Der beste Kommentar eines XML-Dokuments ist die sinnvolle Gliederung des Dokuments und die Wahl selbsterklärender Namen für Tags und Attribute.

Kopfdefinition

Die Wohlgeformtheit muss mindestens erfüllt sein. Zusätzlich dürfen andere Elemente eingebaut werden. Dazu gehört etwa eine Kopfdefinition, die beispielsweise

<?xml version="1.0"?>

lauten kann. Diese Kopfdefinition lässt sich durch Attribute erweitern. In diesem Beispiel werden die verwendete XML-Version und die Zeichenkodierung angegeben:

<?xml version="1.0" encoding="iso-8859–1"?>

Wenn eine XML-Deklaration vorhanden ist, muss sie ganz am Anfang des Dokuments stehen. Dort lässt sich auch die benutzte Zeichenkodierung definieren, wenn sie nicht automatisch UTF-8 oder UTF-16 ist. Automatisch kann jedes beliebige Unicode-Zeichen unabhängig von der Kodierung über das Kürzel &#xABCD; (A, B, C, D stehen für Hexadezimalzeichen) dargestellt werden.


Rheinwerk Computing - Zum Seitenanfang

18.2.2 Beschreibungssprache für den Aufbau von XML-Dokumenten  Zur nächsten ÜberschriftZur vorigen Überschrift

Im Gegensatz zu HTML ist bei XML die Menge der Tags und deren Kombination nicht festgelegt. Für jede Anwendung können Entwickler beliebige Tags definieren und verwenden. Um aber überprüfen zu können, ob eine XML-Datei für eine bestimmte Anwendung die richtige Form hat, wird eine formale Beschreibung dieser Struktur benötigt. Diese formale Struktur ist in einem bestimmten Format beschrieben, wobei zwei Formate populär sind: das XML Schema und die Document Type Definition (DTD). Sie legen fest, welche Tags zwingend vorgeschrieben sind, welche Art Inhalt diese Elemente haben, wie Tags miteinander verschachtelt sind und welche Attribute ein Element besitzen darf. Hält sich ein XML-Dokument an die Definition, ist es gültig (engl. valid).

Mittlerweile gibt es eine große Anzahl von Beschreibungen in Form von DTD und Schema, die Formatierungen für die verschiedensten Daten bieten. Einige DTDs sind unter http://tutego.de/go/xmlapplications aufgeführt. Um einen Datenaustausch für eine bestimmte Anwendung zu gewährleisten, ist eine eindeutige Beschreibung unerlässlich. Es wäre problematisch, wenn die Unternehmen unter der Struktur einer Rechnung immer etwas anderes verstünden.

Document Type Definition (DTD)

Für die folgende XML-Datei entwickeln wir eine DTD zur Beschreibung der Struktur:

Listing 18.2  party.xml

<?xml version="1.0" ?>
<party datum="31.12.01">
    <gast name="Albert Angsthase">
        <getraenk>Wein</getraenk>
        <getraenk>Bier</getraenk>
        <zustand ledig="true" nuechtern="false"/>
    </gast>
    <gast name="Martina Mutig">
        <getraenk>Apfelsaft</getraenk>
        <zustand ledig="true" nuechtern="true"/>
    </gast>
    <gast name="Zacharias Zottelig"></gast>
</party>

Für diese XML-Datei legen wir die Struktur fest und beschreiben sie in einer DTD. Dazu sammeln wir zuerst die Daten, die in dieser XML-Datei stehen.


Tabelle 18.1  Struktur der Beispiel-XML-Datei

Elementname Attribute Untergeordnete Elemente Aufgabe

party

datum Datum der Party

gast

Wurzelelement mit dem Datum der Party als Attribut

gast

name Name des Gastes

getraenk und zustand

die Gäste der Party, Name des Gastes als Attribut

getraenk

Getränk des Gastes als Text

zustand

ledig und nuechtern

Familienstand und Zustand als Attribute


Elementbeschreibung

Die Beschreibung der Struktur eines Elements besteht aus dem Elementnamen und dem Typ. Sie kann auch aus einem oder mehreren untergeordneten Elementen in Klammern bestehen. Der Typ legt die Art der Daten in dem Element fest. Mögliche Typen sind etwa PCDATA (Parsed Character Data) für einfachen Text oder ANY für beliebige Daten.

Untergeordnete Elemente werden als Liste der Elementnamen angegeben. Die Namen sind durch ein Komma getrennt. Falls verschiedene Elemente oder Datentypen alternativ vorkommen können, werden diese ebenfalls in Klammern angegeben und mit dem Oder-Operator (|) verknüpft. Hinter jedem Element und hinter der Liste von Elementen legt ein Operator fest, wie häufig das Element oder die Folgen von Elementen erscheinen müssen. Falls kein Operator angegeben ist, muss das Element oder die Elementliste genau einmal erscheinen. Folgende Operatoren stehen zur Verfügung:


Tabelle 18.2  DTD-Operatoren für Wiederholungen

Operator Wie oft erscheint das Element?

?

einmal oder gar nicht

+

mindestens einmal

*

keinmal, einmal oder beliebig oft



Beispiel Das Element <party> erlaubt beliebig viele Unterelemente vom Typ <gast>:

<!ELEMENT party (gast)*>

Drückt aus, dass auf einer Party beliebig viele Gäste erscheinen können.


Attributbeschreibung

Die Beschreibung der Attribute sieht sehr ähnlich aus. Sie besteht aus dem Element, den Attributnamen, den Datentypen der Attribute und einem Modifizierer. In einem Attribut können als Werte keine Elemente angegeben werden, sondern nur Datentypen wie CDATA (Character Data). Der Modifizierer legt fest, ob ein Attribut zwingend vorgeschrieben ist oder nicht. Folgende Modifizierer stehen zur Verfügung:


Tabelle 18.3  Attribut-Modifizierer

Modifizierer Erläuterung

#IMPLIED

Muss nicht vorkommen.

#REQUIRED

Muss auf jeden Fall vorkommen.

#FIXED [Wert]

Wert wird gesetzt und kann nicht verändert werden.



Beispiel Das Attribut datum für das Element <party>:

<!ATTLIST party datum CDATA #REQUIRED>

Der Wert des Attributs datum ist Text und muss angegeben sein (festgelegt durch den Modifizierer #REQUIRED).

Kümmern wir uns um die Beschreibung eines Gasts, der einen Namen und einen Zustand hat:

<!ELEMENT gast (getraenk*, zustand?)>
<!ATTLIST gast name CDATA #REQUIRED>

Das Element hat als Attribut name und die Unterelemente <getraenk> und <zustand>. Ein Gast kann kein Getränk, ein Getränk oder viele einnehmen. Die Attribute des Elements <zustand> müssen genau einmal oder gar nicht vorkommen.

Das Element <getraenk> hat keine Unterelemente, aber einen Text, der das Getränk beschreibt:

<!ELEMENT getraenk (#PCDATA)>

Das Element <zustand> hat keinen Text und keine Unterelemente, aber die Attribute ledig und nuechtern, die mit Text gefüllt sind. Die Attribute müssen nicht unbedingt angegeben werden (Modifizierer #IMPLIED).

<!ELEMENT zustand EMPTY>
<!ATTLIST zustand ledig CDATA #IMPLIED
   nuechtern CDATA #IMPLIED>

Bezugnahme auf eine DTD

Falls die DTD in einer speziellen Datei steht, wird im Kopf der XML-Datei angegeben, wo die DTD für dieses XML-Dokument steht:

<!DOCTYPE party SYSTEM "dtd\partyfiles\party.dtd">

Hinter DOCTYPE steht das Wurzelelement der zu beschreibenden XML-Datei. Hinter SYSTEM steht die URI mit der Adresse der DTD-Datei. Die DTD selbst kann in einer eigenen Datei stehen oder Bestandteil der XML-Datei sein.

Die vollständige DTD zu dem Party-Beispiel sieht folgendermaßen aus:

Listing 18.3  party.dtd

<!ELEMENT party (gast)*>
<!ATTLIST party datum CDATA #REQUIRED>
<!ELEMENT gast (getraenk*, zustand?)>
<!ATTLIST gast name CDATA #REQUIRED>
<!ELEMENT getraenk (#PCDATA)>
<!ELEMENT zustand EMPTY>
<!ATTLIST zustand ledig CDATA #IMPLIED nuechtern CDATA #IMPLIED>

Diese DTD definiert somit die Struktur aller Party-beschreibenden XML-Dateien.


Rheinwerk Computing - Zum Seitenanfang

18.2.3 Schema – eine Alternative zu DTD  Zur nächsten ÜberschriftZur vorigen Überschrift

Ein anderes Verfahren, um die Struktur von XML-Dateien zu beschreiben, ist Schema. Es ermöglicht eine Strukturbeschreibung wie DTD nur in Form einer XML-Datei. Das vereinfacht das Parsen der Schema-Datei, da die Strukturbeschreibung und die Daten vom gleichen Dateityp sind. Ein Schema beschreibt im Gegensatz zu einer DTD die Datentypen der Elemente und Attribute einer XML-Datei viel detaillierter. Die üblichen Datentypen wie string, integer und double der gängigen Programmiersprachen sind bereits vorhanden. Weitere Datentypen wie date und duration existieren ebenfalls. Zusätzlich ist es möglich, eigene Datentypen zu definieren. Mit Schema kann weiterhin festgelegt werden, ob ein Element wie eine Ganzzahl in einem speziellen Wertebereich liegt oder ein String auf einen regulären Ausdruck passt. Die Vorteile sind eine genauere Beschreibung der Daten, die in einer XML-Datei dargestellt werden. Das macht aber auch die Strukturbeschreibung aufwändiger als eine DTD. Durch die detaillierte Beschreibung der XML-Struktur ist jedoch der Mehraufwand gerechtfertigt.

Party-Schema

Hier ist ein Beispiel für ein Schema, das die Struktur der Datei party.xml beschreibt:

Listing 18.4  party.xsd

<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

   <xsd:element name="party" type="partyType" />

   <xsd:complexType name="partyType">
      <xsd:sequence>
         <xsd:element name="gast" type="gastType" />
      </xsd:sequence>
      <xsd:attribute name="datum" type="datumType" />
   </xsd:complexType>

   <xsd:complexType name="gastType">
      <xsd:sequence>
         <xsd:element name="getraenk" type="xsd:string" />
         <xsd:element name="zustand" type="zustandType" />
      </xsd:sequence>
   </xsd:complexType>

   <xsd:simpleType name="datumType">
      <xsd:restriction base="xsd:string">
         <xsd:pattern value="[0-3][0-9].[0-1][0-9].[0-9]{4}" />
      </xsd:restriction>
   </xsd:simpleType>

   <xsd:complexType name="zustandType">
      <xsd:complexContent>
         <xsd:restriction base="xsd:anyType">
            <xsd:attribute name="nuechtern" type="xsd:boolean" />
            <xsd:attribute name="ledig" type="xsd:boolean" />
         </xsd:restriction>
      </xsd:complexContent>
   </xsd:complexType>

</xsd:schema>

In diesem Beispiel werden die Typen string (für die Beschreibung des Elements <getraenk>) und boolean (für die Beschreibung des Elements <ledig>) verwendet. Die Typen gastType und datumType sind selbst definierte Typen. Ein sehr einfacher regulärer Ausdruck beschreibt die Form eines Datums. Ein Datum besteht aus drei Gruppen zu je zwei Ziffern, die durch Punkte getrennt werden. Die erste Ziffer der ersten Zifferngruppe muss aus dem Zahlenbereich 0 bis 3 stammen.

In der Schema-Datei basieren die Typen datumType und zustandType auf vorhandenen Schema-Typen, um diese einzuschränken. So schränkt datumType den Typ string auf die gewünschte Form eines Datums ein, und zustandType schränkt den anyType auf die beiden Attribute nuechtern und ledig ein. Die Schreibweise erzeugt einen neuen Typ, der keinen Text als Inhalt enthält, sondern nur die beiden Attribute nuechtern und ledig erlaubt. Der Wert der beiden Attribute ist ein Wahrheitswert.

Simple und komplexe Typen

Ein XML-Schema unterscheidet zwischen simplen und komplexen Typen. Simple Typen sind alle Typen, die keine Unterelemente und keine Attribute haben, sondern nur textbasierten Inhalt.


Beispiel Das Element <getraenk> besteht nur aus einer Zeichenkette:

<xsd:element name="getraenk" type="xsd:string" />

Komplexe Typen können neben textbasiertem Inhalt auch Unterelemente und Attribute inkludieren.


Beispiel Das Element <gast> hat den Typ gastType und die Unterelemente <getraenk> und <zustand>:

<xsd:element name="gast" type="gastType" />
<xsd:complexType name="gastType">
  <xsd:sequence>
    <xsd:element name="getraenk" type="xsd:string" />
    <xsd:element name="zustand" type="zustandType" />
  </xsd:sequence>
</xsd:complexType>

Simple und komplexe Typen können andere Typen einschränken. Komplexe Typen können zusätzlich andere Typen erweitern. Beim Erweitern ist es möglich, mehrere Typen miteinander zu kombinieren, um einen neuen Typ mit Eigenschaften verschiedener Typen zu erschaffen.

Das vorige Beispiel kann nur einen kleinen Einblick in die Möglichkeiten von XML-Schemas geben. Eine umfangreiche Dokumentation ist unter der URL http://www.w3.org/XML/Schema vorhanden. Dort gibt es drei verschiedene Dokumentationen zum Schema:

  • Schema Part0 Primer: gut lesbares Tutorial mit vielen Beispielen
  • Schema Part1 Structures: genaue Beschreibung der Struktur einer Schema-Datei
  • Schema Part2 Datatypes: Beschreibung der Datentypen, die in XML-Schemas verwendet werden

Der erste Teil bietet eine grundlegende Einführung mit vielen Beispielen. Die beiden anderen Teile dienen als Referenzen für spezielle Fragestellungen.


Rheinwerk Computing - Zum Seitenanfang

18.2.4 Namensraum (Namespace)  Zur nächsten ÜberschriftZur vorigen Überschrift

Das Konzept des Namensraums ist besonders wichtig, wenn

  • XML-Daten nicht nur lokal mit einer Anwendung benutzt werden,
  • Daten ausgetauscht oder
  • XML-Dateien kombiniert werden.

Eine Überschneidung der Namen der Tags, die in den einzelnen XML-Dateien verwendet werden, lässt sich nicht verhindern. Daher ist es möglich, einer XML-Datei einen Namensraum oder mehrere Namensräume zuzuordnen.

Der Namensraum ist eine Verknüpfung zwischen einem Präfix, das vor den Elementnamen steht, und einer URI. Ein Namensraum wird als Attribut an ein Element (typischerweise das Wurzelelement) gebunden und kann dann von allen Elementen verwendet werden. Das Attribut hat die Form:

xmlns:Präfix="URI"

Dem Element, das den Namensraum deklariert, wird ein Präfix vorangestellt. Es hat die Form:

<Präfix:lokaler Name xmlns:Präfix="URI">

Das Präfix ist ein frei wählbares Kürzel, das den Namensraum benennt. Dieses Kürzel wird dem Namen der Elemente, die zu diesem Namensraum gehören, vorangestellt. Der Name eines Elements des Namensraums Präfix hat die Form:

<Präfix:lokaler Name>...</Präfix:lokaler Name>

Angenommen, wir möchten für unsere Party das Namensraum-Präfix geburtstag verwenden. Die URI für diesen Namensraum ist »http://www.geburtstag.de«. Der Namensraum wird in dem Wurzelelement party deklariert. Das Präfix wird jedem Element zugeordnet:

<geburtstag:party xmlns:geburtstag="http://www.geburtstag.de"
                  geburtstag:datum="31.12.01">
  <geburtstag:gast geburtstag:name="Albert Angsthase">
  </geburtstag:gast>
</geburtstag:party>

Eine weitere wichtige Anwendung von Namensräumen ist es, Tags bestimmter Technologien zu kennzeichnen. Für die XML-Technologien, etwa für Schemas, werden feste Namensräume vergeben.


Beispiel Namensraumdefinition für ein XML-Schema:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

Eine Anwendung, die XML-Dateien verarbeitet, kann anhand des Namensraums erkennen, welche Technologie verwendet wird. Dabei ist nicht das Präfix, sondern die URI für die Identifikation des Namensraums entscheidend. Für XML-Dateien, die eine Strukturbeschreibung in Form eines Schemas definieren, ist es üblich, das Präfix xsd zu verwenden. Es ist aber jedes andere Präfix möglich, wenn die URI auf die Adresse http://www.w3.org/2001/XMLSchema verweist. Diese Adresse muss nicht unbedingt existieren, und eine Anwendung kann auch nicht erwarten, dass sich hinter dieser Adresse eine konkrete HTML-Seite verbirgt. Die URI dient nur der Identifikation des Namensraums für eine XML-Datei.


Rheinwerk Computing - Zum Seitenanfang

18.2.5 XML-Applikationen *  topZur vorigen Überschrift

Eine XML-Applikation ist eine festgelegte Auswahl von XML-Elementen und einem Namensraum. XHTML ist eine XML-Applikation, bei der die XML-Elemente die HTML-Elemente zur Beschreibung von Webseiten sind. Durch die Beschränkung auf eine bestimmte Menge von Elementen ist es möglich, diese XML-Dateien für bestimmte Anwendungen zu nutzen. Der Namensraum legt fest, zu welcher Applikation die einzelnen XML-Elemente gehören. Dadurch können verschiedene XML-Applikationen miteinander kombiniert werden.

Eine bekannte XML-Applikation ist XHTML. Unterschiedliche DTDs beschreiben die Menge möglicher Tags. Für XHTML 1.0 sind es folgende:

  • XHTML1-strict.dtd: minimale Menge von HTML-Tags
  • XHTML1-transitional.dtd: die gängigsten HTML-Tags
  • XHTML1-frameset.dtd: HTML-Tags zur Beschreibung von Frames

Der Standard XHTML 1.1 geht noch einen Schritt weiter und bietet modulare DTDs an. Hier kann sehr genau differenziert werden, welche HTML-Tags für die eigene XML-Applikation gültig sind. Dadurch ist es sehr einfach möglich, XHTML-Elemente mit eigenen XML-Elementen zu kombinieren. Durch die Verwendung von Namensräumen können die XHTML- und die XML-Tags zur Datenbeschreibung unterschieden werden.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen. >> Zum Feedback-Formular
 <<   zurück
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Java ist auch eine Insel






 Java ist auch
 eine Insel


Zum Katalog: Java SE Bibliotheken






 Java SE Bibliotheken


Zum Katalog: Professionell entwickeln mit Java EE 7






 Professionell
 entwickeln mit
 Java EE 7


Zum Katalog: Einstieg in Eclipse






 Einstieg in
 Eclipse


Zum Katalog: Einstieg in Java






 Einstieg in
 Java


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2011
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> 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.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de