Путь до файла в списке элементов

Модератор
#
Re: Путь до файла в списке элементов
Dmitry K.,
вы никак не ограничиваете list_item, берется первый list_item из списка для [list_id = 280]
#
Re: Путь до файла в списке элементов
...проще так:
<xsl:if test="//property_value[property_id = 411]/value != 0">

    <...>

    <xsl:if test="//list/list_item[list_id = 280]/value != ''">
        <img class="img-fluid" src="{//list/list_item[list_id = 280]/dir}{//list/list_item[list_id = 280]/image_small}" alt="{property_value[property_id = 411]/value}" />
    </xsl:if>
</xsl:if>

Но всё равно...
Модератор
#
Re: Путь до файла в списке элементов
Dmitry K.,
где вы здесь говорите, какой list_item из множества list_item у list брать? Берется первый доступный, а не заданный, нужно list_item ограничивать по его id, заданному у свойства, при этом значение свойства записать в переменную.
И не злоупотребляйте //, пишите правильные пути от корня или от узла, для которого вызываете.
#
Re: Путь до файла в списке элементов
Не додумываю как лучше это сделать...
Ограничение типа такого:
<img class="img-fluid" src="{//list/list_item[@id = 1271]/dir}{//list/list_item[@id = 1271]/image_small}" alt="{property_value[property_id = 411]/value}" />

но это выражение @id = 1271 - это на самом деле переменная, которая принимает значения от 1267 до 1275.
А вот как грамотно написать, я не знаю.
#
Re: Путь до файла в списке элементов
[list_item_id = @id]
не работает
Модератор
#
Re: Путь до файла в списке элементов
Dmitry K.,
вы игнорируете советы в ответах, [list_item_id = @id] удивительно не будет работать, потому что выше вам посоветовали "по его id, заданному у свойства, при этом значение свойства записать в переменную".

<xsl:variable name="property384" select="/shop/shop_item_properties/property[@id = 384]" />
<xsl:variable name="value411" select="property_value[property_id = 411]/value}" />

картинка будет в $property384/list/list_item[@id = $value411]/image_small
#
Re: Путь до файла в списке элементов
Вот как надо было!
Объявляем переменную:
<xsl:variable name="value411" select="property_value[property_id = 411]/list_item_id" />

и выводим картинку:
<xsl:if test="property_value[property_id = 411]/value != 0">
    ...
    <img class="img-fluid" src="{//list/list_item[@id = $value411]/dir}{//list/list_item[@id = $value411]/image_small}" alt="{property_value[property_id = 411]/value}" />
</xsl:if>

И всё!!!
Всем спасибо за советы!
Модератор
#
Re: Путь до файла в списке элементов
Dmitry K.,
мы вам посоветовали намного более быстрый вариант, а не //list/list_item, вы же упорно используете очень ресурсоемкий xpath, несмотря на написанное выше готовое решение
#
Re: Путь до файла в списке элементов
А я подставляю Ваши варианты, а у меня ничего не выходит.
Не понимаю как сделать!
#
Re: Путь до файла в списке элементов
Если по Вашему, то у меня только так выходит:
<xsl:variable name="property411" select="/shop/shop_item_properties/property[@id = 411]" />
<xsl:variable name="value411" select="property_value[property_id = 411]/list_item_id" />
...
<xsl:if test="property_value[property_id = 411]/value != 0">
...
    <!-- малое изображение элемента списка (если есть) -->
    <xsl:if test="$property411/list/list_item[@id = $value411]/image_small != ''">
        <img class="img-fluid" src="{$property411/list/list_item[@id = $value411]/dir}{$property411/list/list_item[@id = $value411]/image_small}" alt="{property_value[property_id = 411]/value}" />
    </xsl:if>
</xsl:if>

Такой способ быстрее будет?
Авторизация