Czy powinienem używać elementów lub atrybutów w XML? [duplikować]
To pytanie ma już tutaj odpowiedź:
Atrybut XML vs element XML 20 odpowiedziUczę się oAtrybuty XML z W3Schools.
Autor wspomina o następujących rzeczach (podkreślenie moje):
Elementy XML a atrybuty<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 końcu seks jest elementem. Oba przykłady dostarczają tych samych informacji.
Nie ma reguł dotyczących tego, kiedy używać atrybutów i kiedy używać elementów. Atrybuty są przydatne w HTML.W XML radzę unikać ich. Zamiast tego użyj elementów.
Unikaj atrybutów XML?Niektóre problemy z używaniem atrybutów to:
atrybuty nie mogą zawierać wielu wartości (elementy mogą)atrybuty nie mogą zawierać struktur drzewa (elementy mogą)atrybuty nie są łatwo rozszerzalne (dla przyszłych zmian)Atrybuty są trudne do odczytania i utrzymania. Użyj elementów do danych. Użyj atrybutów dla informacji, które nie są istotne dla danych.
Czy więc widok autora jest słynny, czy też jest to najlepsza praktyka w XML?
Czy należy unikać atrybutów w XML?
W3Schools wspomniało również o następujących kwestiach (podkreślenie moje):
Atrybuty XML dla metadanychCzasami odniesienia do identyfikatorów są przypisywane do elementów. Te identyfikatory mogą być używane do identyfikacji elementów XML w taki sam sposób jak atrybut ID w HTML. Ten przykład pokazuje to:
<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>
Powyższy identyfikator jest tylko identyfikatorem, umożliwiającym identyfikację różnych notatek. Nie jest częścią samej notatki.
Próbuję tutaj powiedzieć, że metadane (dane o danych) powinny być przechowywane jako atrybuty, a same dane powinny być przechowywane jako elementy.