<img src="computadora.gif"><a href="demo.html">
Los atributos suelen proporcionar información que no forma parte de los datos. En el siguiente ejemplo, el tipo de archivo no tiene nada que ver con los datos, pero es importante para el software que necesita manejar este elemento:
<tipo de archivo="gif">computadora.gif</archivo>
Los valores de los atributos deben estar entre comillas, pero se pueden utilizar comillas simples y dobles. Por ejemplo, el género de una persona, el elemento persona se puede escribir así:
<persona sexo="mujer">
O esto también funciona:
<persona sexo='mujer'>
Si el valor del atributo contiene comillas dobles, puede utilizar comillas simples, como en este ejemplo:
<nombre del gángster='George "Escopeta" Ziegler'>
O puedes usar entidades de caracteres:
<persona sexo="female"><firstname>Anna</firstname><lastname>Smith</lastname></person>
<persona><sexo>mujer</sex><firstname>Anna</firstname><lastname>Smith</lastname></person>
En primer lugar, el sexo es una propiedad. En segunda instancia, el sexo es un elemento. Ambos casos proporcionan la misma información.
No existen reglas que nos digan cuándo usar atributos y cuándo usar elementos. Mi experiencia es que en HTML, los atributos son muy convenientes de usar, pero en XML, debes intentar evitar el uso de atributos. Si la información se parece mucho a los datos, utilice elementos.
Los siguientes tres documentos XML contienen exactamente la misma información:
El atributo de fecha se utiliza en el primer ejemplo:
<note date="10/01/2008"><to>Tove</to><from>Jani</from><heading>Recordatorio</heading><body>¡No me olvides este fin de semana!</body >>nota>
El segundo ejemplo utiliza el elemento de fecha:
<note><date>01/10/2008</date><to>Tove</to><from>Jani</from><heading>Recordatorio</heading><body>¡No me olvides este fin de semana! </cuerpo></nota>
El tercer ejemplo utiliza el elemento de fecha extendida (este es mi favorito):
<nota><fecha><día>10</día><mes>01</mes><año>2008</año></fecha><to>Tove</to><from>Jani</from> <heading>Recordatorio</heading><body>¡No me olvides este fin de semana!</body></note>
Algunos problemas causados por el uso de atributos:
Los atributos no pueden contener múltiples valores (los elementos sí pueden)
Los atributos no pueden contener estructuras de árbol (los elementos sí pueden)
Las propiedades no son fácilmente ampliables (para futuros cambios)
Las propiedades son difíciles de leer y mantener. Intente utilizar elementos para describir datos. En su lugar, utilice atributos para proporcionar información independiente de los datos.
No hagas algo estúpido como esto (esta no es la forma en que se debe usar XML):
<note día="10" mes="01" año="2008"to="Tove" from="Jani" encabezado="Reminder"body="¡No me olvides este fin de semana!"></note>
A veces se asignan referencias de identificación a elementos. Estos índices de ID se pueden utilizar para identificar elementos XML de la misma manera que el atributo id en HTML. Este ejemplo nos demuestra esta situación:
<messages><note id="501"><to>Tove</to><from>Jani</from><heading>Recordatorio</heading><body>¡No me olvides este fin de semana!</body> </note><note id="502"><to>Jani</to><from>Tove</from><heading>Re: Recordatorio</heading><body>No lo haré</body></ nota></mensajes>
El atributo de identificación anterior es solo un identificador que se utiliza para identificar diferentes notas. No forma parte de los datos de la nota.
La idea que intentamos transmitirle aquí es que los metadatos (datos sobre datos) deben almacenarse como atributos y los datos en sí deben almacenarse como elementos.
Estas son las reglas que deben seguir los atributos XML resumidos:
Los nombres de los atributos no pueden aparecer una vez en la misma etiqueta de inicio o etiqueta de elemento vacía
Una propiedad debe declararse utilizando la definición de tipo de documento (DTD) declarada en la hoja de propiedades.
Los valores de propiedad no pueden contener referencias de entidades directas o indirectas a entidades externas.
El texto de reemplazo de cualquier entidad denominada valor de atributo directo o indirecto no puede contener menos que el signo