Q: Warum sind XML-Dokumente streng hierarchisch als Baum konzipiert? Wäre eine Organisation als Wald (d.h. die Zulassung von mehr als genau einem Wurzelknoten) nicht flexibler?
A: Hierfür gibt es zwei wesentliche Gründe.
Zum einen sind Bäume ein sehr verbreitetes, gut verstandenes und gut untersuchtes Gebiet, so daß für dies
Strukturierungsform eine Fülle verschiedener effizienter Algorithmen zur Verarbeitung existiert.
Zu anderen erlaubt die strenge Hierarchisierung von XML den Verzicht auf ein explizites Stromendesymbol
(ähnlich einem hervorgehobenen End-of-File Zeichen), da das schließende Tag des Starttags des Wurzelknotens automatisch
das Dokument begrenzt. Dieser Aspekt ist insbesondere bei der nicht-dateigebundenen Vererbeitung, etwa bei
der Übertragung von XML-Inhalten über Netzleitungen, wichtig, da hierdurch die XML-verarbeitende Kompontente einfacher
realisiert werden kann.
Q: Warum müssen die einzelnen Einträge einer Liste von Zeichenketten immer in Elemente oder Attribute
eingekleidet werden, obwohl mit list
eine Möglichkeit zur Bildung von aggregierten Typen besteht?
A: Zwar ist es ohne weiteres syntaktisch möglich eine vermeintliche Stringliste anzulegen, etwa durch nachstehde Definition:
<xs:element name="Document">
<xs:complexType>
<xs:sequence>
<xs:element name="StringList1" type="stringListType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="stringListType">
<xs:list itemType="xs:string"/>
</xs:simpleType>
</xs:element>
Jedoch leistet die Lösung nicht das Gewünschte.
Dies liegt in der lexikalischen Natur des Datentypen string
aus XML-Schema Part 2 begründet.
Dieser umfaßt neben den Alphabetsymbolen verschiedener Sprachen auch das Leerzeichen (0x20), den Tabulator (0x09)
sowie die Zeichen für Zeilenumbruch (0x0A) und Wagenrücklauf (0x0D), die als Separatoren der einzelnen Einträge
dienen.
Daher würde die Zeichenkette this is a string
nicht als genau ein Eintrag der StringList1
interpretiert, sondern als vier separate Strings betrachtet werden.
Aus diesem Grunde sollten, sofern Leerzeichen in Zeichenketten generell zugelassen sind, die Einzelzeichenketten als eigenständige Attribut- oder Elementinhalte modelliert werden.
Q: Weshalb ist das nachfolgend wiedergegebene Dokument gültig (valid und sogar schema valid)
zur abgedruckten DTD und zum dargestellten Schema, obwohl es formatierende Leerzeichen enthält, die gemäß
den formulierten Inhaltsmodellen (es tritt weder PCDATA
noch mixed content auf) nicht
zugelassen sind?
XML-Dokument:
<?xml version="1.0" encoding="UTF-8"?>
<Root>
<Child/>
</Root>
Document Type Definition:
<!ELEMENT Root (Child)>
<!ELEMENT Child EMPTY>
XML Schema:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="Root">
<xs:complexType>
<xs:sequence>
<xs:element name="Child">
<xs:complexType/>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
A: Die XML-Spezifikation gestattet im Abschnitt über Elementinhalte
ausdrücklich das Auftreten von separierenden white spaces
zur Formatierung der Kindelemente.
Die muß nicht durch die DTD oder das zugehörige XML Schema ausgedrückt werden, sondern ist unabhängig davon immer
zugelassen.
Auf der anderen Seite bedeutet dies auch, daß in der Konsequenz niemals mit den Mitteln der DTD oder eines Schemas
das Auftreten von formatierenden white spaces unterbunden werden kann.
Q: Sind die XPath-Ausdrücke /node1/node3/node8/self::node8
,
/node1/node3/node8/self::*
und /node1/node3/node8/self
äquivalent?
A: /node1/node3/node8/self::*
und /node1/node3/node8
sind gleichwertig und
liefern daher dieselbe Knotenmenge -- welche nur aus dem Knoten node8
besteht -- als
Resultat./node1/node3/node8/self
ist hingegen kein syntaktisch korrekter XPath,
da nach der Benennung der Achse -- in diesem Falle
self
zwingend der Name eines Knotens (d.h. der
Knotentyp) stehen muß. Hierbei sind auch Jokerzeichen wie
*
zugelassen, jedoch darf diese Angabe keinesfalls
fehlen.
Service provided by Mario Jeckle
Generated: 2004-06-11T07:12:03+01:00
Feedback SiteMap
This page's original location: http://www.jeckle.de/vorlesung/xml/FAQ.html
RDF description for this page