J'ai un texte XML que je souhaite rendre dans une page HTML. Ce texte contient une esperluette que je souhaite rendre dans sa représentation d'entité: &
.
Comment puis-je échapper à cette esperluette dans le XML source? J'ai essayé &
, mais ceci est décodé comme le caractère esperluette réel (&
), qui est invalide en HTML .
Je souhaite donc y échapper de manière à ce qu'il soit rendu sous la forme &
dans la page Web utilisant la sortie XML.
Lorsque votre code XML contient &
, vous obtenez le texte &
.
Lorsque vous utilisez cela en HTML, cela sera rendu sous la forme &
.
Conformément à §2.4 de la spécification XML 1., vous devriez pouvoir utiliser &
.
J'ai essayé l'ampère; mais ce n'est pas permis.
Êtes-vous sûr que ce n'est pas un problème différent? XML définit explicitement cela comme le moyen d'échapper aux esperluettes.
Le caractère _&
_ est lui-même un caractère d'échappement dans XML; la solution consiste donc à le concaténer et à un équivalent décimal Unicode pour _&
_, garantissant ainsi l'absence d'erreurs d'analyse XML. Autrement dit, remplacez le caractère _&
_ par -&
.
Utilisez les balises CDATA
:
<![CDATA[
This is some text with ampersands & other funny characters. >>
]]>
&
devrait fonctionner correctement, Wikipedia a Liste des entités prédéfinies en XML .
Dans mon cas, je devais le changer en %26
.
J'avais besoin d'échapper à &
dans une URL. Donc, &
n'a pas fonctionné pour moi. La fonction rlencode change &
en %26
. De cette façon, ni XML ni le mécanisme d'URL du navigateur ne se sont plaints de l'URL.
J'ai essayé l'ampli, mais ça n'a pas marché. Basé sur la réponse de Wim ten Brink, j'ai essayé amp; amp et ça a fonctionné.
Un de mes collègues développeurs m'a suggéré d'utiliser # x26; et cela a fonctionné quel que soit le nombre de fois où il peut être rendu.
&
est le moyen de représenter une esperluette dans la plupart des sections d'un document XML.
Si vous souhaitez que XML soit affiché en HTML, vous devez d'abord créer du XML correctement codé (ce qui implique de changer &
en &
) et , puis utilise cela pour créer du code HTML correctement codé (ce qui implique de changer à nouveau &
en &
). Cela se traduit par:
&amp;
Pour une explication plus détaillée du codage XML, voir:
Comment utiliser le unicode \u0026
? Fonctionne pour moi dans mes Android fichiers XML. Si des problèmes surviennent, faites-le moi savoir.
<xsl:text disable-output-escaping="yes">& </xsl:text>
fera l'affaire.
Déterminez si votre code XML ressemble à celui ci-dessous.
<Employees Id="1" Name="ABC">
<Query>
SELECT * FROM EMP WHERE ID=1 AND RES<>'GCF'
<Query>
</Employees>
Vous ne pouvez pas utiliser le <>
directement car il génère une erreur. Dans ce cas, vous pouvez utiliser <>
à la place de cela.
<Employees Id="1" Name="ABC">
<Query>
SELECT * FROM EMP WHERE ID=1 AND RES <> 'GCF'
<Query>
</Employees>
Cliquez ici pour voir tous les codes.
Un problème connexe est de savoir comment coder le contenu d'un élément XML lorsque ce contenu contient une esperluette - si le XML fait partie d'un URI soumis avec une action GET. (Laissant de côté la sagesse d'une telle API - c'était un problème avec lequel je devais traiter aujourd'hui.) J'ai essayé tout ce qui est mentionné ci-dessus, et la seule chose qui a réellement fonctionné, c'est %26amp;
Le %26
était nécessaire pour URL-encoder le premier caractère dans l'encodage XML pour esperluette. Le amp;
suivant le %26
était nécessaire car la partie XML de l'URI était en cours de chargement dans un document XML côté serveur. Donc, dans ce scénario amusant, il était nécessaire d'agrafer les deux méthodologies de codage ensemble.