Neueste Web-Entwicklung Tutorials
 

XML Elemente vs. Attribute


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.