XML -Tutorial

XML-HOME XML-Einführung XML-Wie zu verwenden XML-Baum XML-Syntax XML-Elemente XML-Attribute XML-Namespaces XML-Anzeige XML-HttpRequest XML-Parser XML-DOM XML-XPath XML-XSLT XML-XQuery XML-XLink XML-Validator XML-DTD XML-Schema XML-Server XML-Beispiele XML-Quiz XML-Zertifikat

XML-AJAX

AJAX-Einführung AJAX-XMLHttp AJAX-Anfrage AJAX-Antwort AJAX-XML-Datei AJAX-PHP AJAX ASP AJAX-Datenbank AJAX-Anwendungen AJAX-Beispiele

XML-DOM

DOM-Einführung DOM-Knoten DOM-Zugriff DOM-Knoten-Info DOM-Knotenliste DOM-Traversierung DOM-Navigation DOM Get-Werte DOM-Änderungsknoten DOM-Knoten entfernen DOM-Ersetzungsknoten DOM-Knoten erstellen DOM-Knoten hinzufügen DOM-Klonknoten DOM-Beispiele

XPath -Tutorial

XPath-Einführung XPath-Knoten XPath-Syntax XPath-Achsen XPath-Operatoren XPath-Beispiele

XSLT -Tutorial

XSLT-Einführung XSL-Sprachen XSLT-Transformation XSLT <Vorlage> XSLT <Wert von> XSLT <für-jeden> XSLT <sortieren> XSLT <wenn> XSLT <auswählen> XSLT anwenden XSLT auf dem Client XSLT auf dem Server XSLT XML bearbeiten XSLT-Beispiele

XQuery- Tutorial

XQuery-Einführung XQuery-Beispiel XQuery FLWOR XQuery-HTML XQuery-Bedingungen XQuery-Syntax XQuery hinzufügen XQuery-Auswahl XQuery-Funktionen

XML -DTD

DTD-Einführung DTD-Bausteine DTD-Elemente DTD-Attribute DTD-Elemente vs. Attr DTD-Entitäten DTD-Beispiele

XSD- Schema

XSD-Einführung XSD-Anleitung XSD <Schema> XSD-Elemente XSD-Attribute XSD-Einschränkungen

XSD- Komplex

XSD-Elemente XSD leer Nur XSD-Elemente Nur XSD-Text XSD gemischt XSD-Indikatoren XSD <beliebig> XSD <beliebiges Attribut> XSD-Ersetzung XSD-Beispiel

XSD -Daten

XSD-String XSD-Datum XSD Numerisch XSD Sonstiges XSD-Referenz

Webdienste _

XML-Dienste XML-WSDL XML-SOAP XML-RDF XML-RSS

Verweise

DOM-Knotentypen DOM-Knoten DOM-Knotenliste DOM NamedNodeMap DOM-Dokument DOM-Element DOM-Attribut DOM-Text DOM-CDATA DOM-Kommentar DOM-XMLHttpRequest DOM-Parser XSLT-Elemente XSLT/XPath-Funktionen

XML -Elemente vs. Attribute


In XML gibt es keine Regeln darüber, wann Attribute und wann untergeordnete Elemente verwendet werden sollen.


Verwendung von Elementen vs. Attributen

Daten können in untergeordneten Elementen oder in Attributen gespeichert werden.

Schauen 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 letzten ist Sex ein untergeordnetes Element. Beide Beispiele liefern dieselben Informationen.

Es gibt keine Regeln darüber, wann Attribute und wann untergeordnete Elemente verwendet werden sollen. Meine Erfahrung ist, dass Attribute in HTML praktisch sind, aber in XML sollten Sie versuchen, sie zu vermeiden. Verwenden Sie untergeordnete Elemente, wenn sich die Informationen wie Daten anfühlen.


Mein Lieblingsweg

Ich speichere Daten gerne in untergeordneten Elementen.

Die folgenden drei XML-Dokumente enthalten genau die gleichen Informationen:

Im ersten Beispiel wird ein Datumsattribut verwendet:

<note date="12/11/2002">
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

Im zweiten Beispiel wird ein Datumselement 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>

Im dritten wird ein erweitertes Datumselement 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 die Verwendung von Attributen?

Sollten Sie die Verwendung von Attributen vermeiden?

Einige der Probleme mit Attributen sind:

  • Attribute können nicht mehrere Werte enthalten (untergeordnete Elemente können)
  • Attribute sind nicht einfach erweiterbar (für zukünftige Änderungen)
  • Attribute können keine Strukturen beschreiben (untergeordnete Elemente können)
  • Attribute sind schwieriger durch Programmcode zu manipulieren
  • Attributwerte sind nicht einfach gegen eine DTD zu testen

Wenn Sie Attribute als Container für Daten verwenden, erhalten Sie Dokumente, die schwer zu lesen und zu pflegen sind. Versuchen Sie, Elemente zur Beschreibung von Daten zu verwenden. Verwenden Sie Attribute nur, um Informationen bereitzustellen, die für die Daten nicht relevant sind.

Nicht so enden (so sollte XML nicht verwendet werden):

<note day="12" month="11" year="2002"
to="Tove" from="Jani" heading="Reminder"
body="Don't forget me this weekend!">
</note>

Eine Ausnahme von meiner Attributregel

Regeln haben immer Ausnahmen.

Meine Regel über Attribute hat eine Ausnahme:

Manchmal weise ich Elementen ID-Referenzen zu. Diese ID-Referenzen können für den Zugriff auf XML-Elemente ähnlich wie die NAME- oder ID-Attribute in HTML verwendet werden. Dieses Beispiel demonstriert 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, um die verschiedenen Notizen in der XML-Datei zu identifizieren, und kein Teil der Notizdaten.

Was ich hier zu sagen versuche, ist, dass Metadaten (Daten über Daten) als Attribute gespeichert werden sollten und dass Daten selbst als Elemente gespeichert werden sollten.