was sagt xml über die reihenfolge der elemente aus?



  • howdy,

    ist die reihenfolge von elementen in xml bindend? d.h. sowas:

    <foo>
    <bar>eins</bar>
    <bar>zwei</bar>
    </foo>
    

    ist nicht dasselbe wie

    <foo>
    <bar>zwei</bar>
    <bar>eins</bar>
    </foo>
    

    ?
    oder sollte ich lieber

    <foo>
    <bar index="1">eins</bar>
    <bar index="2">zwei</bar>
    </foo>
    

    ?



  • Inwiefern bindend? Xml ist es egal. Kommt eher drauf an, ob dein Datenformat eine bindende Reihenfolge will.


  • Administrator

    Im XML Standard steht nichts dazu. Leider.
    Sowas verlangen kannst du über XSD (XML-Schema: http://de.wikipedia.org/wiki/XML_Schema), allerdings nur XSD über DTD geht das nicht. Das Problem ist allerdings, dass viele kleine XML Bibliotheken kein XSD unterstüten. Wenn sie es tun, sind sie meistens riesige Brocken.

    Grüssli



  • moinsen,

    Dravere schrieb:

    Im XML Standard steht nichts dazu. Leider.
    Sowas verlangen kannst du über XSD (XML-Schema: http://de.wikipedia.org/wiki/XML_Schema), allerdings nur XSD über DTD geht das nicht. Das Problem ist allerdings, dass viele kleine XML Bibliotheken kein XSD unterstüten. Wenn sie es tun, sind sie meistens riesige Brocken.

    Grüssli

    ich seh' gerade nicht, wie ich kenntlich mache, dass die reihenfolge für die semantik wichtig ist... nur, wie ich die reihenfolge verschiedener elemente (mit sequence) erzwinge 😕



  • Dravere schrieb:

    Sowas verlangen kannst du über XSD

    Bist du dir da sicher und kannst du mal ein Beispiel dafür geben? Ich hab in Erinnerung, dass man die Reihenfolge bei unterschiedlich benannten Elementen bestimmen kann (bei XSD als auch bei DTD), aber nicht die Reihenfolge gleich-benannter Elemente.

    edit: Sehe schon, Fuuuuu zweifelt auch 😃



  • Erm. Mal ganz doof...
    XHTML ist doch 100% gültiges XML, ja?
    Und in XHTML ist die Reihenfolge von Emelenten wie <p> oder auch <li> doch *sehr* wichtig.

    Würde man sich nun weit aus dem Fenster lehnen wenn man daraus folgert dass die Reihenfolge von Elementen in XML "wohldefiniert" ist (halt einfach "so wie sie in der Datei stehen"), und daher auch von diversen Tools/Libraries/... nicht verändert werden darf? (Natürlich nur solange diese Veränderung nicht explizit erwünscht ist, was ja auch sein kann -- Sortiertools oder was auch immer.)

    Im Prinzip betrifft das ja eh nur Programme die ein beliebiges (unbekanntes) XML Format lesen, ggf. modifizieren, und wieder schreiben. Die dürfen dann halt die Reihenfolge nicht ändern. Und natürlich Libraries beim Enumerieren der Elemente - bloss das Thema Libraries ist einfach zu handhaben: man sucht sich halt ne Library welche es "richtig" macht 🙂



  • Ist mir grad eingefallen: Wahrscheinlich sollte man da eher in der DOM- (bzw. SAX-) Spezifikation nachschlagen. Da könnte ich mir schon vorstellen, dass die Reihenfolge als "relevant" geregelt ist.



  • xml parser müssen die elemente einer xml struktur in genau der reihenfolge liefern, in der sie definiert wurden. liegen sie in zwei strukturen in unterschiedlicher reihenfolge vor, so sind diese auch als unterschiedlich zu betrachten. aber über sortierung, und darum geht es hier, sagt die xml spezifikation nichts aus.



  • saxon schrieb:

    aber über sortierung, und darum geht es hier,

    Nein. Wenn du dir nochmal den ersten Post ansiehst dann gehts genau darum ob die Reihenfolge binden ist, d.h. ob <x>A</x><x>B</x> das selbe ist wie <x>B</x><x>A</x> - und wie du selbst (und andere) schon beantwortet hast ist es nicht das Selbe, d.h. die Reihenfolge IST bindend und Fuuuuu kann auf das zusätzliche Index-Attribut verzichten.


Anmelden zum Antworten