Прошу помочь с выводом таблицы в МагазинКаталогТоваров

#
Прошу помочь с выводом таблицы в МагазинКаталогТоваров
Подскажите пожалуйста, есть исходные данные:


<modifications>
<item1>
   <property1>…</property1>
   <property2>…</property2>
   <property3>…</property3>
</item1>
<item2>
   <property1>…</property1>
   <property2>…</property2>
   <property3>…</property3>
</item2>
<item3>
   <property1>…</property1>
   <property2>…</property2>
   <property3>…</property3>
</item3>
</modifications>


Надо вывести их в XSL-МагазинКаталогТоваров вот в такую таблицу:

<item1>         <item2>        <item3>
<property1>     <property1>   <property1>
<property2>     <property2>   <property2>
<property3>     <property3>   <property3>


Уже 3 дня сижу и нифига не получается. Item в строку таблицы вывел, а вот "property1" для для всех Item в строку ни как не могу.
Не получается сделать цикл который брал бы сначала все "property1", затем все "property2" и т.д.
Подскажите пожалуйста.
#
Re: Прошу помочь с выводом таблицы в МагазинКаталогТоваров
скиньте XML полностью, постараюсь завтра написать примерчик
Заказов не беру. Консультирую редко.
#
Re: Прошу помочь с выводом таблицы в МагазинКаталогТоваров
Вот сюда положил:
Ссылка для скачивания файла xml-Property-Modification.xls
http://file.qip.ru/document/flLhVJQ5/xml-Property-Modification.html ( 58,50 Кб )
Ссылка для скачивания файла Item-Modifications-Property.xml
http://file.qip.ru/document/bQ31xeMd/Item-Modifications-Property.html ( 32,96 Кб )
[-- Файл отправлен через file.qip.ru. Подробнее на сайте: http://file.qip.ru --]

Заранее спасибо за ответ/совет/рекомендацию.
#
Re: Прошу помочь с выводом таблицы в МагазинКаталогТоваров
Хорошо, посмотрю в течение дня
Заказов не беру. Консультирую редко.
#
Re: Прошу помочь с выводом таблицы в МагазинКаталогТоваров
andruha-ek, ловите!
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output method="html" encoding="UTF-8" indent="yes"/>

   <xsl:template match="/shop">
      <xsl:apply-templates select="item"/>
   </xsl:template>

   <xsl:template match="item">

      <!--Тут у нас, типа, описание основноего товара. Цена там, название... Я упрощенно изобразил.
         В общем стандартный темплейт для item-->
      <h2>
         <xsl:value-of select="name"/>
      </h2>
      <xsl:value-of disable-output-escaping="yes" select="description"/>
      <p>Цена <xsl:value-of select="price_tax"/><xsl:text disable-output-escaping="yes">&#xA0;</xsl:text><xsl:value-of select="item_currency"/></p>


      <h3>Модификации</h3>

      <!--А вот здесь мы вызываем главный темплейт для построения таблицы модификаций-->
      <xsl:apply-templates select="modifications"/>
   </xsl:template>


   <!--главный темплейт для построения таблицы модификаций-->
   <xsl:template match="modifications">
      <table border="1">
         <thead>
            <tr>

               <!--Выведем верхнюю левую ячейку пустой. В этой колонке будут выводится названия свойств.
                  Если они не нужны, то эту ячейку можно закомментировать, и оставить только вызов темплейта,
                  генерирующего названия столбцов-->
               <td>
                  <xsl:text disable-output-escaping="yes">&#xA0;</xsl:text>
               </td>

               <!--Вызов темплейта, генерирующего названия столбцов-->
               <xsl:apply-templates select="item" mode="modifications_header"/>
            </tr>
         </thead>
         <tbody>

            <!--Вызов "оберточного" темплейта, генериующего строки таблицы модификаций
               В качестве параметра передаются все узлы элементов модификаций -->
            <xsl:apply-templates select="/shop/properties_for_group/property" mode="modifications_body">
               <xsl:with-param name="modifications_items" select="item"/>
            </xsl:apply-templates>
         </tbody>
      </table>
   </xsl:template>


   <!--Темплейт, генерирующий названия столбцов-->
   <xsl:template match="modifications/item" mode="modifications_header">
      <th>
         <xsl:value-of select="name"/>
      </th>
   </xsl:template>


   <!--"Оберточный" темплейт, генериующий строки таблицы модификаций
      В качестве параметра принимаются узлы элементов модификаций,
      чтобы не делать их выборку из тепмлейта. -->
   <xsl:template match="properties_for_group/property" mode="modifications_body">
      <xsl:param name="modifications_items"/>

      <tr>

         <!--Вывод первой ячейки в строке, содержащей название свойства.
            Если оно не нужно, то вывод этой ячейки можно закомментировать,
            и оставить только вызов темплейта, генерирующего строку значений -->
         <th>
            <xsl:value-of select="name"/>
         </th>

         <!--Вызов темплейта, генерирующего строку значений
            В качестве параметра передается идентификатор текущего доп.свойства -->
         <xsl:apply-templates select="$modifications_items" mode="modifications_body">
            <xsl:with-param name="property_id" select="@id"/>
         </xsl:apply-templates>
      </tr>
   </xsl:template>


   <!--Темплейт, генерирующий строку значений
      В качестве параметра принимается идентификатор доп.свойства-->
   <xsl:template match="modifications/item" mode="modifications_body">
      <xsl:param name="property_id"/>

      <!--Сохраним в переменную значение доп.свойства с переданным идентификатором для текущего элемента модификаций-->
      <xsl:variable name="property_value" select="property[@id = $property_id]/value"/>

      <td>
         <!--Определим, что мы будем выводить -->
         <xsl:choose>

            <!--Если доп.свойство с переданным идентификатором для текущего элемента модификаций существует, и имеет непустое значение,
               то выведем его-->
            <xsl:when test="$property_value  != ''">
               <xsl:value-of select="$property_value"/>
            </xsl:when>

            <!--Если доп.свойство с переданным идентификатором для текущего элемента модификаций не существует, или имеет пустое значение,
               то выведем прочерк.
               Иначе при отображении таблицы с пустым тегом <td></td> браузер может "съесть" ячейку.
               Вместо прочерка можно вписать любые другие символы-->
            <xsl:otherwise>
               <xsl:text disable-output-escaping="yes">&amp;mdash;</xsl:text>
            </xsl:otherwise>

         </xsl:choose>
      </td>
   </xsl:template>


</xsl:stylesheet>


А вот пример того что этот темплейт выведет: http://floomby.ru/content/yZJiKXkQ9k/.

Первый столбец можно убрать, о том как это сделать написано в комментариях в шаблоне.
Заказов не беру. Консультирую редко.
#
Re: Прошу помочь с выводом таблицы в МагазинКаталогТоваров
Kotoff,
БОЛЬШОЕ СПАСИБО, еще не испытывал, но судя по скрину как раз то что нужно.
БЛАГОДАРЮ ВАС.
#
Re: Прошу помочь с выводом таблицы в МагазинКаталогТоваров
Да пожалуйста!
Заказов не беру. Консультирую редко.
Авторизация