2017-06-06 6 views
0

Dans mon XSLT (2.0 - la méthode de sortie est html) J'ai ceci:Sortie instruction de traitement php dans la valeur d'attribut

<img> 
    <xsl:attribute name="href"> 
     <xsl:text disable-output-escaping="yes">&lt;?php echo get_url(); ?&gt;</xsl:text> 
    </xsl:attribute> 
</img> 

La sortie que je veux est la suivante:

<img href="<?php echo get_url(); ?>"> 

La sortie Je me est comme suit:

<img href="<?php echo get_url(); ?&gt;"> 

essayé un tas de choses différentes pour obtenir le « > » coming out dans la instea de sortie d de & gt; (Sections marquées CDATA etc.) mais rien ne semble fonctionner. Étrange que le signe moins fonctionne bien, mais le plus grand ne le fait pas. J'utilise Saxon-PE 9.5.1.7.

Répondre

0

Utilisez une carte de caractère avec certains caractères que vous n'avez pas besoin ailleurs, voici un exemple (https://www.w3.org/TR/xslt20/#character-maps) adapté de la spécification XSLT 2.0:

<img href="«?php echo get_url(); ?»"/> 

et

<xsl:output method="html" use-character-maps="m1"/> 

<xsl:character-map name="m1"> 
    <xsl:output-character character="«" string="&lt;"/> 
    <xsl:output-character character="»" string="&gt;"/> 
</xsl:character-map> 

exemple en ligne est au http://xsltransform.net/93dEHFP. Quant à disable-output-escaping, il ne fonctionne pas dans les valeurs d'attribut pour autant que je sache, ce résultat que vous obtenez n'est pas le résultat de disable-output-escaping mais simplement l'utilisation de xsl:output method="html" (https://www.w3.org/TR/xslt-xquery-serialization/#HTML_ATTRIBS) 'La méthode de sortie HTML NE DOIT PAS échapper les caractères "<" figurant dans les valeurs d'attribut.'.

+0

Awesome mate - vraiment apprécier l'aide. K –

+0

Et ça marche aussi! Vous êtes une étoile monsieur - bravo! –