如何使用XPath根据特定属性的范围选择值

时间:2014-08-01 13:16:21

标签: xml xslt xpath

我有以下每个国家/地区重复的xml节点。这是一个例子:

<country name="Afghanistan" population="22664136" area="647500">

我想根据属性“population”的值在特定的数据集范围上应用模板。具体来说,我想撤回所有大于900万(9000000)和小于1000万(10000000)的东西。

我对XSLT和XPath感到非常不舒服。这是我期望的工作:

<xsl:apply-templates select="country[@population > '9000000' and population < '10000000']"/>

然而,这会引发基于'&lt;'的错误值范围内的字符。

我做了一些google-fu,我找不到任何可以解释我应该做些什么的事情。

提前致谢。

2 个答案:

答案 0 :(得分:2)

您必须转义<字符,因为XSLT是XML,并且在@之前都使用population

并且没有必要引用这些数字:

<xsl:apply-templates select="country[@population > 9000000 and 
                                     @population &lt; 10000000]" />

答案 1 :(得分:2)

由于XSLT是XML语法,因此如果使用&gt;和&lt ;,解释器将理解标签的开始或结束。

使用&lt;&gt;代替&lt;和&gt;,

所以你的xpath会变成 <xsl:apply-templates select="country[@population &gt; '9000000' and @population &lt; '10000000']"/>