我必须在xsl-1.0中比较包含单引号的两个字符串,但是当我测试它们时,它永远不会起作用。我试过
<xsl:if test="/name= 'start of string d' end of string'">
<xsl:if test="/name= 'start of string ' end of string'">
但是在那些情况下,我收到一个错误,告诉我字符串的结尾是意外的
并通过单引号更改引号
<xsl:if test='/name= "start of string ' end of string"'>
它构建但是测试返回false,即使它显然应该返回true。
我做错了什么?
答案 0 :(得分:3)
对于用作XML属性定界符的字符使用XML转义,对于用作XPath字符串定界符的字符使用XPath转义。
因此,如果属性分隔符为"
,则可以将其转义为"
,而如果它是'
,则可以将其转义为'
XPath转义仅存在于XPath 2.0中。如果字符串分隔符为"
,则可以将其转义为""
,如果为'
,则可以将其转义为''
。
在XPath 1.0中,您遇到了问题。解决它的方法是将变量绑定到引号
<xsl:variable name="quot">"</xsl:variable>
<xsl:variable name="apos">'</xsl:variable>
或实际的字符串文字
<xsl:variable name="s">He said "Please don't jump"</xsl:variable>
然后使用XPath表达式中的变量代替字符串文字。