powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Вывод данных xslt
12 сообщений из 12, страница 1 из 1
Вывод данных xslt
    #36650377
SergGun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите есть 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.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
<shema st="0">


	<param1>Значение1</param1>
	<param2>Значение2</param2>
	<param3>нет</param3>

	<param1>Значение1- 1 </param1>
	<param2>Значение2- 2 </param2>
	<param3>нет</param3>


</shema>

<shema st="0">


	<param1>Значение1</param1>
	<param2>Значение2</param2>
	<param3>нет</param3>

	<param1>Значение1- 1 </param1>
	<param2>Значение2- 2 </param2>
	<param3>нет</param3>


</shema>
<shema st="1">


	<param1>Значение1</param1>
	<param2>Значение2</param2>
	<param3>нет</param3>

	<param1>Значение1- 1 </param1>
	<param2>Значение2- 2 </param2>
	<param3>нет</param3>


</shema>

Как выбрать данные с параметром st="1" что бы получить вывод
Значение1
Значение2
нет

Значение1-1
Значение2-2
нет

в лучшем случае у меня получается только так вывести
Значение1
Значение2
нет
...
Рейтинг: 0 / 0
Вывод данных xslt
    #36650639
Фотография Anton_Demin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergGun,
Код: plaintext
1.
2.
3.
	<xsl:for-each select="child::shema[@st=1]">
		<xsl:value-of select="."/>
	</xsl:for-each>
...
Рейтинг: 0 / 0
Вывод данных xslt
    #36650912
SergGun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выводит еще и третий параметр пробую взять только 2-ва

Код: plaintext
1.
2.
<xsl:for-each select="child::shema[@st=1]">
		 <xsl:value-of select="param1"/> <xsl:value-of select="param2"/>  
</xsl:for-each>

На выходе:
Значение1
Значение2

Нету:
Значение1-1
Значение2-2
...
Рейтинг: 0 / 0
Вывод данных xslt
    #36650974
Фотография Anton_Demin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergGun,

что надо получить в итоге?
...
Рейтинг: 0 / 0
Вывод данных xslt
    #36650986
SergGun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anton_Demin,
Итог должен быть такой

Значение1
Значение2

Значение1-1
Значение2-2

Изначальное количество тэгов <param1> <param2> <param3> неизвестно может быть 1 может быть 100
...
Рейтинг: 0 / 0
Вывод данных xslt
    #36650996
Фотография Anton_Demin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergGun,

если я правильно понял, то нужно выбрать все теги, кроме тех которые содержат значение "нет".
...
Рейтинг: 0 / 0
Вывод данных xslt
    #36651006
SergGun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anton_Demin,
Практически так только если значение "нет" то <param3> не выводиться, иначе выводиться.
...
Рейтинг: 0 / 0
Вывод данных xslt
    #36656172
SergGun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может кто знает все таки как взять только два значения, а не все


так не работает
Код: plaintext
1.
2.
<xsl:for-each select="child::shema[@st=1]">
		 <xsl:value-of select="param1"/> <xsl:value-of select="param2"/>  
</xsl:for-each>
...
Рейтинг: 0 / 0
Вывод данных xslt
    #36699374
y-niko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот как-то так:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

<xsl:template match="shema[attribute::st=1]">
<xsl:apply-templates select="node()"/>
</xsl:template>

<xsl:template match="shema[attribute::st!=1]">
</xsl:template>

<xsl:template match="param1">
<xsl:value-of select="."/>
</xsl:template>

<xsl:template match="param2">
<xsl:value-of select="."/>
</xsl:template>

<xsl:template match="param3">
</xsl:template>
</xsl:stylesheet>
...
Рейтинг: 0 / 0
Вывод данных xslt
    #36699387
y-niko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Или лучше вот так, если с выбором по "param3":
Код: 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.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
	
	<xsl:template match="shema[attribute::st=1]">
		<xsl:apply-templates select="node()"/>
	</xsl:template>

	<xsl:template match="shema[attribute::st!=1]">
	</xsl:template>
	
	<xsl:template match="param1">
		<xsl:value-of select="."/>
	</xsl:template>

	<xsl:template match="param2">
		<xsl:value-of select="."/>
	</xsl:template>

	<xsl:template match="param3">
		<xsl:if test="normalize-space(string(text()))!='нет'">
			<xsl:value-of select="."/>
		</xsl:if>
	</xsl:template>
</xsl:stylesheet>
...
Рейтинг: 0 / 0
Вывод данных xslt
    #36699866
y-niko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Или вот так, с "модным" xsl:key
Код: 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 version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

	<xsl:key name="key1" match="shema" use="attribute::st"/>
	
	<xsl:template match="/">
		<xsl:apply-templates select="key('key1','1')"/>
	</xsl:template>
	
	<xsl:template match="shema">
		<xsl:apply-templates/>
	</xsl:template>

	<xsl:template match="param1">
		<xsl:value-of select="."/>
	</xsl:template>

	<xsl:template match="param2">
		<xsl:value-of select="."/>
	</xsl:template>

	<xsl:template match="param3">
		<xsl:if test="not(normalize-space(string(text()))='нет')">
			<xsl:value-of select="."/>
		</xsl:if>
	</xsl:template>
</xsl:stylesheet>

...
Рейтинг: 0 / 0
Вывод данных xslt
    #36700644
Andry Trushin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergGun,

если не известно сколько их, то можно делать так.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    <xsl:template match="/">
        <xsl:apply-templates select="//shema[@st='1']" />
    </xsl:template>

    <xsl:template match="shema">
        <xsl:for-each select="*">
            <xsl:if test="normalize-space(text())!='нет'">
                <xsl:value-of select="text()" />
            </xsl:if>
            <BR/>
        </xsl:for-each>
    </xsl:template>
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Вывод данных xslt
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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