5. XML, Elemente, Attribute, NamespacesViele Web-Service-Toolkits (z.B. JWSDPund ApacheSOAP / AXIS) vereinfachen den Umgang mit Web Servicesund SOAP, so dass ein tieferes Verständnis der XML-Internameistens nicht notwendig ist. Trotzdem ist ein gewissesGrundverständnis vorteilhaft. Die Spezifikation von XML finden Sie unter http://www.w3.org/XML. Wie XML von Java aus gelesen und bearbeitet werden kann,
ist erklärt in java-xml.htm.
Die Syntax von XML ähnelt etwas der von HTML. Auch XML
verwendet in spitzen Klammern ("<...>")
eingefasste Tags. Aber es gibt mehr Unterschiede als
Gemeinsamkeiten: Bei XML müssen alle Tags wieder
geschlossen werden, nach "<meintag>" muss
"</meintag>" folgen (bzw. es wird
"<meintag/>" verwendet). Das zuletzt
geöffnete Tag muss als erstes geschlossen werden, bevor ein
anderes geschlossen wird. Anders als HTML ist XML "case
sensiteve", Groß-/Kleinschreibung wird unterschieden.
HTML beschreibt mehr das Erscheinungsbild des
übermittelten Inhalts. XML dagegen beschreibt die Art der
Daten und strukturiert sie inhaltlich.
XML-Dokumente sind in Unicode kodiert und beginnen in der
ersten Zeile mit einer "processing Instruction",
die zum Beispiel lauten kann:
<?xml version="1.0"
encoding="UTF-8"?>
Weiter besteht das XML-Dokument aus XML-Elementen. Diese
können XML-Kindelemente beinhalten, die wiederum weitere
enthalten. Außerdem können den Elementen Attribute
hinzugefügt werden. Eine einfache XML-Datei könnte so
aussehen:
<?xml version="1.0" encoding="UTF-8"?>
<xmlelement1>
<xmlelement2>
<xmlelement20> Wert21 </xmlelement20>
</xmlelement2>
<xmlelement3 attrname3="AttributWert3">
<xmlelement30 attrname31="AttributWert31" attrname32="AttributWert32" />
</xmlelement3>
</xmlelement1>
|
XML-Elemente repräsentieren eine Dateneinheit und
beginnen mit dem Start-Tag (z.B.
"<meintag>") und enden mit dem Ende-Tag
(z.B. "</meintag>") beziehungsweise
kombinieren beide Tags (z.B. "<meintag/>").
XML-Attribute sind beliebige Name/Werte-Paare (z.B.
attrname="AttrWert"), die im Start-Tag eines
XML-Elements eingefügt werden.
Damit bestimmte Bezeichner in verschiedenen
Zusammenhängen mit unterschiedlicher Bedeutung benutzt
werden können, macht XML sehr ausgiebig Gebrauch vom
Konzept der Namespaces. Namespaces sind Namensräume,
vergleichbar in etwa mit den Packages in Java.
Eine XML-Datei mit Namespaces könnte zum Beispiel so
aussehen:
<?xml version="1.0" encoding="UTF-8"?>
<subjects
xmlns="https://www.meinedomain.de/xyz1"
xmlns:myns="https://www.meinedomain.de/xyz2"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://www.meinedomain.de/xyz1 MySchema1.xsd
https://www.meinedomain.de/xyz2 MySchema2.xsd">
<subject name="Bücher">
<category name="Java">
<book title="Java in 3 Tagen" myns:size="dünn">
<myns:category>Paperback</myns:category>
<myns:price currency="Euro" value="3.50"/>
</book>
<book title="Java in 333 Tagen" myns:size="dick">
<myns:category>Hardcover</myns:category>
<myns:price currency="Euro" value="59.50"/>
<myns:price currency="USD" value="49.99"/>
</book>
</category>
<category name="SOAP">
<book title="SOAP mit Java">
</book>
<book title="SOAP mit .NET">
</book>
</category>
</subject>
</subjects>
|
"xmlns="https://www.meinedomain.de/xyz1""
definiert den zu benutzenden Namespace, wenn kein
Namespace-Name angegeben wird, also den "default
Namespace".
"xmlns:myns="https://www.meinedomain.de/xyz2""
definiert den Namespace für den Namespace-Bezeichner
"myns".
Die in beiden Fällen verwendeten Zeichenketten in den
doppelten Hochkommas ("...") in der Form von URLs
sind keine URLs, sondern URIs.
Eine URL (Uniform Resource Locator) lokalisiert eine
Ressource (gibt also die Adresse an).
Eine URN (Uniform Resource Name) gibt keinen Ort an, aber
identifiziert eine Ressource über einen eindeutigen Namen,
vergleichbar mit den UUIDs bei IDL oder den GUIDs bei COM.
Eine URI (Uniform Resource Identifier) kann eine URL oder
URN sein.
"xsi:schemaLocation="https://www.meinedomain.de/xyz1
MySchema1.xsd https://www.meinedomain.de/xyz2 MySchema2.xsd"
ordnet den beiden URIs jeweils eine .xsd-Schema-Datei zu (im
Beispiel die Dateien "MySchema1.xsd" und
"MySchema2.xsd"). .xsd-Schema-Dateien ersetzen
DTDs (Document Type Definitions). Sie enthalten "<xs:schema/>"
als Root-Element und definieren die Datenstruktur. Sie
definieren zum Beispiel, welche Datenelemente und Attribute
zwingend notwendig oder optional sind, wie oft sie auftreten
dürfen und welche Bedeutung sie haben.
"category" kommt im Beispiel mehrfach
in zwei verschiedenen Zusammenhängen vor, die durch die
unterschiedlichen Namespaces auseinandergehalten werden
("category" und "myns:category").
Namespaces können, wie hier im Beispiel, zu Beginn
definiert werden. Die Definition kann aber auch mitten im
Dokument erfolgen. Oft erfolgt sie in dem Tag, in dem sie
das erste Mal benutzt wird, und zwar nach dieser ersten
Benutzung. Also zum Beispiel so:
"<myns:category
xmlns:myns="https://www.meinedomain.de/xyz2"/>"
Weiteres zu Namespaces finden Sie unter http://www.w3.org/TR/REC-xml-names.
|