Paramètre disable-output-escaping=“yes” pour chaque xsl:balise de texte dans le fichier xml
dire que j'ai le code xml suivant:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/*">
<display>
<xsl:for-each select="logline_t">
<xsl:text disable-output-escaping="yes"><</xsl:text> <xsl:value-of select="./line_1" <xsl:text disable-output-escaping="yes">></xsl:text>
<xsl:text disable-output-escaping="yes"><</xsl:text> <xsl:value-of select="./line_2" <xsl:text disable-output-escaping="yes">></xsl:text>
<xsl:text disable-output-escaping="yes"><</xsl:text> <xsl:value-of select="./line_3" <xsl:text disable-output-escaping="yes">></xsl:text>
</xsl:for-each>
</display>
</xsl:template>
</xsl:stylesheet>
Est-il un moyen de mettre disable-output-escaping="yes" à toutes les xsl:texte figurant dans le document?
Je sais il y a une option pour mettre
< xsl:output method="text"/>
et à chaque fois que quelque chose comme
& lt;
apparaît, un < fera son apparition, mais la chose est que, parfois, dans les valeurs de line_1, line_2 ou line_3, il y a un "$lt;" que je ne veux pas changé (ce qui est, je n'ai besoin que tout ce qui est entre être changé)
C'est ce que je suis en train d'accomplir. J'ai ce xml:
<readlog_l>
<logline_t>
<hora>16:01:09</hora>
<texto>Call-ID: 663903<hola>[email protected]</texto>
</logline_t>
</readlog_l>
Et cette traduction:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/*">
<display>
<screen name="<xsl:value-of select="name(.)"/>">
<xsl:for-each select="logline_t">
< field name="<xsl:for-each select="*"><xsl:value-of select="."/></xsl:for-each>" value="" type="label"/>
</xsl:for-each>
</screen>
</display>
</xsl:template>
</xsl:stylesheet>
Je veux que ce soit la sortie:
<?xml version="1.0"?>
<display>
<screen name="readlog_l">
<field name="16:01:09 Call-ID: 663903<hola>[email protected] " value="" type="label">
</screen>
</display>
Remarque que j'ai besoin de la "<" dans le champ nom n'est pas échappé, c'est pourquoi je ne peux pas utiliser la méthode de sortie de texte.
Aussi, notez que ceci est un exemple et les traductions sont beaucoup plus gros, donc c'est pourquoi j'essaie de trouver comment ne pas écrire disable-output-escaping pour tous "< " ou "> " j'ai besoin.
Merci!
Vous devez vous connecter pour publier un commentaire.
Merci pour la clarification de la question. Dans ce cas, je suis assez sûr il n'y a pas besoin de désactiver la sortie s'échapper. XSLT a été conçu pour accomplir ce que vous êtes en train de faire:
Je suis un peu dans le flou sur ce point:
Notez que j'ai besoin de la "<" dans le champ nom n'est pas échappé, c'est pourquoi je ne peux pas utiliser la méthode de sortie de texte.
Qui < parlez-vous? Est-il le < et > autour de "hola"? Si vous avez quitté ceux sans échappement vous retrouver avec XML non valide. Aussi, il semble que le nom de l'attribut dans votre exemple de sortie ont beaucoup de valeurs qui ne sont pas dans le XML d'entrée. Où avez-ceux-ci proviennent de?
Compte tenu de votre sortie, vous n'avez pas besoin de faire-e à toutes et tous pour cette. Voici une solution qui n'utilise pas n'-e, et est basé sur des modèles plutôt que de
for-each
:Si vous souhaitez définir do-e sur tout, qui suggère que vous essayez de générer le balisage "à la main". Je ne pense pas que c'est une très bonne idée (en fait, je pense que c'est une bien mauvaise idée), mais si c'est ce que vous voulez faire, je vous recommande d'utiliser le texte de la méthode de sortie au lieu de la sortie xml de la méthode. De cette façon, pas d'échappement de caractères spéciaux, et par conséquent, il n'a pas besoin d'être désactivé.