powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Err: Variable pIndex5 has not declared
9 сообщений из 9, страница 1 из 1
Err: Variable pIndex5 has not declared
    #38227230
Tankiro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Err: Variable pIndex5 has not declared

Хочу в условии(<xsl:if test="$pIndex5 = 5"/>) использовать определенную выше переменную
(<xsl:variable name="pIndex5" select="5"/>), но выводит ошибку!
Подскажите, как с этим справиться

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:template match="/">    <!--5 7 21-->
        <xsl:text>
        </xsl:text>
        <xsl:for-each select="Table/Row">
            <xsl:for-each select="Cell">
                <xsl:variable name="pIndex" select="@Index"/>                 
                                            
                <xsl:variable name="pIndex7"/>
                
                <xsl:if test="$pIndex = 5">
                    <xsl:variable name="pIndex5" select="5"/>
                    <xsl:variable name="pData5" select="Data"/>
                </xsl:if>
                <xsl:if test="$pIndex = 7">
                    <xsl:if test="$pIndex5 = 5"/> <!--Ошибка в этой строке-->
                        <xsl:variable name="pData7" select="Data"/>
                    </xsl:if>
                </xsl:if>
            </xsl:for-each>           
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>  
...
Рейтинг: 0 / 0
Err: Variable pIndex5 has not declared
    #38227258
mhx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mhx
Гость
Переменная, объявленная внутри таких элементов, как <xsl:if>, <xsl:choose> или <xsl:for-each> не будет доступна вне этих элементов.
...
Рейтинг: 0 / 0
Err: Variable pIndex5 has not declared
    #38227281
Tankiro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если я объявляю переменную до цикла, то как переопределить значение переменной?
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:template match="/">    <!--5 7 21-->
<xsl:variable name="pIndex5"/> <!--Определил переменную здесь-->

<xsl:for-each select="Table/Row">
            <xsl:for-each select="Cell">
                <xsl:variable name="pIndex" select="@Index"/>                 
                                            
                <xsl:variable name="pIndex7"/>
                
                <xsl:if test="$pIndex = 5">
<!--Здесь нужно переопределить значение переменной  pIndex5-->
                    <xsl:variable name="pData5" select="Data"/>
                </xsl:if>
                <xsl:if test="$pIndex = 7">
                    <xsl:if test="$pIndex5 = 5"/> <!--Ошибка в этой строке-->
                        <xsl:variable name="pData7" select="Data"/>
                    </xsl:if>
                </xsl:if>
            </xsl:for-each>           
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>  
...
Рейтинг: 0 / 0
Err: Variable pIndex5 has not declared
    #38227339
Tankiro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По сути проблема такая:
Идем по Row, если пройдя цикл Index встретился со значениями 3,5,21 (должны присутствовать все значения), то запоминает значения в теге <Data>наше значение</Data> и потом выводим их



Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<Row>
    <Cell Index="3" StyleID="21"><Data Type="String">245</Data></Cell>
    <Cell Index="5" StyleID="21"><Data Type="String">Занько Никита Георгиевич</Data></Cell>
    <Cell Index="7" StyleID="21"><Data Type="String">06.10.1979</Data></Cell>
    <Cell StyleID="21"><Data Type="String">гор. Ленинград</Data></Cell>
    <Cell Index="10" StyleID="21"><Data Type="String">Мужской</Data></Cell>
    <Cell Index="12" StyleID="21"><Data Type="String">РОССИЯ</Data></Cell>
    <Cell Index="14" StyleID="21"><Data Type="String">Санкт-Петербург г,  Фрунзенский р-н, пр-кт Волковский, д. 8, кв 18</Data></Cell>
    <Cell Index="18" StyleID="21"><Data Type="String">Паспорт гражданина Российской Федерации</Data></Cell>
    <Cell Index="21" StyleID="21"><Data Type="String">4012 579103</Data></Cell>
   </Row>
...
Рейтинг: 0 / 0
Err: Variable pIndex5 has not declared
    #38227361
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TankiroЕсли я объявляю переменную до цикла, то как переопределить значение переменной?Никак. Фактически это не переменная, а константа.
...
Рейтинг: 0 / 0
Err: Variable pIndex5 has not declared
    #38227460
mhx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mhx
Гость
Возможно, что-то типа
Код: xml
1.
2.
3.
4.
5.
6.
    <xsl:template match="Cell">
        <xsl:if test="@Index=3 or @Index=5 or @Index=21">
            <xsl:copy-of select="Data" />
        </xsl:if>
    </xsl:template>
</xsl:stylesheet>
...
Рейтинг: 0 / 0
Err: Variable pIndex5 has not declared
    #38227494
Tankiro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mhx,

Так выбираются все теги Data, несмотря на условие, а нужно только содержимое этих тегов с нужными индексами
...
Рейтинг: 0 / 0
Err: Variable pIndex5 has not declared
    #38227520
mhx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mhx
Гость
Где все-то? Вот вывод
Код: xml
1.
2.
3.
4.
5.
6.
<?xml version="1.0" encoding="utf-8"?>
<Row>
    <Data Type="String">245</Data>
    <Data Type="String">Занько Никита Георгиевич</Data>
    <Data Type="String">4012 579103</Data>
</Row>
...
Рейтинг: 0 / 0
Err: Variable pIndex5 has not declared
    #38230584
mage.lan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mhx,

делайте так:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
 
<xsl:variable name="pIndex5">
<xsl:if test="$pIndex = 5">5</xsl:if>
</xsl:variable>
<xsl:variable name="pData5">
<xsl:if test="$pIndex = 5">
<xsl:copy-of select="Data" /> <!-- Для ваших данных этого достаточно -->
</xsl:if>
</xsl:variable>
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Err: Variable pIndex5 has not declared
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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