9.Les entités internes et externes

9.2.Entité interne

La déclaration d'une entité interne se fait sous la forme <!ENTITY nomentite value>.
Vous pouvez alors y faire référence dans un document XML simplement en utilisant la notation &nomentite;.
Votre document XML pourra alors ressembler à
<?xml version="1.0"?>
<!DOCTYPE nomracine [
   <!ENTITY copyright "(c) copyright 2002">
]>
<nomracine>
   Utilisation d'une entité interne : &copyright;
</nomracine>
qui sera équivalent à
<?xml version="1.0"?>
<nomracine>
   Utilisation d'une entité interne : (c) copyright 2002;
</nomracine>
comme le prouve l'application de la feuille de style suivante
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text" version="1.0"/>
    <xsl:template match="/">
		<xsl:apply-templates />
    </xsl:template>

    <xsl:template match="nomracine">
	<xsl:value-of select="." />
    </xsl:template>
</xsl:stylesheet>
qui retourne le résultat
Utilisation d'une entité interne : (c) copyright 2002
Dans le cas d'un long document comportant quelques éléments pouvant varier régulièrement cela peut être intéressant d'isoler comme cela certaines chaînes de caractères. Mais cela peut également être pratique pour la manipulation de caractères spéciaux comme nous le verrons à l'instant.
Vous connaissez déjà la posibilité d'utiliser dans les documents XML les notations &lt; (signe inférieur), &gt; (signe supérieur), &amp; (et commercial), &apos; (apostrophe) et &quot; (guillemet) qui sont tous prédéfinis, mais qu'en est-il des autres caractères comme par exemple le signe copyright (©) ?
Pour insérer ce type de caractère au sein de votre texte vous avez la posibilité d'insérer directement son code ASCII sous la forme &#169; (ici le code ASCII du signe copyright) mais il est généralement plus pratique de déclarer une entité interne correspondant à ce signe (on pourra alors choisir comme nom de cette entité celui qui est utilisé pour les caractères spéciaux HTML).
Voici donc un exemple d'utilisation
<?xml version="1.0"?>
<!DOCTYPE nomracine [
   <!ENTITY copy "&#169;">
]>
<nomracine>
   Utilisation d'une entité interne : &copy; 2002
</nomracine>
qui retournera (après application de la feuille de style présentée précédemment) le résultat suivant
Utilisation d'une entité interne : © 2002