用于转义引号的XSLT函数?

时间:2013-06-09 01:35:28

标签: xslt escaping

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

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

它适用于@ level1的大多数值。例如,如果值为foo,我会收到此网址:

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>

但似乎没有任何工作。

1 个答案:

答案 0 :(得分:2)

XSLT 2.0 中使用replace()功能。

XSLT 1.0 中使用您可以在http://www.exslt.org

找到的递归exslt:replace模板

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