In XML gibt es keine Regeln, wenn Attribute zu verwenden, und wenn Kind-Elemente zu verwenden.
Verwendung von Elementen vs. Attribute
Die Daten können in untergeordneten Elemente oder in Attributen gespeichert werden.
Werfen Sie einen Blick auf diese Beispiele:
<person sex="female">
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
<person>
<sex>female</sex>
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
Im ersten Beispiel Sex ist ein Attribut. Im letzten, Sex ist ein untergeordnetes Element. Beide Beispiele zeigen die gleichen Informationen.
Es gibt keine Regeln, wenn Attribute zu verwenden, und wenn Kind-Elemente zu verwenden. Meine Erfahrung ist, dass Attribute in HTML dienlich sind, aber in XML sollten Sie versuchen, sie zu vermeiden. Verwenden Kind-Elemente, wenn die Informationen wie Daten anfühlt.
My Favorite Way
I like to store data in child elements.
Die folgenden drei XML-Dokumente enthalten genau die gleichen Informationen:
Ein Datum Attribut wird im ersten Beispiel verwendet:
<note date="12/11/2002">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
Ein Datum Element wird im zweiten Beispiel verwendet:
<note>
<date>12/11/2002</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
Ein erweitertes Datum Element wird in der dritten verwendet: (THIS IS MY FAVORITE) :
<note>
<date>
<day>12</day>
<month>11</month>
<year>2002</year>
</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
Vermeiden Sie Attribute verwenden?
Sollten Sie mit Hilfe von Attributen zu vermeiden?
Einige der Probleme mit Attribute sind:
- Attribute können nicht mehrere Werte enthalten (child elements can) - (child elements can)
- Attribute sind nicht leicht erweiterbar (for future changes)
- Attribute können nicht beschreiben Strukturen (child elements can) - (child elements can)
- Attribute sind schwieriger von Programmcode zu manipulieren
- Attributwerte nicht einfach zu testen, anhand einer DTD sind
Wenn Sie Attribute als Container für Daten verwenden, erhalten Sie Dokumente bis die schwer zu lesen und zu pflegen. Versuchen Sie , verwenden elements , um Daten zu beschreiben. Verwenden Sie nur Attribute Informationen zu liefern, die nicht relevant für die Daten vorhanden sind.
Ende nicht so zusammen (this is not how XML should be used) , (this is not how XML should be used) :
<note day="12" month="11" year="2002"
to="Tove" from="Jani" heading="Reminder"
body="Don't forget me this weekend!">
</note>
Eine Ausnahme von meinem Attribut Rule
Regeln haben immer Ausnahmen.
Meine Regel über Attribute hat eine Ausnahme:
Manchmal zuweisen I ID Verweise auf Elemente. Diese ID-Referenzen können verwendet werden, um XML-Elemente in viel Zugriff auf die gleiche Weise wie den Namen oder die ID-Attribute in HTML. Dieses Beispiel veranschaulicht dies:
<messages>
<note id="p501">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
<note id="p502">
<to>Jani</to>
<from>Tove</from>
<heading>Re: Reminder</heading>
<body>I will not!</body>
</note>
</messages>
Die ID in diesen Beispielen ist nur ein Zähler oder eine eindeutige Kennung, die verschiedenen Noten in der XML-Datei, und nicht ein Teil der Notendaten zu identifizieren.
Was ich versuche , hier zu sagen ist , dass Metadaten (data about data) sollten als Attribute gespeichert werden, und die Daten selbst sollte als Elemente gespeichert werden.