Hay un artículo titulado "Principles of XML design: When to use elements versus attributes" en el sitio web de IBM.
Aunque no parece haber muchas reglas duras y rápidas, hay algunas buenas pautas mencionadas en la publicación. Por ejemplo, una de las recomendaciones es usar elementos cuando sus datos no se deben normalizar para el espacio en blanco, ya que los procesadores XML pueden normalizar los datos dentro de un atributo, modificando así el texto sin formato.
Me encuentro haciendo referencia a este artículo de vez en cuando mientras desarrollo varias estructuras XML. Espero que esto sea útil también para otros.
edición - Desde el sitio:
Principio de contenido básico
Si se tiene en cuenta la información en cuestión a ser parte del material esencial que se expresa o se comunica en el XML, lo puso en un elemento. Para documentos legibles por personas, esto generalmente significa el contenido central que se está comunicando al lector. Para los formatos de registros orientados a la máquina, esto generalmente significa los datos que provienen directamente del dominio del problema. Si considera que la información es periférica o incidental a la comunicación principal, o puramente para ayudar a las aplicaciones a procesar la comunicación principal, use atributos. Esto evita saturar el contenido del núcleo con material auxiliar. Para los formatos de registros orientados a la máquina, esto generalmente significa notaciones específicas de la aplicación en los datos principales del dominio del problema.
Como ejemplo, he visto muchos formatos XML, generalmente de fabricación nacional en las empresas, donde los títulos de documentos se colocaron en un atributo. Creo que un título es una parte tan fundamental de la comunicación de un documento que siempre debe estar en el contenido del elemento.Por otro lado, a menudo he visto casos en que los identificadores internos del producto se arrojaron como elementos en los registros descriptivos del producto. En algunos de estos casos, los atributos eran más apropiados porque el código de producto interno específico no sería de interés primario para la mayoría de los lectores o procesadores del documento, especialmente cuando el ID era de un formato muy largo o inescrutable.
Es posible que haya escuchado que los datos principales van en los elementos, los metadatos en los atributos. Los dos párrafos anteriores realmente expresan el mismo principio, pero en un lenguaje más deliberado y menos confuso.
Principio de información estructurada
Si la información se expresa en una forma estructurada, especialmente si la estructura puede ser extensible, utilizar elementos. Por otro lado: si la información se expresa como un token atómico, use atributos. Los elementos son el motor extensible para expresar la estructura en XML. Casi todas las herramientas de procesamiento XML están diseñadas en torno a este hecho, y si descompone adecuadamente la información estructurada en elementos, descubrirá que sus herramientas de procesamiento complementan su diseño y que, por lo tanto, obtendrá productividad y capacidad de mantenimiento. Los atributos están diseñados para expresar propiedades simples de la información representada en un elemento. Si trabajas en contra de la arquitectura básica de XML ajustando la información estructurada en atributos, puedes obtener cierta concisión y conveniencia, pero probablemente pagues los costos de mantenimiento.
Las fechas son un buen ejemplo: una fecha tiene una estructura fija y, en general, actúa como un único token, por lo que tiene sentido como un atributo (preferiblemente expresado en ISO-8601). Representar nombres personales, por otro lado, es un caso en el que he visto a este principio sorprender a los diseñadores. Veo mucho los nombres en los atributos, pero siempre he sostenido que los nombres personales deben estar en el contenido del elemento. Un nombre personal tiene una estructura sorprendentemente variable (en algunas culturas puede causar confusión u ofensa al omitir honoríficos o asumir un orden de partes de nombres). Un nombre personal raramente es un token atómico. Como ejemplo, a veces es posible que desee buscar u ordenar por un nombre de pila y, a veces, por un apellido. Debo señalar que es tan problemático calzar un nombre completo en el contenido de un solo elemento como ponerlo en un atributo.
Debe usar las versiones de escape de < and > para poner las etiquetas. – workmad3