Atrybuty XML

Elementy XML mogą zawierać atrybuty w etykiecie startowej, podobnie jak HTML.

Atrybut (Atrybut) dostarcza dodatkowych informacji o elemencie.

Atrybuty XML muszą być otoczone cudzysłowami

Wartość atrybutu musi być otoczona cudzysłowami, ale mogą być używane zarówno cudzysłowy jak i apostrofy.

Na przykład, jeśli chcesz oznaczyć płeć osoby, tag <person> może wyglądać tak:

<person gender="female">

Lub w ten sposób również:

<person gender='female'>

Jeśli wartość atrybutu zawiera już cudzysłów, możesz użyć apostrofów, jak w poniższym przykładzie:

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

Lub możesz użyć znaków specjalnych:

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

Elementy XML i atrybuty

Proszę spojrzeć na te dwa przykłady:

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

W pierwszym przykładzie sex jest atrybutem. W drugim przykładzie sex jest podelementem. Oba przykłady mogą dostarczyć tych samych informacji.

W XML nie ma zasad, które by powiedziały, kiedy używać atrybutów, a kiedy używać podelementów. Moje doświadczenie mówi, że w HTML atrybuty są bardzo wygodne, ale w XML powinieneś unikać ich używania. Jeśli informacje wydają się być danymi, użyj podelementów.

Mój ulubiony sposób

Poniższe trzy dokumenty XML zawierają dokładnie takie same informacje:

W pierwszym przykładzie użyto atrybutu date:

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

W drugim przykładzie użyto elementu <date>:

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

W trzecim przykładzie użyto rozszerzonego elementu date (jest to mój ulubiony):

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

Czy warto unikać użycia atrybutów XML?

Oto kilka rzeczy, o których warto pomyśleć, gdy używasz atrybutów:

  • Atrybuty nie mogą zawierać wielu wartości (elementy mogą)
  • Atrybuty nie mogą opisywać struktury drzewa (elementy mogą)
  • Atrybuty są trudne do rozwijania (dla przyszłych zmian)

Staraj się opisywać dane za pomocą elementów. Używaj atrybutów tylko do dostarczania informacji niezależnych od danych.

Nie rób takich głupot (to nie jest sposób, w jaki XML powinien być używany):

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

Atrybuty XML dla metadanych

Czasami przypisujemy identyfikatory elementom. Te identyfikatory można używać do identyfikacji elementów XML, działają w ten sam sposób jak atrybut ID w HTML. Ten przykład pokazuje, jak to działa:

<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: Przypomnienie</heading>
    <body> nie będę </body>
  </note> 
</messages>

Powyższe ID to jedynie identyfikator, używany do identyfikacji różnych notatek. Nie jest to część danych notatki.

Naszym głównym przesłaniem jest to, że metadane (dane o danych) powinny być przechowywane jako atrybuty, a dane same w sobie jako elementy.