W XML, nie ma żadnych zasad o kiedy używać atrybutów i kiedy należy używać elementów podrzędnych.
Wykorzystanie elementów atrybutów vs.
Dane mogą być przechowywane w elementach dziecko lub w atrybutach.
Spójrz na tych przykładach:
<person sex="female">
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
<person>
<sex>female</sex>
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
W pierwszym przykładzie seks jest atrybutem. W ostatnim, seks jest elementem podrzędnym. Oba przykłady te same informacje.
Nie istnieją żadne przepisy o kiedy używać atrybutów i kiedy należy używać elementów podrzędnych. Z mojego doświadczenia wynika, że atrybuty są poręczne w HTML, ale w XML należy starać się ich unikać. Użyj elementy podrzędne, jeśli informacje czuje danych.
Mój ulubiony sposób
I like to store data in child elements.
Poniższe trzy dokumenty XML zawierają dokładnie te same informacje:
Atrybut termin jest używany w pierwszym przykładzie:
<note date="12/11/2002">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
Element termin jest stosowany w drugim przykładzie:
<note>
<date>12/11/2002</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
Datę rozszerzony element jest stosowany w trzecim: (THIS IS MY FAVORITE) :
<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>
Unikaj używania atrybutów?
Należy unikać stosowania atrybutów?
Niektóre z problemów dotyczących atrybutów są:
- atrybuty nie mogą zawierać wiele wartości (child elements can)
- atrybuty nie są łatwo rozszerzalne (for future changes)
- atrybuty nie da się opisać struktury (child elements can)
- atrybuty są trudniejsze manipulowanie kodem programu
- przypisania wartości nie są łatwe do testowania wobec DTD
W przypadku korzystania z atrybutów jako pojemniki na danych, skończy się z dokumentami, które są trudne do odczytania i utrzymaniu. Spróbuj użyć elements opisu danych. Stosowanie atrybutów tylko do przekazywania informacji, które nie są istotne dla danych.
Nie skończyć jak ten (this is not how XML should be used) :
<note day="12" month="11" year="2002"
to="Tove" from="Jani" heading="Reminder"
body="Don't forget me this weekend!">
</note>
Wyjątek od reguły mojego atrybutu
Zasady zawsze wyjątki.
Moja zasada o atrybutach ma jeden wyjątek:
Czasami przypisać referencje identyfikator elementów. Te odniesienia identyfikacyjne mogą być wykorzystywane w celu uzyskania dostępu elementów XML w taki sam sposób, jak sama nazwa lub atrybutów ID w HTML. Ten przykład demonstruje sposób:
<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>
Identyfikator w tych przykładach jest tylko licznik, lub unikatowy identyfikator, aby zidentyfikować różne notatki w pliku XML, a nie część danych z karty.
Co próbuję powiedzieć, jest to, że metadane (data about data) powinny być przechowywane jako atrybuty, a same dane powinny być przechowywane jako elementy.