Вывод дополнительного поля из справочника XSLT — различия между версиями
Nasty (обсуждение | вклад) (Новая страница: «'''Задача:''' Есть объект каталога. У него одна из характеристик, задаётся выпадающим списко…») |
Mad grant (обсуждение | вклад) |
||
(не показаны 3 промежуточные версии 2 участников) | |||
Строка 1: | Строка 1: | ||
− | + | ==Задача:== | |
Есть объект каталога. У него одна из характеристик, задаётся выпадающим списком. Значения списка задаются справочником. В справочнике кроме значений, есть также дополнительные поля. Каждому значению соответствует дополнительный параметр. Необходимо вывести дополнительный параметр. | Есть объект каталога. У него одна из характеристик, задаётся выпадающим списком. Значения списка задаются справочником. В справочнике кроме значений, есть также дополнительные поля. Каждому значению соответствует дополнительный параметр. Необходимо вывести дополнительный параметр. | ||
− | + | ==Решение:== | |
1. Вызываем объекты каталога, например с использованием %catalog getObjectsList()%. Реализация: | 1. Вызываем объекты каталога, например с использованием %catalog getObjectsList()%. Реализация: | ||
Строка 26: | Строка 26: | ||
В этом примере test1 - это переменная. Первое @id - это id-объекта каталога. Второе @id - это id-значения указанного в поле типа "Выпадающий список". pole_dlya_testov - это идентификатор поля типа "Выпадающий список". | В этом примере test1 - это переменная. Первое @id - это id-объекта каталога. Второе @id - это id-значения указанного в поле типа "Выпадающий список". pole_dlya_testov - это идентификатор поля типа "Выпадающий список". | ||
− | + | ==Итог:== | |
<xsl:apply-templates select="document('udata://catalog/getObjectsList//60')/udata/lines/item" mode="test" /> | <xsl:apply-templates select="document('udata://catalog/getObjectsList//60')/udata/lines/item" mode="test" /> | ||
Строка 34: | Строка 34: | ||
<xsl:value-of select="document(concat('uobject://', $test1))/udata/object/properties/group/property/value"/> | <xsl:value-of select="document(concat('uobject://', $test1))/udata/object/properties/group/property/value"/> | ||
</xsl:template> | </xsl:template> | ||
+ | [[Категория:Верстка в XSLT]] |
Текущая версия на 19:51, 4 июня 2013
Задача:
Есть объект каталога. У него одна из характеристик, задаётся выпадающим списком. Значения списка задаются справочником. В справочнике кроме значений, есть также дополнительные поля. Каждому значению соответствует дополнительный параметр. Необходимо вывести дополнительный параметр.
Решение:
1. Вызываем объекты каталога, например с использованием %catalog getObjectsList()%. Реализация:
<xsl:apply-templates select="document('udata://catalog/getObjectsList//60')/udata/lines/item" mode="test" />
В приведённой выше строке 60 - это id раздела каталога, дополнительные параметры объектов которого необходимо вывести. В этом пункте можно использовать любой другой необходимы вызов объектов каталога.
2. Создаём шаблон, в котором будут обрабатываться свойства.
<xsl:template match="item" mode="test"> </xsl:template>
3. Внутри шаблона нам необходимо:
а) получить id значения, которое указано в поля типа "Выпадающий список" для конкретного объекта каталога. Его можно получить, например, используя upage и id-объекта.
б) вызвать объект соответствующий id значения, которое указано в поле типа "Выпадающий список". Его можно вызвать, например, с использованием uobject.
в) получить необходимое значение, например использовать xsl:value-of select. Пример реализации:
<xsl:variable name="test1" select="document(concat('upage://', @id,'.pole_dlya_testov'))/udata/property/value/item/@id"/> <xsl:value-of select="document(concat('uobject://', $test1))/udata/object/properties/group/property/value"/>
В этом примере test1 - это переменная. Первое @id - это id-объекта каталога. Второе @id - это id-значения указанного в поле типа "Выпадающий список". pole_dlya_testov - это идентификатор поля типа "Выпадающий список".
Итог:
<xsl:apply-templates select="document('udata://catalog/getObjectsList//60')/udata/lines/item" mode="test" />
<xsl:template match="item" mode="test"> <xsl:variable name="test1" select="document(concat('upage://', @id,'.pole_dlya_testov'))/udata/property/value/item/@id"/> <xsl:value-of select="document(concat('uobject://', $test1))/udata/object/properties/group/property/value"/> </xsl:template>