UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: greencactus от 14 Февраля 2014, 15:12:30

Название: Вывод значений справочников на странице
Отправлено: 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?
Название: Re:Вывод значений справочников на странице
Отправлено: greencactus от 20 Февраля 2014, 21:10:12
Друзья! неужто и правда никто не знает?

я нашёл вот такую конструкцию: "$data-type = 'relation'"
relation - это как я понимаю и есть справочник.

пишу <xsl:when test="$data-type = 'relation'"> - естественно ошибка

пишу <xsl:when test=".//group[@name = 'special']/property/value/$data-type = 'relation'"> , ну типа проверь является ли тип value справвочником, то же ошибка. Может синтаксис, или я не понимаю чего прошу от Umi?
Название: Re:Вывод значений справочников на странице
Отправлено: e.ioffe от 21 Февраля 2014, 10:57:26
Друзья! неужто и правда никто не знает?

я нашёл вот такую конструкцию: "$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'">