In realtà non c’è una risposta esauriente a questa domanda. Tutto dipende dallo scopo per cui viene definito un linguaggio di markup.
In linea generale, un elemento ha lo scopo di contenere le informazioni principali mentre gli attributi sono pensati per rappresentare meta-informazioni sul contenuto di un elemento. Così, ad esempio, un capitolo di un libro potrebbe essere rappresentato nel seguente modo:
<capitolo titolo=”Le regole di XML”>
Un documento XML è un documento di testo…
</capitolo>
In questo caso il titolo è rappresentato come un attributo perché considerato una informazione complementare rispetto al contenuto dell’elemento capitolo.
Tuttavia nulla vieta di impostare la rappresentazione del capitolo in modo diverso, dettato dal altre esigenze di progetto, come nel seguente esempio:
<capitolo>
<titolo> Le regole di XML </titolo>
<testo>Un documento XML è un documento di testo&46;&46;&46;</testo>
</capitolo>