XSLT - подсчитать элемент и сгруппировать их - PullRequest
0 голосов
/ 16 марта 2012

Мне нужна помощь в преобразованиях 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 подсчитывает общее количество всех АКТИВОВ

<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

это будет выглядеть так:

разделы -> раздел (NAME2) -> активы -> актив1 (добавить класс 'NAME2') и актив2 (добавить класс 'NAME2')

Как я могу это сделать - есть идеи, друзья?

1 Ответ

1 голос
/ 16 марта 2012

Попробуйте это:

<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>

Извините, но я не понимаю вторую часть вопроса "последняя и самая проблемная .."

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...