powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Как "переменную" в XSLT сделать действительно переменной?
4 сообщений из 4, страница 1 из 1
Как "переменную" в XSLT сделать действительно переменной?
    #39591766
verter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В XSLT-преобразовании печатается таким образом строка:

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
 <tr>
   <xsl:choose>
     <xsl:when test="$cnt = 0">
       <xsl:call-template name="printTotal">
         <xsl:with-param name="bc" select="1"/>       
       </xsl:call-template>
     </xsl:when>
     <xsl:when test="$cnt > 0">
       <xsl:call-template name="printTotal">
         <xsl:with-param name="bc" select="2"/>
       </xsl:call-template>
     </xsl:when>
     <xsl:otherwise>
       <xsl:call-template name="printTotal">
         <xsl:with-param name="bc" select="3"/>
       </xsl:call-template>
     </xsl:otherwise>
   </xsl:choose>
 </tr>


в этом коде проверяется переменная $cnt и в зависимости от её значения вызывается шаблон "printTotal", в параметр которого передаётся определённое значение.

чтобы каждый раз не повторять одинаковый вызов шаблона хочется завести переменную, чтобы потом использовать её в вызове шаблона, который вызывать только 1 раз, примерно вот так:

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
 <tr>
   <xsl:variable name="gr"><xsl:value-of select=""/></xsl:variable> 
   <xsl:choose>
     <xsl:when test="$cnt = 0">
       <xsl:variable name="gr"><xsl:value-of select="1"/></xsl:variable>
     </xsl:when>
     <xsl:when test="$cnt > 0">
       <xsl:variable name="gr"><xsl:value-of select="2"/></xsl:variable>
     </xsl:when>
     <xsl:otherwise>
       <xsl:variable name="gr"><xsl:value-of select="3"/></xsl:variable>
     </xsl:otherwise>
   </xsl:choose>
   <xsl:call-template name="printTotal">
     <xsl:with-param name="bc" select="$gr"/>       
   </xsl:call-template>
 </tr>


но так делать нельзя, потому что <xsl:variable name="gr">...</xsl:variable> -
это каждый раз новое определение переменной с её инициализацией.

А как не задавать переменную, а просто менять ей значение?
...
Рейтинг: 0 / 0
Как "переменную" в XSLT сделать действительно переменной?
    #39591901
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
verterА как не задавать переменную, а просто менять ей значение?Никак
verterно так делать нельзя, потому что <xsl:variable name="gr">...</xsl:variable> -
это каждый раз новое определение переменной с её инициализацией.Выход - определить ее один раз
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
 <tr>
   <xsl:variable name="gr">
     <xsl:choose>
       <xsl:when test="$cnt = 0">
         <xsl:value-of select="1"/>
       </xsl:when>
       <xsl:when test="$cnt > 0">
         <xsl:value-of select="2"/>
       </xsl:when>
       <xsl:otherwise>
         <xsl:value-of select="3"/>
       </xsl:otherwise>
     </xsl:choose>
   </xsl:variable>
   <xsl:call-template name="printTotal">
     <xsl:with-param name="bc" select="$gr"/>       
   </xsl:call-template>
 </tr>

Или вообще без переменной
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 <xsl:call-template name="printTotal">
   <xsl:with-param name="bc">
     <xsl:choose>
       <xsl:when test="$cnt = 0">
         <xsl:value-of select="1"/>
       </xsl:when>
       <xsl:when test="$cnt > 0">
         <xsl:value-of select="2"/>
       </xsl:when>
       <xsl:otherwise>
         <xsl:value-of select="3"/>
       </xsl:otherwise>
     </xsl:choose>
   </xsl:with-param>
</xsl:call-template>
 

...
Рейтинг: 0 / 0
Как "переменную" в XSLT сделать действительно переменной?
    #39591903
verter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,
понял. спасибо!
получается что variable на самом деле const
...
Рейтинг: 0 / 0
Как "переменную" в XSLT сделать действительно переменной?
    #39592238
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
verterполучается что variable на самом деле constИменно так. Как и xsl:param
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Как "переменную" в XSLT сделать действительно переменной?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]