XSLT需要选择一个单引号
我需要这样做:XSLT需要选择一个单引号
<xsl:with-param name="callme" select="'validateInput(this,'an');'"/>
我读过Escape single quote in xslt concat function,它告诉我更换'
与'
我已经做了但其仍然没有工作..
有谁知道我们如何解决这个问题?:
<xsl:with-param name="callme" select="'validateInput(this,'an');'"/>
一些简单的可被用任何版本的XSLT:
<xsl:variable name="vApos">'</xsl:variable>
我经常使用相同的技术用于指定报价:
concat('This movie is named ', $vQ, 'Father', $vApos, 's secrets', $vQ)
所以:
<xsl:variable name="vQ">"</xsl:variable>
然后你可以使用标准的XPath函数concat()
散布这些变量到任何文本 ,这种转化:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:variable name="vApos">'</xsl:variable>
<xsl:variable name="vQ">"</xsl:variable>
<xsl:template match="/">
<xsl:value-of select=
"concat('This movie is named ', $vQ, 'Father', $vApos, 's secrets', $vQ)
"/>
</xsl:template>
</xsl:stylesheet>
产生:
This movie is named "Father's secrets"
使用& QUOT;而不是&; (通过使用&;您实际上在单引号内嵌套单引号;在嵌套时需要替换单引号和双引号,必要时转义)。
这是一个有点棘手,但你需要反转撇号和引号,像这样:
<xsl:with-param name="callme" select='"validateInput(this,'an');"' />
你内附一组引号内的字符串,包含它的属性值另一个。在XSLT中,只要不使用相同的引号,在两种情况下使用的引号都是可以互换的。
此前,您的'
正在被解析,因为正在读取match
属性的值,并且它试图将select的值设置为'validateInput(this,'an');'
。虽然这在技术上是一个有效的字符串值,但是当XSLT处理它时,它不能解析它,因为它试图将它作为字符串文字来读取,该字符串在an
之前过早终止,因为在那里使用了与用于包含字符串。
这是相当迟钝的xslt队大声笑 – Pacerier 2011-06-08 16:18:36
在XSLT 2.0可以将字符通过加倍它用作字符串分隔符,所以
<xsl:with-param name="callme" select="'validateInput(this,''an'');'"/>
另一种解决方案是使用变量:
<xsl:variable name="apos">'</xsl:variable>
<xsl:variable name="quot">"</xsl:variable>
<xsl:with-param name="callme" select="concat('validateInput(this,', $apos, 'an', $apos, ');')"/>
问得好,+1。看到我的答案是一个有用的技术,可以很容易地将任何特殊字符混合成一个字符串。 – 2011-06-08 13:42:47