如何比较xsl中包含单引号(')的两个字符串

时间:2017-11-02 19:23:39

标签: xml xslt xslt-1.0

我必须在xsl-1.0中比较包含单引号的两个字符串,但是当我测试它们时,它永远不会起作用。我试过

<xsl:if test="/name= 'start of string d&apos; 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。

我做错了什么?

1 个答案:

答案 0 :(得分:3)

对于用作XML属性定界符的字符使用XML转义,对于用作XPath字符串定界符的字符使用XPath转义。

因此,如果属性分隔符为",则可以将其转义为&quot;,而如果它是',则可以将其转义为&apos;

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表达式中的变量代替字符串文字。