Devo usar elementos ou atributos em XML? [duplicado]
Esta questão já tem uma resposta aqui:
Atributo XML vs elemento XML 20 respostasEstou aprendendo sobreAtributos XML de W3Schools.
O autor menciona o seguinte (ênfase minha):
Elementos XML vs. Atributos<person sex="female">
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
<person>
<sex>female</sex>
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
No primeiro exemplo, sexo é um atributo. No último, o sexo é um elemento. Ambos os exemplos fornecem a mesma informação.
Não há regras sobre quando usar atributos e quando usar elementos. Atributos são úteis em HTML.Em XML, meu conselho é evitá-los. Use elementos em vez disso.
Evitar atributos XML?Alguns dos problemas com o uso de atributos são:
os atributos não podem conter vários valores (elementos podem)os atributos não podem conter estruturas de árvore (elementos podem)os atributos não são facilmente expansíveis (para futuras alterações)Atributos são difíceis de ler e manter. Use elementos para dados. Use atributos para informações que não são relevantes para os dados.
Então, a visão do autor é famosa, ou essa é a melhor prática em XML?
Devem ser evitados atributos em XML?
O W3Schools também mencionou o seguinte (ênfase minha):
Atributos XML para MetadadosÀs vezes, as referências de ID são atribuídas a elementos. Esses IDs podem ser usados para identificar elementos XML da mesma maneira que o atributo ID em HTML. Este exemplo demonstra isso:
<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>
O ID acima é apenas um identificador, para identificar as diferentes notas. Não faz parte da nota em si.
O que estou tentando dizer aqui é que metadados (dados sobre dados) devem ser armazenados como atributos, e que os dados em si devem ser armazenados como elementos.