XML-ominaisuudet

XML-elementit voivat sisältää ominaisuuksia alkukilpaussignaalissa, kuten HTML:ssä.

Ominaisuudet (Attribute) tarjoavat lisätietoja elementeistä.

XML-ominaisuudet täytyy olla lainausmerkeissä

Ominaisuuden arvon täytyy olla lainausmerkeissä, mutta sekä yksinkertaiset että moninkertaiset lainausmerkit ovat sallittuja.

Esimerkiksi henkilön sukupuoli, <person>-tagi voidaan kirjoittaa seuraavasti:

<person gender="female">

Tai myös näin:

<person gender='female'>

Jos ominaisuuden arvo sisältää jo dva lauseket, voit käyttää yhtä lauseketta, kuten seuraavassa esimerkissä:

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

Tai voit käyttää merkkikoodia:

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

XML-elementit ja -ominaisuudet

Tarkastele näitä esimerkkejä:

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

Ensimmäisessä esimerkissä sex on ominaisuus. Toisessa esimerkissä sex on lapsielementti. Molemmat esimerkit voivat tarjota saman tiedon.

XML:ssä ei ole sääntöjä, jotka kertoisivat meille, milloin tulisi käyttää ominaisuuksia ja milloin lapsielementtejä. Kokeiluani mukaan HTML:ssä ominaisuudet ovat käteviä, mutta XML:ssä niitä tulisi välttää mahdollisimman paljon. Jos tieto tuntuu olevan tietoa, käytä lapsielementtiä.

Eniten pidän tästä tavasta

Seuraavat kolme XML-dokumenttia sisältävät täysin saman tiedon:

Ensimmäisessä esimerkissä käytetään date-ominaisuutta:

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

Toisessa esimerkissä käytetään <date>-elementtiä:

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

Kolmas esimerkki käyttää laajennettua date-elementtiä (tämä on suosikkini):

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

Vältäkö XML:n ominaisuuksia?

Kun käytät ominaisuuksia, on otettava huomioon muutamia asioita:

  • Ominaisuudet eivät voi sisältää useita arvoja (elementit voivat)
  • Ominaisuudet eivät voi kuvata puurakennetta (elementit voivat)
  • Ominaisuudet eivät ole helposti laajennettavissa (tulevaisuuden muutoksiin)

Yritä käyttää elementtejä kuvaukseen tietoja. Käytä vain ominaisuuksia tarjoamaan tietojen ulkopuolista tietoa.

Älä tee tällaista tyhmää asiaa (tämä ei ole XML:n käyttötapa):

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

XML:n metadatan ominaisuudet

Joskus ID:tä voidaan määrittää elementille. Tämä ID-merkinnät voidaan käyttää XML-elementtien tunnistamiseen, ja se toimii samalla tavalla kuin HTML:n ID-ominaisuus. Tämä esimerkki näyttää meille tämän tilanteen:

<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: Muistutus</heading>
    <body>En aio</body>
  </note> 
</messages>

Yllä oleva ID on vain tunniste, joka erottaa eri merkinnät toisistaan. Se ei ole osa merkinnän tietoja.

Tavoitteenamme on voimakkaasti välittää teille: Metadatan (tietojen tietoja) tulisi tallentaa ominaisuuksina, ja itse tiedot tulisi tallentaa elementteinä.