+ -
当前位置:首页 → 问答吧 → for-each循环的嵌套问题,如何罗列当前节点的兄弟节点

for-each循环的嵌套问题,如何罗列当前节点的兄弟节点

时间:2010-09-01

来源:互联网

<root>
 <sets type="A">
  <item>1</item>
  <item>2</item>
  <item>3</item>
 </sets>

 <sets type="B">
  <item>7</item>
  <item>8</item>
  <item>9</item>
 </sets>
</root>

XSL这样写的:
  <xsl:for-each select="//item">
  <xsl:for-each select="这里不知道填什么,才能对应到当前节点的父节点"> //这里是返回到当前item节点的父节点,把其子节点item再遍历一次
  //罗列当前item节点的兄弟节点
  //换言之,我也许要根据当前节点追溯到其父节点,然后再自上而下罗列
  </xsl:for-each>
  //Do something...
  </xsl:for-each>

作者: xmlscript   发布时间: 2010-09-01

可以看到,xml树有两层,外循环先遍历第二层的子节点item,每遇到一个item,便要把此节点的兄弟节点在内循环一遍。如何做呢?

作者: xmlscript   发布时间: 2010-09-01

我尝试在内循环里这样定位到当前节点的父节点:<xsl:for-each select="..">
但是既然定位到了这个父节点,它底下也是有N个子节点的,现在在内循环内罗列的子节点仅仅是第一,其后的子节点再无显示,不知何故?用<xsl:value-of select="count(item)"/>也仅仅返回"1".

作者: xmlscript   发布时间: 2010-09-01

不知道你为何要双重,下面代码参考一下
XML code

<xsl:template match="root">
    <xsl:for-each select="//item">
        <item name="{.}" position="{position()}" fscount="{count(following-sibling::item)}" icount="{count(parent::sets/item)}"/>
    </xsl:for-each>
</xsl:template>

作者: icy_csdn   发布时间: 2010-09-01