我遇到了一个带有撇号符号的文本问题
例如,我试图测试这个包含该符号的XML,那么如何进行比较呢?
<xsl:for each select="country[nation='India's]">
这是显示错误的语句
祝好, Nanda.A
我遇到了一个带有撇号符号的文本问题
例如,我试图测试这个包含该符号的XML,那么如何进行比较呢?
<xsl:for each select="country[nation='India's]">
这是显示错误的语句
祝好, Nanda.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文档)将作为合法的XPath表达式输出:country [nation = concat('India', "'", 's')]
。
因此,您必须找到一种同时通过第1层和第2层的方法。其中一种方法是使用变量,如上所示。另一种方法是:
<xsl:for-each select="country[nation=concat('India', "'", 's')]">
在XSLT中,可能会出现这样的形式:country[nation=concat('India', "'", 's')]
。
个人而言,我认为“变量方式”更易于处理。