Prvky XML vs. atributy
V XML neexistují žádná pravidla o tom, kdy použít atributy a kdy použít podřízené prvky.
Použití prvků vs. atributů
Data mohou být uložena v podřízených prvcích nebo v atributech.
Podívejte se na tyto příklady:
<person sex="female">
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
<person>
<sex>female</sex>
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
V prvním příkladu je sex atributem. V posledním případě je sex dětským prvkem. Oba příklady poskytují stejné informace.
Neexistují žádná pravidla o tom, kdy použít atributy a kdy použít podřízené prvky. Moje zkušenost je, že atributy jsou užitečné v HTML, ale v XML byste se jim měli snažit vyhnout. Pokud se informace cítí jako data, použijte podřízené prvky.
Můj oblíbený způsob
Rád ukládám data do podřízených prvků.
Následující tři dokumenty XML obsahují přesně stejné informace:
V prvním příkladu je použit atribut data:
<note date="12/11/2002">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
Ve druhém příkladu je použit prvek data:
<note>
<date>12/11/2002</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
Prvek rozšířeného data je použit ve třetím: (THIS IS MOJE OBLÍBENÉ):
<note>
<date>
<day>12</day>
<month>11</month>
<year>2002</year>
</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
Vyhnout se používání atributů?
Měli byste se vyhnout používání atributů?
Některé z problémů s atributy jsou:
- atributy nemohou obsahovat více hodnot (podřízené prvky mohou)
- atributy nelze snadno rozšířit (pro budoucí změny)
- atributy nemohou popisovat struktury (podřízené prvky mohou)
- atributy jsou obtížněji manipulovatelné programovým kódem
- hodnoty atributů není snadné testovat proti DTD
Pokud používáte atributy jako kontejnery pro data, skončíte s dokumenty, které je obtížné číst a udržovat. Zkuste použít prvky k popisu dat. Atributy používejte pouze k poskytování informací, které nejsou relevantní pro data.
Neskončete takto (takto by se XML nemělo používat):
<note day="12" month="11" year="2002"
to="Tove" from="Jani" heading="Reminder"
body="Don't forget me this weekend!">
</note>
Výjimka z mého pravidla atributů
Pravidla mají vždy výjimky.
Moje pravidlo o atributech má jednu výjimku:
Někdy prvkům přiřazuji ID reference. Tyto odkazy ID lze použít pro přístup k prvkům XML v podstatě stejným způsobem jako atributy NAME nebo ID v HTML. Tento příklad to ukazuje:
<messages>
<note id="p501">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
<note id="p502">
<to>Jani</to>
<from>Tove</from>
<heading>Re: Reminder</heading>
<body>I will not!</body>
</note>
</messages>
ID v těchto příkladech je pouze počítadlo nebo jedinečný identifikátor k identifikaci různých poznámek v souboru XML, nikoli část dat poznámky.
Snažím se zde říci, že metadata (data o datech) by měla být uložena jako atributy a samotná data by měla být uložena jako prvky.