XML- kenmerken
XML-elementen kunnen attributen hebben, net als HTML.
Attributen zijn ontworpen om gegevens te bevatten die betrekking hebben op een specifiek element.
XML-attributen moeten worden geciteerd
Attribuutwaarden moeten altijd worden aangehaald. Er kunnen zowel enkele als dubbele aanhalingstekens worden gebruikt.
Voor het geslacht van een persoon kan het element <person> als volgt worden geschreven:
<person gender="female">
of zo:
<person gender='female'>
Als de attribuutwaarde zelf dubbele aanhalingstekens bevat, kunt u enkele aanhalingstekens gebruiken, zoals in dit voorbeeld:
<gangster name='George "Shotgun" Ziegler'>
of je kunt karakterentiteiten gebruiken:
<gangster name="George "Shotgun" Ziegler">
XML-elementen versus attributen
Kijk eens naar 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 geslacht een attribuut. In het laatste voorbeeld is geslacht een element. Beide voorbeelden geven dezelfde informatie.
Er zijn geen regels over wanneer attributen moeten worden gebruikt of wanneer elementen in XML moeten worden gebruikt.
Mijn favoriete manier
De volgende drie XML-documenten bevatten exact dezelfde informatie:
In het eerste voorbeeld wordt een datumattribuut gebruikt:
<note date="2008-01-10">
<to>Tove</to>
<from>Jani</from>
</note>
In het tweede voorbeeld wordt een <date>-element gebruikt:
<note>
<date>2008-01-10</date>
<to>Tove</to>
<from>Jani</from>
</note>
In het derde voorbeeld wordt een uitgebreid <date>-element gebruikt: (DIT IS MIJN FAVORIET):
<note>
<date>
<year>2008</year>
<month>01</month>
<day>10</day>
</date>
<to>Tove</to>
<from>Jani</from>
</note>
XML-attributen vermijden?
Enkele dingen om te overwegen bij het gebruik van attributen zijn:
- attributen kunnen niet meerdere waarden bevatten (elementen kunnen)
- attributen mogen geen boomstructuren bevatten (elementen kunnen dat wel)
- attributen zijn niet gemakkelijk uitbreidbaar (voor toekomstige wijzigingen)
Eindig niet zo:
<note day="10" month="01" year="2008"
to="Tove" from="Jani" heading="Reminder"
body="Don't forget me this weekend!">
</note>
XML-attributen voor metagegevens
Soms worden ID-referenties aan elementen toegewezen. Deze ID's kunnen worden gebruikt om XML-elementen te identificeren op vrijwel dezelfde manier als het id-attribuut in HTML. Dit voorbeeld toont dit aan:
<messages>
<note id="501">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
<note id="502">
<to>Jani</to>
<from>Tove</from>
<heading>Re: Reminder</heading>
<body>I will not</body>
</note>
</messages>
De id-attributen hierboven zijn voor het identificeren van de verschillende notities. Het maakt geen deel uit van de notitie zelf.
Wat ik hier probeer te zeggen, is dat metadata (gegevens over gegevens) als attributen moeten worden opgeslagen en dat de gegevens zelf als elementen moeten worden opgeslagen.