在<xsl:for-each select =“ a / b [isRed ='1'] />内,如何获取将要迭代的所有节点的position()?

时间:2018-11-30 23:01:24

标签: xml xslt xslt-2.0

如果我具有xml结构:

  
  
     0 
    
  
  
     1 
    鲍伯
  
     1 
    查尔斯
  
     1 
    蒂芙尼
  
     0 
    约翰
  
  
     0 
    蒂姆
  

 

在for-each循环中遍历这些节点时,如何将它们的位置保持为条件:[isRed ='1']。例如,如果我要遍历

  
<=“”代码=“”>

我如何将Charles的当前position()设为2而不是3? (由于其中包含Charles的B节点是匹配for-each条件的第二个节点。现在,当我处于for-each循环的上下文中时,如果我使用position(),则可以获得位置给定节点的整个节点列表的上下文,这不是我想要的。(我需要将xml转换为html,以便isRed = 1的前两个在第一页,然后其余放在不同的页面上。

此外,我没有使用模板匹配,而是模板名称。我已经尝试解决这一问题了大约一天,但我没有取得任何成功。

本质上,我试图仅遍历foreach循环中列表中的前两个元素。我实际的for-each循环如下:

<xsl:for-each select="a/b[isRed = '1' and position() &lt; 3]"> 

但是,当我希望它遍历Bob和Charles b节点时,这仅遍历Joe和Bob b节点。这是因为Joe(以及所有其他b个节点,无论是否具有isRed属性)都包含在for-for条件的位置检查中。我可以使用什么代替position()调用来获取满足isRed条件的节点的实际位置?

0 个答案:

没有答案