使用XSL创建一个表,每个元素和每个childelement的行位置(奇数偶数)

时间:2014-02-21 17:44:31

标签: xml xslt

我的客户正在使用XSLT样式表。 这不是一个真正的问题,但我已经陷入了困境。

我正在尝试创建一个表。表中的行应包含父元素和子元素(如果有的话)。每个(父母和孩子)都应该有自己的行。

首先,我使用For-each循环解决了它,它首先通过父元素。 对于具有子元素的指定父元素,另一个For-each循环遍历子元素。

现在我遇到的问题是position()无法从子循环返回到父循环,我无法确定奇数,甚至在行中也是如此。奇数和偶数由“mod 2”决定。

因此,每个第二行都会为css样式获取奇数类。

XML看起来像:

<note>
  <Parent>
    <Childs/>
    <Value>aaa</Value>
  </Parent>
  <Parent>
    <Childs/>
    <Value>bbb</Value>
  </Parent>
  <Parent>
    <Childs>
      <Value>cc_child</Value>
    </Childs>
    <Value>ccc</Value>
  </Parent>
  <Parent>
    <Childs>
      <Value>dd_child1</Value>
    </Childs>
    <Childs>
      <Value>dd_child2</Value>
    </Childs>
    <Value>dddd</Value>
  </Parent>
  <Parent>
    <Childs/>
    <Value>eee</Value>
  </Parent>
</note>

如前所述,嵌套for-each循环显然没有解决方案,因为我无法将子位置返回到父循环。

如果有人为我提供解决方案或想法,那会很棒。

谢谢和问候

2 个答案:

答案 0 :(得分:0)

您可以在父级for-each中创建一个变量,其值为position(),并在嵌套循环中使用它。

答案 1 :(得分:0)

  

我使用For-each循环解决了它,它首先通过了   父元素。并且对于具有child的指定父元素   元素另一个for-each循环遍历子节点   元件。

如果您希望将行指定为奇数或甚至无论行源是什么,请使用单个循环,该循环遍历两个类型的元素。