我有一些获取属性的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,",\""/>"</xsl:attribute>
但似乎没有任何工作。
答案 0 :(得分:2)
在 XSLT 2.0 中使用replace()
功能。
在 XSLT 1.0 中使用您可以在http://www.exslt.org
找到的递归exslt:replace
模板
(无论哪种方式,当您询问有关XSLT的问题时,请告诉我们您使用的是哪个版本。)