2010-05-27 9 views
9

Ho avuto il <a> tag seguente:XSL - Come disabilitare l'escaping dell'output per un attributo?

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

Uno dei file si chiama "File's got apostrophe.xml". L'uscita del XSL è:

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

Il problema è che l'apostrofo è HTML-escape (due volte?) In &amp;#39;, che rompe il collegamento.

Ho anche provato ad utilizzare <xsl:attribute>, con gli stessi risultati:

<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> 

Emissione <xsl:value-of select="@FileRef" disable-output-escaping="yes" /> funziona bene - il valore di escape viene stampato sulla pagina.

Come posso impostare l'attributo senza sfuggire alla stringa?

+0

hai provato a memorizzare la stringa in una variabile e l'output? –

+0

hai provato diversi processori/browser xslt? – user306708

+0

@Gaby - Non ci ho provato, ci ho pensato, ma non aveva senso. Non sembrava migliore dell'output del campo '@ FileRef'. Ti stai riferendo all'intero tag '', simile alla risposta di tpeczek? – Kobi

risposta

17

È possibile generare il <un> come testo:

<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

Questa è una buona idea, sembra che funzioni. Controllerò domenica quando torno al lavoro. Grazie! – Kobi

+4

Questo ha funzionato, anche se il risultato è eccezionalmente brutto. Che peccato per il prossimo sviluppatore. Grazie! – Kobi

5

so di essere un po 'in ritardo su questo, ma penso che il tag attributo è il modo per, semplicemente non si vuole 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

Idea interessante. Lo esaminerò, grazie. – Kobi

+0

Ha funzionato alla grande con il processore XSLT di PHP, grazie! –

+0

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

Problemi correlati