我对带有撇号的文本有疑问
例如,我尝试测试这个具有符号的 xml,那么我该如何比较?
<xsl:for each select="country[nation='India's]">
这是显示错误的语句
问候南达.A
我对带有撇号的文本有疑问
例如,我尝试测试这个具有符号的 xml,那么我该如何比较?
<xsl:for each select="country[nation='India's]">
这是显示错误的语句
问候南达.A
一种方法是:
<xsl:variable name="apos" select='"'"'/>
<!-- ... later ... -->
<xsl:for-each select="country[nation=concat('India', $apos, 's')]">
这里的问题是双重的:
'India\'s'
不是一个选择。这些是:
构造如下:
<xsl:for-each select="country[nation='India's']">
<xsl:for-each select="country[nation='India's']">
通过 XML 层但违反了 XSLT 层,因为在这两种情况下,有效的属性值(存储在 DOM 中)都是country[nation='India's']
,这显然是 XPath 语法错误。
构造如下:
<xsl:for-each select="country[nation=concat('India', "'", 's')]">
<xsl:for-each select="country[nation=concat("India", "'", "s")]">
明显违反了 XML 层。但是它们不会违反 XSLT 层 (!),因为它们的实际值(如果 XSLT 文档可以首先被解析的话)会显示为country[nation=concat('India', "'", 's')]
,这作为 XPath 表达式是完全合法的。
所以你必须想办法同时通过第 1 层和第 2 层。一种方式是如上所示的可变方式。另一种方法是:
<xsl:for-each select="country[nation=concat('India', "'", 's')]">
这在 XSLT 中看起来是country[nation=concat('India', "'", 's')]
.
就个人而言,我发现“可变方式”更容易使用。