Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / variable и сравнение / 5 сообщений из 5, страница 1 из 1
11.07.2008, 14:55
    #35425725
XX_78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
variable и сравнение
Подскажите пожалуйста, почему variable не срабатывает с ни с if ни с when

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
*******
<xsl:choose>
      <xsl:when test="contains(element[@Id='NAD02']/subelement[@Sequence=1],'/')">
  	<xsl:variable name="pr_t" select="substring-after(element[@Id='NAD02']/subelement[@Sequence=1],'/')"/>
       </xsl:when>
       <xsl:otherwise>
              <xsl:variable name="pr_t" select="element[@Id='NAD02']/subelement[@Sequence=1]"/>
       </xsl:otherwise>
</xsl:choose>
*******************
...
Рейтинг: 0 / 0
11.07.2008, 15:05
    #35425748
SuSa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
variable и сравнение
Помница мне она имеет присвоенное ей значение только внутри шаблона.
так что ей сильно не пооперируешь, если будешь передавать в другие шаблоны, используй xsl:param
...
Рейтинг: 0 / 0
11.07.2008, 16:47
    #35426076
roces
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
variable и сравнение
Ошибка скорее всего заключается в том, что парсер сообщает о том, что переменная не определена. В случае условного оператора, она действительно может быть не определена(исходя из логики парсера), если стоит внутри "when" или "otherwise". Если ее определить вне условного оператора, то она получит значение в любом случае и парсер ругаться не бдет.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
<xsl:variable name="pr_t">
   <xsl:choose>
      <xsl:when test="contains(element[@Id='NAD02']/subelement[@Sequence=1],'/')">
  	  <xsl:value-of select="substring-after(element[@Id='NAD02']/subelement[@Sequence=1],'/')"/>
      </xsl:when>
      <xsl:otherwise>
          <xsl:value-of select="element[@Id='NAD02']/subelement[@Sequence=1]"/>
      </xsl:otherwise>
    </xsl:choose>
</xsl:variable>
...
Рейтинг: 0 / 0
11.07.2008, 22:36
    #35426523
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
variable и сравнение
XX_78Подскажите пожалуйста, почему variable не срабатывает с ни с if ни с when
Область видимости переменной ограничен блоком, где она определена.

В Вашем случае нужно делать так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
<xsl:variable name="pr_t">
  <xsl:choose>
      <xsl:when test="contains(element[@Id='NAD02']/subelement[@Sequence=1],'/')">
              <xsl:value-of select="substring-after(element[@Id='NAD02']/subelement[@Sequence=1],'/')"/>
       </xsl:when>
       <xsl:otherwise>
              <xsl:value-of select="element[@Id='NAD02']/subelement[@Sequence=1]"/>
       </xsl:otherwise>
  </xsl:choose>
</xsl:variable>
...
Рейтинг: 0 / 0
14.07.2008, 10:24
    #35427782
XX_78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
variable и сравнение
Огромное Всем СПАСИБО!!!
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / variable и сравнение / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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