He visto el primero con múltiples atributos entre corchetes (por ejemplo <person name="JohnDoe" age="25">
), pero no entiendo muy bien cuál es exactamente la diferencia entre ellos, y también me gustaría simplemente saber cómo se llaman estos dos tipos de objetos (no pude buscar en Google esta pregunta porque En primer lugar, no tenía idea de cómo se llamaban)
Sé que ambos pueden hacer lo mismo (por eso pregunto esto), pero estoy buscando buenos casos de uso para usar cualquiera de ellos (por ejemplo, usar espacios de nombres API en atributos en lugar de un elemento, colocar datos en elementos en lugar de atributos). )
Respuesta1
Puedes hacerlo:
<foo>
<bar>baz</bar>
</foo>
Pero no puedes hacer esto:
<foo value="<bar>baz</bar>" />
Puede codificar corchetes angulares utilizando entidades:
<foo value="<bar>baz</bar>" />
Pero ahora es sólo texto "baz" en lugar de XML anidado. Equivalente a esto:
<foo><bar>baz</bar></foo>
Desde la perspectiva XML, creo que esa es la única diferencia: no se pueden anidar etiquetas dentro de etiquetas, pero no dentro de atributos.
Si no necesita anidar etiquetas, ambas opciones son válidas. No hay otra diferencia técnica. La especificación XML no tiene reglas semánticas para usar una sobre la otra.