2010-05-27 8 views
9

he tenido la <a> etiqueta siguiente:XSL - ¿Cómo deshabilitar el escape de salida para un atributo?

<a href="http://myserver/_forms?url={@FileRef}&amp;id=5">...</a> 

Uno de los archivos que se llama "File's got apostrophe.xml". La salida del XSL es:

<a href="http://myserver/_forms?url=/blah/File&amp;#39;s got apostrophe.xml&id=5">...</a> 

El problema es que el apóstrofe es HTML-escapado (dos veces?) En &amp;#39;, que rompe el enlace.

También he intentado usar <xsl:attribute>, con los mismos resultados:

<a> 
    <xsl:attribute name="href"> 
    <xsl:value-of select="concat('http://myserver/_forms?url=', @FileRef, '&amp;id=5')" 
     disable-output-escaping="yes" /> 
    </xsl:attribute> 
</a> 

Salida de <xsl:value-of select="@FileRef" disable-output-escaping="yes" /> funciona bien - el valor sin escape se imprime en la página.

¿Cómo puedo establecer el atributo sin escapar de la cadena?

+0

intenté almacenar el hilo en una variable y salir de eso? –

+0

¿Has probado diferentes xslt-processorors/browsers? – user306708

+0

@Gaby - No lo intenté, pensé en ello, pero no tenía sentido. No parecía mejor que generar el campo '@ FileRef'. ¿Se refiere a la etiqueta completa ' ', similar a la respuesta de tpeczek? – Kobi

Respuesta

17

Puede generar su <un> como texto:

<xsl:text disable-output-escaping="yes">&lt;a href="</xsl:text> 
<xsl:value-of select="concat('http://myserver/_forms?url=', @FileRef, '&amp;id=5')" disable-output-escaping="yes" /> 
<xsl:text disable-output-escaping="yes">" &gt;/a&lt;</xsl:text> 
+0

Esa es una muy buena idea, parece que esto va a funcionar. Lo revisaré el domingo cuando regrese al trabajo. ¡Gracias! – Kobi

+4

Eso funcionó, aunque el resultado es excepcionalmente feo. Qué pena para el próximo desarrollador. ¡Gracias! – Kobi

5

Yo sé que soy un poco tarde en esto, pero creo que el identificador de atributo es la manera, simplemente no se desea concat ...

<a> 
    <xsl:attribute name="href"> 
    http://myserver/_forms?url=<xsl:value-of select="@FileRef" disable-output-escaping="yes" />&amp;id=5 
    </xsl:attribute> 
</a> 
+0

Interesante idea. Lo investigaré, gracias. – Kobi

+0

Funcionó muy bien con el procesador XSLT de PHP, gracias. –

+0

Tuve este problema: http://stackoverflow.com/questions/7887016/disable-output-escaping-not-working-for-attribute-in-xlst – Peter

Cuestiones relacionadas