[XML] Wann Content, wann Attribut?
-
Hi,
ich stehe aktuell vor folgender Frage, zu der ich bisher keine richtige "Faustregel" gefunden habe: Wann soll man Content benutzen und wann ein Attribut.
Welche schreibweise ist besser und warum?
<document version="1.0"> <elements> <element id="hello-world">Hallo Welt,</element> <element id="my-son">mein Sohn</element> </elements> </document> <document version="1.0"> <elements> <element id="hello-world" value="Hallo Welt" /> <element id="my-son" value="mein Sohn" /> </elements> </document>
Ich persönlich ziehe Letztere vor, da "element" keine Childs hat und Content (für mich jedenfalls) nur für Childs da ist. Aber da frage ich doch besser mal die Profis.
-
Die erste. Versuch doch mal in der 2ten nen Text einzutragen der ne CDATA section braucht. Ich würde nicht mal die id als attribut speichern. Haben Attribute irgend nen Vorteil, außer das sie kompakter (und vlt einfacher zu parsen) sind?
<document version="1.0"> <elements> <element> <id>hello-world</id> <value>Hallo Welt</value> </element> </elements> </document>
-
Attribute machen nur wirklich Sinn, wenn man XML so verwendet, wie es entworfen wurde. Als Markup-Language. Dann ist die Frage auch einfach. Alle Metadaten in die Attribute. Wenn man XML als Datenformat (miss)braucht, dann sollte man am besten auf Attribute verzichten, da die Darstellung vereinfacht wird.
-
Oder man verwendet RDF/XML, da sind Attribute und Elemente fast gleichwertig.
-
Als Faustformel mache ich es so:
Die "eigentlichen Daten" kommen in den Content, und Attribute stellen eine zusätzliche Beschreibung der Daten dar.
-
Wie sieht das aus, wenn ich ein Flag darstellen möchte?
Ist das hier sinnvoll:<flagelement flag1="1" flag2="0" flag3="1" />
Oder besser einzeln?
<flag1>1</flag1>
<flag2>0</flag2>
<flag3>0</flag3>
-
Meine Meinung: In den meisten Fällen wurscht! Wer will schon XML lesen? Soll der Rechner machen. Also kann ers auch gleich generieren. Und dafür gibts ja genug Libs.
-
Wann Attribute verwenden ist zum Glück mal eine Frage, die hier noch nie besprochen worden ist:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-175633.html
http://www.c-plusplus.net/forum/viewtopic-var-t-is-171318.html
http://www.c-plusplus.net/forum/viewtopic-var-t-is-141799.html