powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Передача текстового узла в функцию string-length
4 сообщений из 4, страница 1 из 1
Передача текстового узла в функцию string-length
    #33804646
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть такой код:

Код: plaintext
1.
2.
3.
4.
5.
6.
       <xsl:variable name="value" select="a:A/a:B"/>
 
        <xsl:if test="string-length( $value )  != 0">
           <xsl:value-of select="$value"/>
           <xsl:text> </xsl:text>
        </xsl:if>

можно здесь обойтись без объявления переменной value? Т.е. можно ли как-нибудь сразу передать в функцию string-length текстовый узел елемента a:B ?

И еще один вопрос. Как переменной value присвоить новое значение?
...
Рейтинг: 0 / 0
Передача текстового узла в функцию string-length
    #33804850
beard-electronic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно, например
Код: plaintext
1.
"string-length(a:A/a:B/text())"
(явно передаем текстовый узел)

А переменным нельзя присваивать новые значения - они по своей сути - константы
...
Рейтинг: 0 / 0
Передача текстового узла в функцию string-length
    #33804941
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beard-electronicМожно, например
Код: plaintext
1.
"string-length(a:A/a:B/text())"
(явно передаем текстовый узел)


спасибо.

beard-electronic
А переменным нельзя присваивать новые значения - они по своей сути - константы

мдя, странные переменные. Хотя в for-each как я понимаю можно присваивать разные значения одной и той-же переменной.
...
Рейтинг: 0 / 0
Передача текстового узла в функцию string-length
    #33804978
beard-electronic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В области видимости переменной присваивать ей значение можно только раз,
в другом случае либо будет ошибка, либо трансформер проигнорирует.
Если у нас такая конструкция
Код: plaintext
1.
2.
3.
4.
<xsl:for-each select = "document('big.xml')/root/elem">
        <xsl:variable name="value" select="text()"/>
        <xsl:value-of select="$value"/>
 </xsl:for-each>
то, естественно, каждый раз будет выводится актуальное значение,
так как по сути каждый раз объявляется новая переменная.
Если же у нас так
Код: plaintext
1.
2.
3.
4.
5.
<xsl:variable name="value" select="'bla-bla'"/>
<xsl:for-each select = "document('big.xml')/root/elem">
        <xsl:variable name="value" select="text()"/>
        <xsl:value-of select="$value"/>
 </xsl:for-each>
ьл произойдет то же самое, так как во второом случае новое объявление переменной перекрывает первое - это уже новая переменная.
(вроде в MSXML такое не прокатит - у него плохо с областью видимости)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Передача текстового узла в функцию string-length
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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