XSLT - 过滤

时间:2009-04-07 14:58:29

标签: xslt xpath

我有一个像这样重复的xml树 -

<xml>
  <head>this is a sample xml file</head>
  <item><color>yellow</color><color>red</color></item>
  <item><color>blue</color></item>
  <item><color>grey</color><color>red</color><color>blue</color></item>
</xml>

如您所见,每个项目可以有不同数量的颜色标记。

我希望只获得前两项的所有颜色标签。

4 个答案:

答案 0 :(得分:5)

<xsl:template match="xml">
  <xsl:apply-templates select="item[position() &lt; 3]/color" />
</xsl:template>

<xsl:template match="color">
  <xsl:copy-of select="." />
</xsl:template>

应用于您的XML,产生:

<color>yellow</color>
<color>red</color>
<color>blue</color>

答案 1 :(得分:0)

一种可能的方法来获取技术上完全正确的项目,并且绝不会在命名空间,未来需求或模板构造方面对文档结构做出假设,这很简单:

/xml/item[position() &lt; 3]/color

答案 2 :(得分:0)

试试这个......

/xml/item[ position() &lt; 3 ]/color

答案 3 :(得分:-1)

为每个项添加一个序数字段,然后选择前两个。