1

我有一些 XSLT 获取属性并将其作为 URL 的一部分发送到 php $_GET 变量。它看起来像这样:

<xsl:attribute name="href">search.php?subject="<xsl:value-of select="@level1"/>"</xsl:attribute> 

它适用于@level1 的大多数值。例如,如果值为foo,我会得到这个 url:

search.php?subject="foo"

问题是,当该值@level1包含引号时,就像"bar" etc etc它不起作用一样。我明白了:

search.php?subject=""bar" etc etc"

这当然会返回一个空的subject. 如果我添加反斜杠,它会突然起作用。例如,如果我将 URL 编辑为:

search.php?subject="\"bar\" etc etc" 

那么$_GET['subject]=="bar" etc etc!那么如何让 XSL 添加反斜杠来转义这些流氓引号?我试过了

<xsl:attribute name="href">search.php?subject="<xsl:value-of select='replace(@level1,",\")'/>"</xsl:attribute> 

我试过了

<xsl:attribute name="href">search.php?subject="<xsl:value-of select="replace(@level1,&quot;,\&quot;"/>"</xsl:attribute>

但似乎还没有任何效果。

4

1 回答 1

2

XSLT 2.0中使用该replace()函数。

XSLT 1.0exslt:replace中使用可以在http://www.exslt.org找到的递归模板

(无论哪种方式,当您询问有关 XSLT 的问题时,请告诉我们您使用的是哪个版本)。

于 2013-06-09T05:07:25.110 回答