molily: mit JS Daten aus einer XML-Datei direkt ansprechen

Beitrag lesen

Hi!

getElementById kannst du aber nur nutzen, wenn du das Attribut id auch als id-Typ definierst und auch verwendest.
Das ist bei dir ja nicht der Fall.

Um den Attributtyp zu kennen, müsste der Browser die DTD oder sonst eine Grammatik lesen. Das tut er nicht, die Browser setzen in diesem Fall einen nicht-validierender XML-Parser ein, der eine eventuell angegebene DTD ignoriert.

Außerdem halten sich die neueren Browser an die Definition von getElementById und IDs aus DOM4. Das gilt auch für XML-Dokumente:
http://dom.spec.whatwg.org/#concept-id
http://dom.spec.whatwg.org/#dom-document-getelementbyid
DOM4 macht es sich da ganz einfach. Eine ID bekommt ein Element durch ein Attribut namens »id«. Grammatiken und Namensräume sind außen vor.

(Übrigens gäbe es ja noch xml:id, aber das setzt kein Browser um, soweit ich weiß, und DOM Core hat auch nie darauf aufgebaut.)

Wie gesagt, am einfachsten kommst du sicher mit jQuery ans Ziel, wobei ich Bedenken hätte, ein XML-Element mit CSS Selektoren zu bestimmen. Das funktioniert zwar, ist aber nicht gtanz sauber.

Wieso? CSS-Selektoren sind genauso wie XPath nur eine Sprache, die zum Auswählen von Elementen/Knoten erfunden wurde. Beide sind auf XML-Dokumente anwendbar. Für die Interpretation beider hat der Browser native JavaScript-Methoden. CSS-Selektoren sind i.d.R. einfacher als XPath. CSS-Selektoren kommen dank jQuery und querySelector(All) überall im Frontend vor, XPath höchstens bei meist serverseitigen XSL-Transformationen.

Grüße,
Mathias