Tim Tepaße: IDs in XML

Beitrag lesen

<Adresse>Westfahlenweg 4</Adresse>

Hier ist ein Feler.

Ich halte Bademeisters Vorschläge für sinnvoll, schon allein, weil sie unübersichtlicher sind. Aber das hängt natürlich von Deiner Anwendung ab.

Ich vermute, dass diese Struktur nicht funktioniert, weil bei Kunden und Ort eine id vorkommt?

Effektiv gibt es keine Probleme, ein Attribut namens "id" in seinem XML-Dialekt zu nutzen. Es ist nur keine ID im XML-Sinne, es ist nur ein beliebiges Attribut namens "id". XML-ID-Natur hat ein Attribut nicht automatisch, nur weil es so heisst. ID-Natur heisst, dass es in XML-Parsern als ID verarbeitet wird und man es hinterher z.B. in DOM-Applikationen mittels document.getElementById("dings") bzw. in XPath mit id() zu finden ist.

Der Weg, ein beliebig benanntes Attribut mit ID-Natur auszustatten, geht über Document Type Definitions, die Grammatiken, die das Vokabular des eigenen XML-Dialekts maschinenlesbar definieren können. Dieses SELFHTML-Beispiel stattet das Attribut "isbn" mit ID-Natur aus. Das Problem ist aber, dass man die DTD inline in seinem XML-Dialekt ausliefern oder referenzieren muss. Und der XML-Parser muss ein validierender XML-Parser sein; einer, der die DTDs beachtet. Die meisten sind das nicht, z.B. Webbrowser machen das meist nicht.

Oder man nutzt das Attribut xml:id. Effektiv ist das ein ID-Attribut (im vordefinierten Namensraum mit dem Prefix "xml"), dass in allen XML-Dialekten zur Verfügung stehen sollte, ohne, dass man groß was definieren muss. Viele Parser haben das auch implementiert.