UMIhelp
Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: greencactus от 14 Февраля 2014, 15:12:30
-
Вывожу специфические свойства 1С на странице объекта каталога.
Вот кусочек страницы .xml где выводятся специфические свойства 1С
<group id="813" name="special">
<title>1C: Специфические свойства</title>
<property id="508" name="razmer" type="string">
<title>Размер</title>
<value>165 x 125 x 10 мм</value>
</property>
<property id="513" name="illyustracii" type="relation">
<title>Иллюстрации</title>
<value>
<item id="6602" name="Черно-белые" type-id="172" ownerId="42" xlink:href="uobject://6602"/>
</value>
</property>
<property id="515" name="god" type="float">
<title>Год</title>
<value>2</value>
</property>
<property id="516" name="avtor" type="relation">
<title>Автор</title>
<value>
<item id="6719" name="Мадлен Дени" type-id="174" ownerId="42" xlink:href="uobject://6719"/>
</value>
</property>
Как видно есть свойства значения которых хранятся сразу в value, а есть свойства в value которых хранятся ссылки на справочник со значением
Вывожу значение в таблицу с двумя колонками (первая колонка - названия, вторая - сами значения)
Для вывода использую следующую конструкцию:
<div class="specitem">
<table>
<tr>
<td align="right" width="280">
<xsl:apply-templates select=".//group[@name = 'special']/property/title" mode="specitems" />
</td>
<td width="4">
</td>
<td width="250">
<xsl:choose>
<xsl:when test="1 = 2">
<xsl:apply-templates select=".//group[@name = 'special']/property/value/item" mode="specitems2" />
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select=".//group[@name = 'special']/property/value" mode="specitems" />
</xsl:otherwise>
</xsl:choose>
</td>
</tr>
</table>
</div>
Шаблоны обработки результатов:
Шаблон1 - Выводит названия свойств
<xsl:template match="title" mode="specitems">
<xsl:value-of select="." /><br/>
</xsl:template>
Шаблон2 - Выводит свойства с типом "Строка" (или "Число")
<xsl:template match="value" mode="specitems">
<xsl:value-of select="." /><br/>
</xsl:template>
Шаблон3 - Выводит свойства с типом "Справочник"
<xsl:template match="value/item" mode="specitems2">
<xsl:value-of select="./@name" /><br/>
</xsl:template>
Подскажите какое условие нужно написать в test="?????"
xsl:choose>
<xsl:when test="1 = 2">
Что бы если это справочник использовался Шаблон3, а во всех остальных случаях Шаблон2?
-
Друзья! неужто и правда никто не знает?
я нашёл вот такую конструкцию: "$data-type = 'relation'"
relation - это как я понимаю и есть справочник.
пишу <xsl:when test="$data-type = 'relation'"> - естественно ошибка
пишу <xsl:when test=".//group[@name = 'special']/property/value/$data-type = 'relation'"> , ну типа проверь является ли тип value справвочником, то же ошибка. Может синтаксис, или я не понимаю чего прошу от Umi?
-
Друзья! неужто и правда никто не знает?
я нашёл вот такую конструкцию: "$data-type = 'relation'"
relation - это как я понимаю и есть справочник.
пишу <xsl:when test="$data-type = 'relation'"> - естественно ошибка
пишу <xsl:when test=".//group[@name = 'special']/property/value/$data-type = 'relation'"> , ну типа проверь является ли тип value справвочником, то же ошибка. Может синтаксис, или я не понимаю чего прошу от Umi?
<xsl:when test=".//group[@name = 'special']/property/@data-type = 'relation'">