XSLT - 计算元素并将它们分组

时间:2012-03-16 13:01:36

标签: xml xslt

我在XSLT转换中需要一些帮助。

这是XML,它非常简单 - 类别 - >项目:

<root isSection="true" name="videos" title="" totalElements="3">
<sections>
    <section name="NAME1" title="" order="50">
        <images />
        <sections />
        <assets />
        <resources />
    </section>
    <section name="NAME2" title="" order="50">
        <images />
        <sections />
        <assets />
        <resources />
    </section>
    <section name="Обслуживание и сервис" title="" order="50">
        <images />
        <sections />
        <assets />
        <resources />
    </section>
    <section name="NAME3" title="" order="50">
        <images />
        <sections />
        <assets>
            <asset id="1">
                <title>Охуенчик</title>
                <description>Охуенчик описание - писание - правописание (!)</description>
                <content>хуенчик</content>
            </asset>
            <asset id="2">
                <title>aaa</title>
                <description>ffff</description>
                <content>R3g1fkAqolQ</content>
            </asset>
        </assets>
        <resources />
    </section>
    <section name="NAME4" title="" order="50">
        <images />
        <sections />
        <assets>
            <asset id="3">
                <title>ggggg</title>
                <description>hhhhhhh</description>
                <content>R3g1fkAqolQ</content>
            </asset>
            <asset id="4">
                <title>asdasd</title>
                <description>asdasd</description>
                <content>SKdVq_vNAAI</content>
            </asset>
        </assets>
        <resources />
    </section>
</sections>
<assets />
<resources />

我需要在XSLT转换结束时有以下内容:XSLT计算所有ASSET的总数

<ul>
<li>TOTAL (4)</li>
<li>NAME1 (0)</li>
<li>NAME2 (0)</li>
<li>NAME3 (2)</li>
<li>NAME4 (2)</li>
</ul>

最后也是最有问题的 - 将部分组的CLASS或ATTRIBUTE添加到ASSET元素

它看起来像:

部分 - &gt;部分(NAME2) - &gt;资产 - &gt; asset1(添加类'NAME2')和asset2(添加类'NAME2')

我怎么做 - 任何想法的朋友?

1 个答案:

答案 0 :(得分:1)

试试这个:

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

  <xsl:template match="/">
    <ul>
      <li>
        <xsl:value-of select="concat('TOTAL (',count(.//asset),')')"/>
      </li>
      <xsl:for-each select="//section">
        <li>
          <xsl:value-of select="concat(@name,' (',count(.//asset),')')"/>
        </li>
      </xsl:for-each>
    </ul>
  </xsl:template>

</xsl:stylesheet>

很抱歉,但我不明白问题的第二部分'最后也是最有问题的......'