<img src="computer.gif"><a href="demo.html">
Os atributos geralmente fornecem informações que não fazem parte dos dados. No exemplo a seguir, o tipo de arquivo não tem nada a ver com os dados, mas é importante para o software que precisa lidar com este elemento:
<file type="gif">computador.gif</file>
Os valores dos atributos devem ser colocados entre aspas, mas podem ser usadas aspas simples e duplas. Por exemplo, o gênero de uma pessoa, o elemento pessoa pode ser escrito assim:
<pessoa sexo="feminina">
Ou isso também funciona:
<pessoa sexo='feminino'>
Se o próprio valor do atributo contiver aspas duplas, você poderá usar aspas simples, como neste exemplo:
<nome do gangster='George "Shotgun" Ziegler'>
Ou você pode usar entidades de caracteres:
<person sex="female"><firstname>Anna</firstname><lastname>Smith</lastname></person>
<person><sex>feminino</sex><firstname>Anna</firstname><lastname>Smith</lastname></person>
Em primeiro lugar, o sexo é uma propriedade. No segundo caso, o sexo é um elemento. Ambas as instâncias fornecem as mesmas informações.
Não existem regras que nos digam quando usar atributos e quando usar elementos. Minha experiência é que em HTML os atributos são muito convenientes de usar, mas em XML você deve tentar evitar o uso de atributos. Se as informações se parecem muito com dados, use elementos.
Os três documentos XML a seguir contêm exatamente as mesmas informações:
O atributo date é usado no primeiro exemplo:
<note date="10/01/2008"><to>Tove</to><from>Jani</from><heading>Lembrete</heading><body>Não se esqueça de mim neste fim de semana!</body </nota>
O segundo exemplo usa o elemento data:
<note><date>01/10/2008</date><to>Tove</to><from>Jani</from><heading>Lembrete</heading><body>Não se esqueça de mim neste fim de semana! </body></note>
O terceiro exemplo usa o elemento de data estendida (este é o meu favorito):
<note><date><day>10</day><month>01</month><year>2008</year></date><to>Tove</to><from>Jani</from> <heading>Lembrete</heading><body>Não se esqueça de mim neste fim de semana!</body></note>
Alguns problemas causados pelo uso de atributos:
Os atributos não podem conter vários valores (os elementos podem)
Os atributos não podem conter estruturas de árvore (os elementos podem)
As propriedades não são facilmente extensíveis (para alterações futuras)
As propriedades são difíceis de ler e manter. Tente usar elementos para descrever os dados. Em vez disso, basta usar atributos para fornecer informações independentes de dados.
Não faça algo estúpido como isto (não é assim que o XML deve ser usado):
<note day="10"month="01" year="2008"to="Tove" from="Jani" header="Reminder"body="Não se esqueça de mim neste fim de semana!"></note>
Às vezes, referências de ID são atribuídas a elementos. Esses índices de ID podem ser usados para identificar elementos XML da mesma forma que o atributo id em HTML. Este exemplo nos demonstra esta situação:
<messages><note id="501"><to>Tove</to><from>Jani</from ><heading>Lembrete</heading><body>Não se esqueça de mim neste fim de semana!</body> </note><note id="502"><to>Jani</to><from>Tove</from><heading>Re: Lembrete</heading><body>Não irei</body></ nota></mensagens>
O atributo id acima é apenas um identificador usado para identificar diferentes notas. Não faz parte dos dados da nota.
A ideia que estamos tentando transmitir a você aqui é que os metadados (dados sobre dados) devem ser armazenados como atributos, e os próprios dados devem ser armazenados como elementos.
Aqui estão as regras que os atributos XML de resumo precisam seguir:
Os nomes dos atributos não podem aparecer uma vez na mesma tag inicial ou na mesma tag de elemento vazio
Uma propriedade deve ser declarada usando a definição de tipo de documento (DTD) declarada na folha de propriedades.
Os valores de propriedade não podem conter referências diretas ou indiretas de entidades externas
O texto de substituição de qualquer entidade chamada valor de atributo direto ou indireto não pode conter sinal menor que