Piremilok
24-09-2008, 11:30
Hallo,
ich bin auf der Suche nach einer sinnvollen Erklärung, wann man bei einer XML die Daten als Attribute schreibt und wann als eigenen Tag?
Ich möchte Events in eine XML-Datei exportieren und habe bisher jede Eigenschaft als eigenen Tag verwendet:
<events>
<event id="5">
<datum>01.01.2009</datum>
<beginn>20.00 Uhr</beginn>
<ort>Berlin</ort>
...
<bemerkung>Essen und Trinken im Preis enthalten</bemerkung>
</event>
</events>
Ich mein,s owas wie Beginn, Einlass, etc. könnte ich auch als Attribute des Tags z.B. <allgemeines> schreiben.
Gibt es hierfür vielleicht irgendeine Richtlinie?
Und: worauf sollte ich achten, wenn ich die XML-Datei später in Excel öffnen möchte und ein brauchbares Ergebnis erhalten möchte?
vielen Dank.
gruß
Piremilok
Quetschi
24-09-2008, 12:24
Obwohl ich sehr viel mit (zugegebenermaßen recht einfachen) Xml's werkle, muss ich sagen dass ich mir diese Frage auch immer mal wieder selber stelle und ich hier immer eher "nach Gefühl" vorgehe - und dieses "Gefühl" sagt mir, dass du mit deiner momentanen Struktur schon richtig dran bist - also begin und datum nicht als Attribut notieren - hättest du für ein Event zum Beispiel 2 Termine, könntest du nicht zweimal das Attribut begin und datum in einem "Event"-Tag notieren, dagegen könnte es aber z.B. so aussehen
<events>
<event id="5">
<termin>
<datum>01.01.2009</datum>
<beginn>20.00 Uhr</beginn>
</termin>
<termin>
<datum>02.01.2009</datum>
<beginn>20.00 Uhr</beginn>
</termin>
<ort>Berlin</ort>
...
<bemerkung>Essen und Trinken im Preis enthalten</bemerkung>
</event>
</events>
Zu Excel kann ich dir leider nix sagen.
Piremilok
24-09-2008, 14:39
Hi,
genau das wäre nämlich das Problem.
Termine mit mehren Datums baue ich auch so auf, dass ich mehrere Datum-Tags verwende und die Terminspezifischen Daten dort reinpacke.
Bei Eingaben mit Zeilenumbrüchen verwende ich sowieso immer einen eigenen Tag.
Aber nehmen wir z.B. die Event-Nr.:
Ich habe sie in diesem Beispiel als Attribut reingepackt.
Aber derzeit schreibe ich sie als eigenen Tag in das Event.
Theoretisch ist ja beides richtig, denn es kommt immer drauf an, wie man das in der DTD definiert.
Aber gibt es einen "guten" Stil?
Wenn ein Attribut eigene Attribute braucht, muss man ein Element draus machen. Das ist im Grunde die einzige Faustregel.
Quetschi
24-09-2008, 14:53
Also die id ist als Attribut IMHO an der richtigen Stelle. Warum? Die id ist ja lediglich der eindeutige Bezeichner des Datensatzes und hat ansonsten eigentlich gar nix mit dem "Objekt" Event zu tun - hat deine DB-Tabelle vielleicht auch noch einen Timestamp der einfach die letzte Änderung enthält, so würd ich den auch noch als Attribut in event notieren.
Quetschi
24-09-2008, 15:05
Original geschrieben von unset
Wenn ein Attribut eigene Attribute braucht, muss man ein Element draus machen. Das ist im Grunde die einzige Faustregel. Hmm - IMHO müsste man noch ergänzen, dass man ein Element draus machen muss wenn ein Attribut mehrfach vorkommen kann, weil man nicht zwei- oder mehrmals das gleiche Attribut notieren kann.
Obwohl man davon dann mal abgesehen ansonsten alles als Attribut in ein Tag packen könnte, wäre es IMHO dann doch irgendwie "schlechter Stil" dies wirklich zu tun.
Abgesehen davon, dass du nicht alles als Attribut in ein Element packen kannst, sind deine Ergänzungen natürlich schon vorrausgesetzt!
Quetschi
24-09-2008, 15:28
Original geschrieben von unset
Abgesehen davon, dass du nicht alles als Attribut in ein Element packen kannst... och - irgendwie lässt sich bestimmt alles in ein Attribut "hineincodieren"... :goth: :D