如何提高我的Muenchian分组的XSLT?(How to improve my Muenchia

2019-10-18 03:12发布

感谢的帮助尼拉吉和hr_117我能在那打开此XML的XSL模板来...

<bookings>
  <entry>
    <event>Christmas</event>
    <attendees>2</attendees>
  </entry>
  <entry>
    <event>Halloween</event>
    <attendees>2</attendees>
  </entry>
  <entry>
    <event>Easter</event>
    <attendees>1</attendees>
  </entry>
  <entry>
    <event>Easter</event>
    <attendees>1</attendees>
  </entry>
</bookings>

...这个输出:

圣诞节:1个预订(S)

万圣节:1个预订(S)

复活节:2预订(S)

这是我的XSL:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="data">
  <xsl:apply-templates select="bookings"/>
</xsl:template>

<xsl:key name="bookings-within-period" match="bookings/entry" use="event" />

<xsl:template match="bookings">
  <xsl:for-each select="entry[count(. | key('bookings-within-period', event)[1]) = 1]">
      <p>
          <xsl:value-of select="concat(event,': ')" />
          <xsl:value-of select="count(key('bookings-within-period', event))" />
          <xsl:text> booking(s)</xsl:text>          
      </p>
  </xsl:for-each>
</xsl:template>

</xsl:stylesheet>

我怎样才能得到这个功能来计算的总和 attendees呢?

这是我所需要的输出:

圣诞节:1预订(S),2与会者(S)

万圣节:1预订(S),2参加者(S)

复活节:2预订(S),2参加者(S)

由于任何人谁可以帮助!

Answer 1:

增强XSLT是为下:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template match="data">
    <xsl:apply-templates select="bookings"/>
  </xsl:template>

  <xsl:key name="bookings-within-period" match="bookings/entry" use="event" />

  <xsl:template match="bookings">
    <xsl:for-each select="entry[count(. | key('bookings-within-period', event)[1]) = 1]">
      <p>
        <xsl:value-of select="concat(event,': ')" />
        <xsl:value-of select="count(key('bookings-within-period', event))" />
        <xsl:text> booking(s), </xsl:text>
        <xsl:value-of select="sum(key('bookings-within-period', event)/attendees)" />
        <xsl:text> attendee(s)</xsl:text>
      </p>
    </xsl:for-each>
  </xsl:template>

</xsl:stylesheet>

我们有<xsl:value-of select="sum(key('bookings-within-period', event)/attendees)" />总结所有与会者



Answer 2:

使用key('bookings-within-period', event)给你entry每个组中元素,然后sum(key('bookings-within-period', event)/attendees)给你的总和attendees每个组中。

而你需要做的是内部for-each ,其中第一entry各组元素是上下文节点,在不明确的情况下。



文章来源: How to improve my Muenchian grouping XSLT?