Hallo Tim,
Ich bin wirklich erstaunt gewesen, dass Atom so ein "wirft doch alles hinein und rühre kräftig daran" Prinzip für die innere Struktur hat. Ich habe die Entwicklung dabei nicht verfolgt, aber ich frage mich, warum man nicht eine vernünfige Schema genommen hat.
Die Frage ist auch, wofür man denn mehr bzw. festere innere Struktur braucht. Eigentlich gar nicht. Eine Reihenfolge der Einträge? Lohnt sich nicht. Erstens sortieren die meisten Aggregatoren eh nach Datum, [...]
Und was gibt es sonst für notwendige festere Strukturen in einem Feed? [...] Gibt es ja schon teilweise, die Metadaten in einem Feed müssen vor den Einträgen kommen.
Es geht nicht darum ob und wenn wie atom:entry-Einträge sortiert werden sollen. Sondern darum welche Reihenfolge der Elemente überhaupt haben kann.
Lese man http://www.atompub.org/rfc4287.html#element.entry: "This specification assigns no significance to the order of appearance of the child elements of atom:entry."
Dagegen wird bei atom:feed folgendes gesagt "Its element children consist of metadata elements followed by zero or more atom:entry child elements."
Die zweite Aussage impliziert doch, dass im Feed erst die Metadaten dann die Einträge stehen, der erste dagegen sagt, dass es (innerhalb vom atom:entry) vollkommen egal ist, in welcher Reihnefolge die Elemente stehen. Das ist schon mal inkonsequent, vor allem wenn man bedenkt, dass ein atom:entry ebenfalls als top-level-Element stehen kann.
Eine weitere Inkonsequenz in meinen Augen ist atom:id, von der gesagt wird "The "atom:id" element conveys a permanent, universally unique identifier for an entry or feed." und an einer anderen Stelle heisst es "If multiple atom:entry elements with the same atom:id value appear in an Atom Feed Document, ...".
Wir können - müssen aber nicht - darüber diskutieren, dass es sinvoll ist (in verbindung mit atom:update) etc. das ändert aber nichts an der Inkonsequenz der Formulierungen (etweder ist etwas "universally unique" oder nicht, ein bisschen schwanger geht auch nicht)
Aber sonst? Letztendlich braucht Validierung der Struktur da ja nur die Eltern-Kind-Beziehungen, die Kardinalität, die Existenz von Erforderlichen Elementen und die Datentypen zu überprüfen. Was braucht man da mehr, das nur den Autor in ein Korsett sperren würde?
Das hört sich so an, als ob es viele viele Leute gäbe die ihre Feeds per Hand schreiben. Ich zweifle daran. Beim Schreiben eines Feed-Generators wäre es durchaus sinnvol zu sagen, welche Reihenfolge Elemente haben müssen. Eine Struktur wie:
autor
content
autor
id
category
autor
category
contibutor
autor
category ... etc.
finde ich nicht wirklich sinnvoll.
Grüße
Thomas