2

我会省略你的细节,因为它们会造成不必要的混乱。长话短说,我正在使用 XSLT 1.0 生成 XSL 文档,我正在尝试将变量与文字字符串进行比较,并且该字符串可能包含引号和撇号。

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

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

比这个?

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

我检查了XPath 的规范,似乎没有一种方法可以转义字符,因此以下内容无法按预期工作:

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

谢谢!

4

2 回答 2

2

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

于 2009-08-10T19:45:24.087 回答
1

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

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

  1. 声明 global xsl:param, $q- 看起来比& quot;
  2. 使用 ' translate' XPath 函数,假设'!'- is a & quot;, #is a & amp;..
于 2009-08-10T16:05:57.133 回答