xslt count由key返回的节点集

时间:2009-10-19 18:17:16

标签: xslt count key

在我的xslt中,我正在尝试确定schedule_id中不同<event/>值的数量,以便我可以输出一个表,其中每列用于一个schedule_id。以下密钥应检索按我的要求分组的节点集。那么如何确定返回多少个节点集?

<xsl:key name="events-by-schedule" match="event" use="@schedule_id" />

3 的示例事件(我正在尝试计算的数字)不同的schedule_id s:

<event event_id="6" date="2009-05-27" schedule_id="4">
    <ev_title>Ed's Bday</ev_title>
</event>
<event event_id="4" date="2009-11-11" schedule_id="0">
    <ev_title>Remembrance Day</ev_title>
</event>
<event event_id="6" date="2009-08-17" schedule_id="23">
    <ev_title>>Lunch with Bill</ev_title>
</event>
<event event_id="1" date="2009-12-25" schedule_id="0">
    <ev_title>Christmas</ev_title>
</event>
<event event_id="6" date="2009-05-02" schedule_id="4">
    <ev_title>Beth's Bday</ev_title>
</event>
<event event_id="6" date="2009-10-01" schedule_id="23">
    <ev_title>Performance Review</ev_title>
</event>

1 个答案:

答案 0 :(得分:3)

您正在寻找的XPath是:

count(
  event[
    generate-id()
    = 
    generate-id(key('events-by-schedule', @schedule_id)[1])
  ]
)

基本上,这是Muenchian分组。

它计算在各自组中的第一个<event>个节点 - 在XPath中,它是:它们的ID必须与组中第一个节点的ID匹配。