Уже 3 дня сижу и нифига не получается. Item в строку таблицы вывел, а вот "property1" для для всех Item в строку ни как не могу.
Не получается сделать цикл который брал бы сначала все "property1", затем все "property2" и т.д.
Подскажите пожалуйста.
Re: Прошу помочь с выводом таблицы в МагазинКаталогТоваров
Вот сюда положил:
Ссылка для скачивания файла xml-Property-Modification.xls
( 58,50 Кб )
Ссылка для скачивания файла Item-Modifications-Property.xml
( 32,96 Кб )
[-- Файл отправлен через file.qip.ru. Подробнее на сайте: --]
<!--Тут у нас, типа, описание основноего товара. Цена там, название... Я упрощенно изобразил.
В общем стандартный темплейт для 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"> </xsl:text><xsl:value-of select="item_currency"/></p>
<h3>Модификации</h3>
<!--А вот здесь мы вызываем главный темплейт для построения таблицы модификаций-->
<xsl:apply-templates select="modifications"/>
</xsl:template>
<!--Выведем верхнюю левую ячейку пустой. В этой колонке будут выводится названия свойств.
Если они не нужны, то эту ячейку можно закомментировать, и оставить только вызов темплейта,
генерирующего названия столбцов-->
<td>
<xsl:text disable-output-escaping="yes"> </xsl:text>
</td>
<!--"Оберточный" темплейт, генериующий строки таблицы модификаций
В качестве параметра принимаются узлы элементов модификаций,
чтобы не делать их выборку из тепмлейта. -->
<xsl:template match="properties_for_group/property" mode="modifications_body">
<xsl:param name="modifications_items"/>
<tr>
<!--Вывод первой ячейки в строке, содержащей название свойства.
Если оно не нужно, то вывод этой ячейки можно закомментировать,
и оставить только вызов темплейта, генерирующего строку значений -->
<th>
<xsl:value-of select="name"/>
</th>
<!--Темплейт, генерирующий строку значений
В качестве параметра принимается идентификатор доп.свойства-->
<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">&mdash;</xsl:text>
</xsl:otherwise>
</xsl:choose>
</td>
</xsl:template>
</xsl:stylesheet>
А вот пример того что этот темплейт выведет: .
Первый столбец можно убрать, о том как это сделать написано в комментариях в шаблоне.