Atributos XML
Los elementos XML pueden tener atributos, al igual que HTML.
Los atributos están diseñados para contener datos relacionados con un elemento específico.
Los atributos XML deben citarse
Los valores de los atributos siempre se deben citar. Se pueden utilizar comillas simples o dobles.
Para el género de una persona, el elemento <person> se puede escribir así:
<person gender="female">
o así:
<person gender='female'>
Si el valor del atributo en sí contiene comillas dobles, puede usar comillas simples, como en este ejemplo:
<gangster name='George "Shotgun" Ziegler'>
o puede usar entidades de caracteres:
<gangster name="George "Shotgun" Ziegler">
Elementos XML frente a atributos
Fíjate en estos dos ejemplos:
<person gender="female">
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
<person>
<gender>female</gender>
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
En el primer ejemplo, el género es un atributo. En el último ejemplo, el género es un elemento. Ambos ejemplos proporcionan la misma información.
No hay reglas sobre cuándo usar atributos o cuándo usar elementos en XML.
mi camino favorito
Los siguientes tres documentos XML contienen exactamente la misma información:
En el primer ejemplo se utiliza un atributo de fecha:
<note date="2008-01-10">
<to>Tove</to>
<from>Jani</from>
</note>
En el segundo ejemplo se utiliza un elemento <fecha>:
<note>
<date>2008-01-10</date>
<to>Tove</to>
<from>Jani</from>
</note>
En el tercer ejemplo se usa un elemento <fecha> expandido: (ESTE ES MI FAVORITO):
<note>
<date>
<year>2008</year>
<month>01</month>
<day>10</day>
</date>
<to>Tove</to>
<from>Jani</from>
</note>
¿Evitar atributos XML?
Algunas cosas a considerar al usar atributos son:
- los atributos no pueden contener múltiples valores (los elementos sí)
- los atributos no pueden contener estructuras de árbol (los elementos sí)
- los atributos no son fácilmente expandibles (para futuros cambios)
No termines así:
<note day="10" month="01" year="2008"
to="Tove" from="Jani" heading="Reminder"
body="Don't forget me this weekend!">
</note>
Atributos XML para metadatos
A veces, las referencias de ID se asignan a los elementos. Estos ID se pueden usar para identificar elementos XML de la misma manera que el atributo id en HTML. Este ejemplo demuestra esto:
<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>
Los atributos de identificación anteriores son para identificar las diferentes notas. No es una parte de la nota en sí.
Lo que estoy tratando de decir aquí es que los metadatos (datos sobre los datos) deben almacenarse como atributos, y los datos en sí mismos deben almacenarse como elementos.