<img src="computer.gif"><a href="demo.html">
Attribute liefern oft Informationen, die nicht Teil der Daten sind. Im folgenden Beispiel hat der Dateityp nichts mit den Daten zu tun, ist aber wichtig für die Software, die dieses Element verarbeiten muss:
<file type="gif">computer.gif</file>
Attributwerte müssen in Anführungszeichen gesetzt werden, es können jedoch sowohl einfache als auch doppelte Anführungszeichen verwendet werden. Beispielsweise kann das Personenelement für das Geschlecht einer Person wie folgt geschrieben werden:
<person sex="female">
Oder das funktioniert auch:
<Personengeschlecht='weiblich'>
Wenn der Attributwert selbst doppelte Anführungszeichen enthält, können Sie einfache Anführungszeichen verwenden, wie in diesem Beispiel:
<Gangstername='George „Shotgun“ Ziegler'>
Oder Sie können Zeichenentitäten verwenden:
<person sex="female"><firstname>Anna</firstname><lastname>Smith</lastname></person>
<person><sex>weiblich</sex><firstname>Anna</firstname><lastname>Smith</lastname></person>
Sex ist zunächst einmal eine Eigenschaft. Im zweiten Fall ist Sex ein Element. Beide Instanzen liefern die gleichen Informationen.
Es gibt keine Regeln, die uns sagen, wann Attribute und wann Elemente verwendet werden sollen. Ich habe die Erfahrung gemacht, dass Attribute in HTML sehr praktisch zu verwenden sind, in XML jedoch sollten Sie versuchen, die Verwendung von Attributen zu vermeiden. Wenn sich Informationen stark wie Daten anfühlen, verwenden Sie Elemente.
Die folgenden drei XML-Dokumente enthalten genau die gleichen Informationen:
Das Datumsattribut wird im ersten Beispiel verwendet:
<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 Datumselement:
<note><date>01.10.2008</date><to>Tove</to><from>Jani</from><heading>Erinnerung</heading><body>Vergiss mich dieses Wochenende nicht! </body></note>
Das dritte Beispiel verwendet das erweiterte Datumselement (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>
Einige Probleme, die durch die Verwendung von Attributen verursacht werden:
Attribute können nicht mehrere Werte enthalten (Elemente können)
Attribute können keine Baumstrukturen enthalten (Elemente können)
Eigenschaften sind nicht einfach erweiterbar (für zukünftige Änderungen)
Eigenschaften sind schwer zu lesen und zu pflegen. Bitte versuchen Sie, Elemente zur Beschreibung von Daten zu verwenden. Verwenden Sie stattdessen einfach Attribute, um datenunabhängige Informationen bereitzustellen.
Machen Sie nicht so etwas Dummes (dies ist nicht die Art und Weise, wie XML verwendet werden sollte):
<note day="10"month="01" year="2008"to="Tove" from="Jani" heading="Reminder"body="Vergiss mich dieses Wochenende nicht!"></note>
Manchmal werden Elementen ID-Referenzen zugewiesen. Diese ID-Indizes können zur Identifizierung von XML-Elementen auf die gleiche Weise wie das ID-Attribut in HTML verwendet werden. Dieses Beispiel veranschaulicht uns diese Situation:
<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>Das werde ich nicht</body></ note></messages>
Das obige ID-Attribut ist lediglich eine Kennung, die zur Identifizierung verschiedener Notizen verwendet wird. Es ist nicht Teil der Notizdaten.
Die Idee, die wir Ihnen hier vermitteln möchten, besteht darin, dass Metadaten (Daten über Daten) als Attribute und die Daten selbst als Elemente gespeichert werden sollten.
Hier sind die Regeln, denen zusammenfassende XML-Attribute folgen müssen:
Attributnamen dürfen nicht einmal im selben Start-Tag oder leeren Element-Tag vorkommen
Eine Eigenschaft muss mithilfe der im Eigenschaftenblatt deklarierten Dokumenttypdefinition (DTD) deklariert werden.
Eigenschaftswerte dürfen keine direkten oder indirekten Entitätsverweise auf externe Entitäten enthalten
Der Ersetzungstext einer Entität, die als direkter oder indirekter Attributwert bezeichnet wird, darf kein Kleiner-als-Zeichen enthalten