2012-03-16 4 views
0

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

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

и последним и наиболее проблематичным - это добавить КЛАСС или АТРИБУТИЮ группы сечений к элементу ASSET

это будет выглядеть следующим образом:

секции -> раздел (Имя2) -> активы -> asset1 (добавить класс 'NAME2') и asset2 (добавить класс 'NAME2')

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

+0

Первый результат пробы с '' ul' и li' выглядит как HTML для меня, позже в сообщении, которое вы спрашиваете о добавлении класса в элемент 'asset'. Поэтому мне не ясно, чего вы хотите достичь; вы хотите иметь две разные таблицы стилей XSLT, которые преобразуют входной XML в HTML, подсчитывают элементы 'asset' и вторую, которая преобразует входной XML в XML, добавляя атрибут к элементам' asset'? Что касается подсчета элементов «активов» внутри элементов 'section', то почему« раздел »с кириллическим именем« Обслуживание и сервис »присутствует во входе, но не учитывается в результате? –

ответ

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> 

Извините, но я не uderstand вторую часть вопроса «последней и наиболее проблематичных ..»

+0

Чувак, ты рок! Это была первая часть задачи - это МЕНЮ, во второй части отображаются элементы раздела: мы выбрали NAME3 -> и в элементах (ASSET) SECTION, необходимо добавить класс, хранящийся в атрибуте <название раздела = "@ это"> Вторая часть, которая планируется быть следующая: '

  • @title
  • ' –

    +0

    Спасибо, человек! vvv –

    +0

    Извините, я до сих пор не понимаю вторую часть. Не могли бы вы добавить к вашему вопросу пример вывода, который вы хотите получить для второй части? – MiMo