powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / не могу получить элемент XML из цикла
9 сообщений из 9, страница 1 из 1
не могу получить элемент XML из цикла
    #37143183
Фотография johndes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть два xml:
<?xml-stylesheet type="text/xsl" href="file.xsl"?>
<document1>
<input name="mail">text</input>
</document1>

<document2>
<input name='mail'/>
<input name='password'/>
</document2>

нужно перебрать элементы input из второго документа и если они соответствуют(по атрибуту name) первому то напечатать значение text

я белаю так:
<xsl:for-each select="document(document2)/input">
<xsl:when test="@name = /document/input/@name">
<xsl:value-of select="/document/input"/>
</xsl:when>
</xsl:for-each>

но парсер не видит элементы "/document/input" из цикла
...
Рейтинг: 0 / 0
не могу получить элемент XML из цикла
    #37143199
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Каким это образом шаблон может быть применим одновременно к двум разным xml?
...
Рейтинг: 0 / 0
не могу получить элемент XML из цикла
    #37143219
Фотография johndes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyКаким это образом шаблон может быть применим одновременно к двум разным xml?
с помощью функции document(URL)
...
Рейтинг: 0 / 0
не могу получить элемент XML из цикла
    #37143317
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
johndes,

Как то так: (второй документ назывется qq1.xml)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
	<xsl:variable name="doc2" select="document('qq1.xml')"/>
	<!-- -->
	<xsl:template match="/">
		<root>
			<xsl:apply-templates select="/document1/input"/>
		</root>
	</xsl:template>
	<!-- -->
	<xsl:template match="input">
		<xsl:variable name="cur_input" select="."/>

		<xsl:for-each select="$doc2/document2/input">
			<xsl:choose>
				<xsl:when test="./@name=$cur_input/@name">
					<item_yes>
						<xsl:value-of select="$cur_input/text()"/>
					</item_yes>
				</xsl:when>
				<xsl:otherwise>
					<item_no>
						<xsl:value-of select="@name"/>
					</item_no>
				</xsl:otherwise>
			</xsl:choose>
		</xsl:for-each>
	</xsl:template>
</xsl:stylesheet>
...
Рейтинг: 0 / 0
не могу получить элемент XML из цикла
    #37143673
Фотография johndes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refreg,

спасибо, конструкция <xsl:variable name="doc" select="document"/> очень помогла
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
не могу получить элемент XML из цикла
    #37897466
Part.k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый, есть XML файл и PHP:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
<?xml version="1.0" encoding="windows-1251"?>
<message>
<datetime>
<day>20120731</day>
</datetime>
<area>
<names>Рынок</names>
                <frukt name="Яблоко">
                <sort code="01">
                <value>125000</value>
                </sort>
                <sort code="02">
                <value>5000</value>
                </sort>
                </frukt>
                <frukt name="Вишня">      
                <sort code="03">
                <value>200000</value>
                </sort>
                <sort code="04">
                <value>15000</value>
                </sort>
                </frukt>
</area>
</message>


Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
<?PHP 
  $xml = simplexml_load_file('2.xml');

    foreach ($xml->area->frukt as $frukt)

   {  $name = $frukt['name'];

     $name = iconv ("UTF-8","windows-1251",$name);

      echo "$name <br>";

                foreach ($xml->area->frukt->sort as $sort) {

                $code = $ sort ['code'];

               $code = iconv ("UTF-8","windows-1251",$code);

                $value = $sort ->value;

                $value = iconv ("UTF-8","windows-1251",$value);

                echo " $code , $value <br>"; }

       }
   ?>


PHP выводит не тот результат который хотелось бы видеть, не могу добиться от него желаемого результата вида:
Яблоко
01 , 125000
02 , 5000
Вишня
03 , 200000
04 , 15000

выводит он мне:
Яблоко
01 , 125000
02 , 5000
Вишня
01 , 125000
02 , 5000
...
Рейтинг: 0 / 0
не могу получить элемент XML из цикла
    #37897517
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Part.kвыводит он мне:Не может такого быть. Приведенный код должен выводить такой список
Яблоко
01 , 125000
02 , 5000
03 , 200000
04 , 15000
Вишня
01 , 125000
02 , 5000
03 , 200000
04 , 15000
...
Рейтинг: 0 / 0
не могу получить элемент XML из цикла
    #37897524
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, чтобы работало правильно, нужно писать
Код: php
1.
foreach ($frukt->sort as $sort)
...
Рейтинг: 0 / 0
не могу получить элемент XML из цикла
    #37897626
Part.k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
огромное спасибо, заработало !!!
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / не могу получить элемент XML из цикла
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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