fjh: Namespaces und Gültigkeit von Dokumenten

Beitrag lesen

Hallo Oli,

Ich beschäftige mich momentan im Anfängerstadium mit XML. Was ich bis jetzt noch nicht ganz begriffen habe, ist der Zusammenhang von der Gültigkeit von XML-Dokumenten und dem Auftreten von Namensräumen: In einem Buch (XML Professional, den genauen Titel weiß ich leider nicht mehr) erinnere ich mich gelesen zu haben, sobald ein Namespace-Attribut in einem Dokument vorkommt, sei dieses nicht mehr gültig. Ist dem tatsächlich so?

Nicht ganz.
Richtig ist allerdings, dass Gültigkeit und der Gebrauch von Namespaces in gewissem Sinne kollidieren.
Hast du ein gültiges XML-Dokument und möchtest nun in diesem Dokument z.B. XHTML-Tags verwenden, dann gibst du den Namensraum für XHTML an und baust die XHTML-Element ein. Folge ist aber, dass dein Dokument dann nicht mehr gültig ist, da diese Element nirgendwo deklariert wurden.Die URIs zur Namensraumdefinition verweisen auf keine DTD, die ein Parser laden könnte, um dort die Deklarationen für die hinzugefügten XHTML-Elemente zu finden. Sie dienen lediglich als eindeutige Bezeichnung.[*] Es ist auch nicht möglich zwei DTDs anzugeben (zwei Dokumenttyp-Deklarationen) für ein XML-Dokument.
Einziger Ausweg: Deklaration der hinzugefügten Elemente in deiner DTD (mit Namensraumpräfix). Aber was machst du, wenn du mittels externer Entity ein XML-Fragment einbindest, welches Elemente enthält, die du nicht kennst und die auch nicht aus deiner DTD stammen?

Gültigkeit und Namensräume sind also für sich genommen beide sinvolle Konzepte, aber in Verbindung kanns problematisch werden. XML-Schema schafft dort Abhilfe.

[*] Interessant zu diesem Thema übrigens RDDL: http://www.xml.com/pub/a/2001/02/28/rddl.html

Gruß
Franz