XML Attribute


XML-Elemente haben Attribute, ähnlich wie HTML.

Attribute liefern zusätzliche Informationen über Elemente.


XML-Attribute

In HTML liefern Attribute zusätzliche Informationen über Elemente:

<img src="computer.gif.html">
<a href="demo.html">

Attribute liefern normalerweise Informationen, die nicht Teil der Daten sind. Im folgenden Beispiel steht der Dateityp nicht in Beziehung zu den Daten, aber er ist sehr wichtig für die Software, die dieses Element verarbeiten muss:

computer.gif


XML-Attribute müssen in Anführungszeichen stehen

Attributwerte müssen in Anführungszeichen eingeschlossen sein, wobei sowohl einfache als auch doppelte Anführungszeichen verwendet werden können. Zum Beispiel kann für das Geschlecht einer Person das person-Element so geschrieben werden:

<person sex="female">

Oder so:

<person sex='female'>

Wenn der Attributwert selbst doppelte Anführungszeichen enthält, können Sie einfache Anführungszeichen verwenden, wie in diesem Beispiel:

<gangster name='George "Shotgun" Ziegler'>

Oder Sie können Zeichenentitäten verwenden:

<gangster name="George &quot;Shotgun&quot; Ziegler">


XML-Elemente vs. Attribute

Sehen Sie sich diese Beispiele an:

<person sex="female">
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>

<person>
<sex>female</sex>
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>

Im ersten Beispiel ist sex ein Attribut. Im zweiten Beispiel ist sex ein Element. Beide Beispiele liefern dieselbe Information.

Es gibt keine Regeln, die uns sagen, wann Attribute und wann Elemente verwendet werden sollten. Meiner Erfahrung nach sind Attribute in HTML praktisch, aber in XML sollten Sie versuchen, die Verwendung von Attributen zu vermeiden. Wenn sich Informationen wie Daten anfühlen, verwenden Sie Elemente.


Meine bevorzugte Methode

Die folgenden drei XML-Dokumente enthalten genau dieselben Informationen:

Das erste Beispiel verwendet das Attribut date:

<note date="10/01/2008">
<to>Tove</to>
<from>Jani</from>
<heading>Erinnerung</heading>
<body>Vergiss mich dieses Wochenende nicht!</body>
</note>

Das zweite Beispiel verwendet das date-Element:

<note>
<date>10/01/2008</date>
<to>Tove</to>
<from>Jani</from>
<heading>Erinnerung</heading>
<body>Vergiss mich dieses Wochenende nicht!</body>
</note>

Das dritte Beispiel verwendet ein erweitertes date-Element (das ist mein Favorit):

<note>
<date>
<day>10</day>
<month>01</month>
<year>2008</year>
</date>
<to>Tove</to>
<from>Jani</from>
<heading>Erinnerung</heading>
<body>Vergiss mich dieses Wochenende nicht!</body>
</note>


XML-Attribute vermeiden?

Einige Probleme, die durch die Verwendung von Attributen entstehen:

  • Attribute können nicht mehrere Werte enthalten (Elemente hingegen schon)
  • Attribute können keine Baumstrukturen enthalten (Elemente hingegen schon)
  • Attribute lassen sich nicht einfach erweitern (für zukünftige Änderungen)

Attribute sind schwer zu lesen und zu pflegen. Bitte versuchen Sie, Elemente zur Beschreibung von Daten zu verwenden. Verwenden Sie Attribute nur, um Informationen bereitzustellen, die nicht mit den Daten zusammenhängen.

Mach so etwas Dummes nicht (so sollte XML nicht verwendet werden):

<note day="10" month="01" year="2008"
to="Tove" from="Jani" heading="Erinnerung"
body="Vergiss mich dieses Wochenende nicht!">
</note>


XML-Attribute für Metadaten

Manchmal werden Elementen ID-Referenzen zugewiesen. Diese ID-Indizes können verwendet werden, um XML-Elemente zu identifizieren, und sie funktionieren genauso wie das id-Attribut in HTML. Dieses Beispiel veranschaulicht dies:

<messages>
<note id="501">
<to>Tove</to>
<from>Jani</from>
<heading>Erinnerung</heading>
<body>Vergiss mich dieses Wochenende nicht!</body>
</note>
<note id="502">
<to>Jani</to>
<from>Tove</from>
<heading>Re: Erinnerung</heading>
<body>Ich will nicht</body>
</note>
</messages>

Das obige id-Attribut ist nur eine Kennung, die verwendet wird, um verschiedene Notizen zu identifizieren. Es ist nicht Teil der Notizdaten.

Die Idee, die wir hier nachdrücklich vermitteln, ist: Metadaten (Daten über Daten) sollten als Attribute gespeichert werden, und die Daten selbst sollten als Elemente gespeichert werden.


Weitere Erweiterungen