XML-attributen

XML-elementen kunnen eigenschappen bevatten in de starttag, vergelijkbaar met HTML.

Eigenschappen (Attribute) bieden extra (aanvullende) informatie over het element.

XML-eigenschappen moeten omgeven worden door aanhalingstekens

Waarde van eigenschappen moeten omgeven worden door aanhalingstekens, maar zowel schuine als rechte aanhalingstekens kunnen gebruikt worden.

Bijvoorbeeld, de geslacht van een persoon, de <person>-tag kan zo geschreven worden:

<person gender="female">

Of ook zo:

<person gender='female'>

Als de waarde van de eigenschap zelf aanhalingstekens bevat, kunt u schuine aanhalingstekens gebruiken, zoals in het volgende voorbeeld:

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

Of u kunt gebruik maken van karaktersymbolen:

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

XML-elementen en eigenschappen

Bekijk deze twee voorbeelden:

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

In het eerste voorbeeld is sex een attribute. In het tweede voorbeeld is sex een sub-element. Beide voorbeelden kunnen dezelfde informatie leveren.

Er zijn geen regels in XML die ons vertellen wanneer we een attribute moeten gebruiken en wanneer een sub-element. Mijn ervaring is dat attributes in HTML handig zijn, maar in XML zou je ze het beste moeten vermijden. Als informatie lijkt op gegevens, gebruik dan een sub-element.

Mijn favoriete manier

Deze drie XML-documenten bevatten volledig dezelfde informatie:

In het eerste voorbeeld wordt de date-eigenschap gebruikt:

<note date="2008-01-10">
  <to>George</to>
  <from>John</from>
</note>

In het tweede voorbeeld wordt het <date>-element gebruikt:

<note>
  <date>2008-01-10</date>
  <to>George</to>
  <from>John</from>
</note>

In het derde voorbeeld wordt de uitgebreide date-element gebruikt (dat is mijn favoriet):

<note>
  <date>
    <year>2008</year>
    <month>01</month>
    <day>10</day>
  </date>
  <to>George</to>
  <from>John</from>
</note>

Vermeid het gebruik van XML-attributen?

Een paar dingen om over na te denken bij het gebruik van attributen zijn:

  • Attributen kunnen geen meerdere waarden bevatten (elementen kunnen dat wel)
  • Attributen kunnen geen boomstructuur beschrijven (elementen kunnen dat wel)
  • Attributen zijn moeilijk uit te breiden (voor toekomstige veranderingen)

Probeer zoveel mogelijk elementen te gebruiken om gegevens te beschrijven. Gebruik slechts attributen om informatie te bieden die niet van gegevens afhankelijk is.

Doe geen zo domme dingen (dit is niet de manier waarop XML zou moeten worden gebruikt):

<note day="10" month="01" year="2008"
to="George" from="John" heading="Reminder"
body="Don't forget the meeting!"
</note>

XML-attributen voor metadata

Soms wordt een ID toegekend aan een element. Deze ID-indices kunnen worden gebruikt om XML-elementen te identificeren, en ze werken op dezelfde manier als de ID-eigenschap in HTML. Dit voorbeeld laat dit zien:

<messages>
  <note id="501">
    <to>George</to>
    <from>John</from>
    <heading>Reminder</heading>
    <body>Don't forget the meeting!</body>
  </note>
  <note id="502">
    <to>John</to>
    <from>George</from>
    <heading>Re: Herinnering</heading>
    <bodyIk zal niet</body>
  </note> 
</messages>

De ID hierboven is enkel een identifier, gebruikt om verschillende tags te onderscheiden. Het is geen deel van de tagdata.

Onze sterke overtuiging is dat metadata (data over data) als eigenschappen moeten worden opgeslagen, en de data zelf als elementen.