Elementy XML mogą mieć atrybuty, podobnie jak HTML.
Atrybuty są przeznaczone do przechowywania danych związanych z określonym elementem.
Atrybuty XML musi być podane
Wartości atrybutów muszą być zawsze podane. Pojedyncze lub podwójne cudzysłowy mogą być użyte.
Dla płci danej osoby, tym <person> element może być napisane tak:
<person gender="female">
i tak:
<person gender='female'>
Jeśli wartość atrybutu sama zawiera cudzysłowów można używać apostrofów, jak w poniższym przykładzie:
<gangster name='George "Shotgun" Ziegler'>
Można też użyć encji znakowych:
<gangster name="George "Shotgun" Ziegler">
Elementy Atrybuty XML vs.
Spójrz na tych przykładach:
<person gender="female">
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
<person>
<gender>female</gender>
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
W pierwszym przykładzie płci jest atrybutem. W ostatnim, płeć jest elementem. Oba przykłady te same informacje.
Nie istnieją żadne przepisy o kiedy używać atrybutów lub kiedy należy używać elementów XML.
Mój ulubiony sposób
Poniższe trzy dokumenty XML zawierają dokładnie te same informacje:
Atrybut termin jest używany w pierwszym przykładzie:
<note date="2008-01-10">
<to>Tove</to>
<from>Jani</from>
</note>
<date> element jest stosowany w drugim przykładzie:
<note>
<date>2008-01-10</date>
<to>Tove</to>
<from>Jani</from>
</note>
Rozszerzona <date> element jest stosowany w trzecim przykładzie: (THIS IS MY FAVORITE) :
<note>
<date>
<year>2008</year>
<month>01</month>
<day>10</day>
</date>
<to>Tove</to>
<from>Jani</from>
</note>
Unikać atrybutów XML?
Niektóre rzeczy do rozważenia przy użyciu atrybutów należą:
- atrybuty nie mogą zawierać wiele wartości (elements can)
- atrybuty nie mogą zawierać struktury drzewa (elements can)
- atrybuty nie są łatwo rozszerzalne (for future changes)
Nie kończy się tak:
<note day="10" month="01" year="2008"
to="Tove" from="Jani" heading="Reminder"
body="Don't forget me this weekend!">
</note>
Atrybuty metadanych XML
Czasem Odniesienia ID są przypisane do elementów. Identyfikatory te można stosować do identyfikacji elementów XML w taki sam sposób jak id atrybutu HTML. Ten przykład demonstruje sposób:
<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>
id atrybuty powyżej są do identyfikowania różnych notatek. To nie jest częścią samej nucie.
Co próbuję powiedzieć, jest to, że metadane (data about data) powinny być przechowywane jako atrybuty, a same dane powinny być przechowywane jako elementy.