如何在XPath中表达包含撇号和引号的字符串?

时间:2009-08-10 15:49:56

标签: xslt xpath xpath-1.0

我会饶有你的细节,因为它们会不必要地混淆。简而言之,我正在使用XSLT 1.0生成XSL文档,我正在尝试将变量与文字字符串进行比较,并且该字符串可能包含引号和撇号。

为简单起见,我们假设这个文字由两个字符组成:引号后跟撇号。实际上,它可以是任何文本。是否有更简单的方法:

<xsl:if test="$var = concat('&quot;', &quot;'&quot;)">

比这个?

<xsl:variable name="str">"'</xsl:variable>
<xsl:if test="$var = $str">

我检查了XPath's specs,似乎没有办法逃避字符,因此以下可以按预期工作:

<xsl:if test="$var = '&quot;&amp;apos;'">

谢谢!

2 个答案:

答案 0 :(得分:2)

在XPath 1.0中没有办法做得很好。在XPath 2.0中,您可以通过加倍来转义这两种引号。

答案 1 :(得分:1)

& quot;& amp;&(!)apos; - 看起来好多了,但你想得到什么?

无论如何:一旦我编写了应用程序来处理通过XSLT生成Javascript。 同样存在大量& quot;的问题,......我们以两种方式解决了这个问题:

  1. 声明全球xsl:param$q - 看起来比& quot;
  2. 使用'translate'XPath函数,假设'!' - 是& quot;#& amp; ..