Es gibt einen Artikel mit dem Titel " Grundsätze des XML-Designs: Wann man Elemente und wann man Attribute verwendet " auf der IBM-Website.
Auch wenn es nicht viele feste Regeln zu geben scheint, werden in dem Beitrag einige gute Leitlinien genannt. Eine der Empfehlungen lautet beispielsweise, Elemente zu verwenden, wenn Ihre Daten nicht auf Leerraum normalisiert werden dürfen, da XML-Prozessoren Daten innerhalb eines Attributs normalisieren und dadurch den Rohtext verändern können.
Ich beziehe mich von Zeit zu Zeit auf diesen Artikel, wenn ich verschiedene XML-Strukturen entwickle. Hoffentlich ist er auch für andere hilfreich.
edit - Von der Website:
Prinzip des Kerninhalts
Wenn Sie die betreffende Information als Teil des wesentlichen Materials betrachten, das in der XML-Datei ausgedrückt oder übermittelt wird, fügen Sie sie in ein Element ein. Bei für den Menschen lesbaren Dokumenten bedeutet dies im Allgemeinen den Kerninhalt, der dem Leser mitgeteilt wird. Bei maschinenorientierten Datensatzformaten handelt es sich im Allgemeinen um die Daten, die direkt aus dem Problembereich stammen. Wenn Sie der Meinung sind, dass die Informationen peripher oder beiläufig zur Hauptkommunikation sind oder lediglich dazu dienen, Anwendungen bei der Verarbeitung der Hauptkommunikation zu unterstützen, verwenden Sie Attribute. Auf diese Weise wird vermieden, dass der Kerninhalt mit Zusatzmaterial überfrachtet wird. Für maschinenorientierte Datensatzformate bedeutet dies im Allgemeinen anwendungsspezifische Notationen zu den Hauptdaten aus dem Problembereich.
Ich habe zum Beispiel viele XML-Formate gesehen, die in der Regel von Unternehmen selbst entwickelt wurden und bei denen der Titel des Dokuments in einem Attribut enthalten war. Meiner Meinung nach ist ein Titel ein so grundlegender Bestandteil der Kommunikation eines Dokuments, dass er immer im Elementinhalt stehen sollte. Andererseits habe ich oft Fälle gesehen, in denen interne Produktkennungen als Elemente in beschreibende Datensätze des Produkts eingefügt wurden. In einigen dieser Fälle waren Attribute besser geeignet, da der spezifische interne Produktcode für die meisten Leser oder Bearbeiter des Dokuments nicht von primärem Interesse war, insbesondere wenn die Kennung ein sehr langes oder undurchschaubares Format hatte.
Sie haben vielleicht schon einmal den Grundsatz gehört, dass Daten in Elemente und Metadaten in Attribute gehören. Die beiden obigen Absätze drücken eigentlich dasselbe Prinzip aus, allerdings in einer bewussteren und weniger unscharfen Sprache.
Grundsatz der strukturierten Information
Wenn die Information in strukturierter Form ausgedrückt wird, insbesondere wenn die Struktur erweiterbar ist, sollten Elemente verwendet werden. Andererseits: Wenn die Information als atomares Token ausgedrückt wird, verwenden Sie Attribute. Elemente sind der erweiterbare Motor für den Ausdruck von Struktur in XML. Fast alle XML-Verarbeitungstools sind auf diese Tatsache ausgerichtet, und wenn Sie strukturierte Informationen richtig in Elemente zerlegen, werden Sie feststellen, dass Ihre Verarbeitungstools Ihr Design ergänzen und dass Sie dadurch an Produktivität und Wartbarkeit gewinnen. Attribute sind dazu gedacht, einfache Eigenschaften der in einem Element dargestellten Informationen auszudrücken. Wenn Sie der grundlegenden Architektur von XML zuwiderhandeln, indem Sie strukturierte Informationen in Attribute zwängen, gewinnen Sie vielleicht ein wenig Zeitersparnis und Bequemlichkeit, aber Sie werden wahrscheinlich mit Wartungskosten bezahlen.
Datteln sind ein gutes Beispiel: Ein Datum hat eine feste Struktur und fungiert im Allgemeinen als einzelnes Token, so dass es als Attribut sinnvoll ist (vorzugsweise in ISO-8601 ausgedrückt). Die Darstellung von Personennamen hingegen ist ein Fall, bei dem ich erlebt habe, dass dieses Prinzip die Designer überrascht hat. Ich sehe oft Namen in Attributen, aber ich habe immer dafür plädiert, dass Personennamen im Elementinhalt stehen sollten. Ein Personenname hat eine überraschend variable Struktur (in manchen Kulturen kann man Verwirrung oder Beleidigung stiften, indem man Ehrentitel weglässt oder eine bestimmte Reihenfolge der Namensteile annimmt). Ein Personenname ist auch selten ein atomares Token. So kann es beispielsweise vorkommen, dass Sie nach einem Vornamen und manchmal nach einem Nachnamen suchen oder sortieren möchten. Ich sollte darauf hinweisen, dass es ebenso problematisch ist, einen vollständigen Namen in den Inhalt eines einzelnen Elements zu zwängen, wie ihn in ein Attribut zu packen.