XML -zelfstudie

XML HOME XML-introductie XML Hoe te gebruiken XML-structuur XML-syntaxis XML-elementen XML-kenmerken XML-naamruimten XML-weergave XML HTTP-verzoek XML-parser XML-DOM XML XPath XML XSLT XML XQuery XML XLink XML-validator XML-DTD XML Schema XML-server XML-voorbeelden XML-quiz XML-certificaat

XML AJAX

Ajax-introductie AJAX XMLHttp Ajax-verzoek Ajax-reactie AJAX XML-bestand AJAX PHP Ajax ASP AJAX-database AJAX-toepassingen Ajax-voorbeelden

XML-DOM

DOM-introductie DOM-knooppunten DOM-toegang DOM Node Info Lijst met DOM-knooppunten DOM doorkruisen DOM-navigatie DOM Waarden ophalen DOM-wijzigingsknooppunten DOM Knooppunten verwijderen DOM Knooppunten vervangen DOM Knooppunten maken DOM Knooppunten toevoegen DOM-kloonknooppunten DOM-voorbeelden

XPath- zelfstudie

XPath-introductie XPath-knooppunten XPath-syntaxis XPath-assen XPath-operators XPath-voorbeelden

XSLT- zelfstudie

XSLT-introductie XSL-talen XSLT-transformatie XSLT <sjabloon> XSLT <waarde-van> XSLT <voor elk> XSLT <sorteren> XSLT <if> XSLT <kiezen> XSLT toepassen XSLT op de client XSLT op de server XSLT Bewerk XML XSLT-voorbeelden

XQuery- zelfstudie

XQuery-introductie XQuery-voorbeeld XQuery FLWOR XQuery HTML XQuery-voorwaarden XQuery-syntaxis XQuery toevoegen XQuery selecteren XQuery-functies

XML -DTD

DTD Introductie DTD-bouwstenen DTD-elementen DTD-kenmerken DTD Elements vs Attr DTD-entiteiten DTD-voorbeelden

XSD- schema

XSD-introductie XSD Hoe kan ik? XSD <schema> XSD-elementen XSD-kenmerken XSD-beperkingen

XSD- complex

XSD-elementen XSD Leeg Alleen XSD-elementen Alleen XSD-tekst XSD gemengd XSD-indicatoren XSD <elke> XSD <anyAttribute> XSD-vervanging XSD-voorbeeld

XSD- gegevens

XSD-string XSD-datum XSD Numeriek XSD Diversen XSD-referentie

Webservices _

XML-services XML-WSDL XML SOAP XML-RDF XML-RSS

Referenties

Typen DOM-knooppunten DOM Node DOM-knooppuntlijst DOM NamedNodeMap DOM-document DOM-element DOM-kenmerk DOM-tekst DOM CDATA DOM-opmerking DOM XMLHttpRequest DOM-parser XSLT-elementen XSLT/XPath-functies

XML -elementen versus attributen


In XML zijn er geen regels over wanneer attributen moeten worden gebruikt en wanneer onderliggende elementen moeten worden gebruikt.


Gebruik van elementen versus attributen

Gegevens kunnen worden opgeslagen in onderliggende elementen of in attributen.

Kijk eens naar deze voorbeelden:

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

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

In het eerste voorbeeld is geslacht een attribuut. In het laatste is seks een kindelement. Beide voorbeelden geven dezelfde informatie.

Er zijn geen regels over wanneer attributen moeten worden gebruikt en wanneer onderliggende elementen moeten worden gebruikt. Mijn ervaring is dat attributen handig zijn in HTML, maar in XML moet je ze proberen te vermijden. Gebruik onderliggende elementen als de informatie aanvoelt als gegevens.


Mijn favoriete manier

Ik hou ervan om gegevens op te slaan in onderliggende elementen.

De volgende drie XML-documenten bevatten exact dezelfde informatie:

In het eerste voorbeeld wordt een datumattribuut gebruikt:

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

In het tweede voorbeeld wordt een datumelement gebruikt:

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

Een uitgebreid datumelement wordt gebruikt in de derde: (DIT IS MIJN FAVORIET):

<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>


Vermijd het gebruik van attributen?

Moet u het gebruik van attributen vermijden?

Enkele van de problemen met attributen zijn:

  • attributen mogen niet meerdere waarden bevatten (onderliggende elementen kunnen dat wel)
  • attributen zijn niet gemakkelijk uitbreidbaar (voor toekomstige wijzigingen)
  • attributen kunnen geen structuren beschrijven (onderliggende elementen kunnen dat wel)
  • attributen zijn moeilijker te manipuleren door programmacode
  • attribuutwaarden zijn niet gemakkelijk te testen tegen een DTD

Als je attributen gebruikt als containers voor data, krijg je documenten die moeilijk te lezen en te onderhouden zijn. Probeer elementen te gebruiken om gegevens te beschrijven. Gebruik attributen alleen om informatie te verstrekken die niet relevant is voor de gegevens.

Eindig niet zo (dit is niet hoe XML moet worden gebruikt):

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

Een uitzondering op mijn eigenschapsregel

Regels hebben altijd uitzonderingen.

Mijn regel over attributen heeft één uitzondering:

Soms wijs ik ID-verwijzingen toe aan elementen. Deze ID-referenties kunnen worden gebruikt om toegang te krijgen tot XML-elementen op vrijwel dezelfde manier als de NAME- of ID-attributen in HTML. Dit voorbeeld toont dit aan:

<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>

De ID in deze voorbeelden is slechts een teller, of een unieke identificatie, om de verschillende notities in het XML-bestand te identificeren, en geen onderdeel van de notitiegegevens.

Wat ik hier probeer te zeggen, is dat metadata (gegevens over gegevens) als attributen moeten worden opgeslagen, en dat gegevens zelf als elementen moeten worden opgeslagen.