|
Attributen
Net zoals in HTML kan XML in de begintag van de
pagina een attribuut hebben. Attributen in de begintag geven belangrijke
informatie over de elementen op de pagina. Een attribuut is een belangrijk
onderdeel van een tag. Attributen zijn ook in HTML beschikbaar. Het is
een aanhangsel van de tag dat van invloed is op de inhoud ervan.
Van HTML ken je dit nog wel: <img src="plaatje.gif">
de bron (src) geeft informatie over het plaatje, sterker nog zonder de
source staat er niets!
In dit voorbeeld is <img> de tag die met het attribuut: src="plaatje.gif"
wordt uitgebreid. Met src (afkorting voor het engelse source, bron) wordt
de bestandsnaam van de afbeelding die moet worden weergegeven, aangegeven.
In HTML beschikt bijna elke tag over één of meerdere attributen.
Andere attributen van de tag <img> zijn bijvoorbeeld:
- width: hiermee wordt de breedte van de afbeelding ingesteld
- height: hiermee wordt de hoogte van de afbeelding ingesteld
- border: hiermee wordt bepaald of er een kader rondom de afbeelding
moet worden geplaatst en zo ja hoe dik dit kader moet zijn.
In HTML en XML geven de attributen zeer belangrijke informatie weer,
zonder die informatie staat er heel wat anders.
Attributen in XML geven soms irrelevante informatie weer voor het bekijken
van het plaatje, zoals hieronder:
<file type="gif">plaatje.gif</file>
Maar voor de verdere afhandeling of versturen van dit plaatje is het bestandstype
zeer belangrijk.
Hoe word de content gequote?
Alle attributen in XML zullen gequote moeten worden, maar of je dat nou
met dubbel ("quote") of enkel ('quote') doet maakt niets uit!
Maar als de waarde van de attribuut of het element zelf enkel gequote
wordt zul je het hele attribuut dubbel moeten quoten zoals hieronder:
<real name='CHARLY "and" ARCHIE'>
Of anders zo:
<real name="CHARLY 'and' ARCHIE">
Elementen VS attributen
Data kan worden opgeslagen in Attributen of in child elementen
Child elementen zijn kinderen van het element!
Bekijk deze twee voorbeelden eens:
<person sex="vrouw">
<firstname>Anna</firstname>
<lastname>Smit</lastname>
</person>
<person>
< sex>vrouw</sex>
<firstname>Anna</firstname>
<lastname>Smit</lastname>
</person>
Ik hoop dat duidelijk is waarom bij
het tweede voorbeeld sex een "kind" is van person! Het eerste
voorbeeld is een "normaal" element en het tweede voorbeeld is
uitgebreider opgeschreven en wordt een child element genoemd.
Beide voorbeelden bevatten dezelfde informatie maar welke is nou het beste
om te gebruiken?
Er zijn geen regels over welke je moet gebruiken, het is geheel aan jou.
Ik vind echter voorbeeld 2 (het child element) makkelijker en overzichtelijker.
Ik vind het child element het beste want dit is lekker uitgebreid en moeilijker
om fouten in te maken. Verder zijn er nog een paar redenen waarom je Attributen
beter kunt mijden:
- Attributen kunnen geen dubbele waarden bevatten (child elementen wel)
- Attributen zijn niet makkelijk veranderbaar (voor toekomstige veranderingen)
- Attributen kunnen geen structuur aannemen (child elementen wel)
- Attributen zijn moeilijker en er kunnen makkelijker fouten in gemaakt
worden
- Attribuut waarden zijn niet makkelijk met DTD (Document Type Definition
= Document type uitleg!)
Attributen mijden dus! Anders krijg je moeilijk te lezen pagina's en
zeer moeilijk te veranderen.
Als je denkt dat dit correct XML is heb je er niet veel van begrepen:
<note day="12" month="11"
year="2002"
to="Jeroen" from="Martijn" heading="Herinnering"
body="Vergeet onze afspraak niet!">
</note>
Een uitzondering op de antiattributen regeling is een id! Als je de berichten
een id geeft dan hoef je die id niet in een element te plaatsen want dan
werkt het niet! Een id plaats je gewoon in het begin van het bericht zoals
bijvoorbeeld hier:
<messages>
<note id="p607">
<to>Jeroen</to>
<from>Martijn</from>
<heading>Herinnering</heading>
<body>Vergeet onze afspraak niet!</body>
</note>
<note id="p608">
<to>Martijn</to>
<from>Jeroen</from>
<heading>Re: Herinnering</heading>
<body>Ik vergeet je niet!</body>
</note>
</messages>
Wat ik probeer duidelijk te maken is dit:
Een id veranderd en is geen onderdeel van de note! Daarom moet metadata
(data over data) als attribuut opgeslagen worden en de andere content
niet, die wordt gewoon opgeslagen als element!
|