Гость
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Вывод данных xslt / 12 сообщений из 12, страница 1 из 1
26.05.2010, 14:31
    #36650377
SergGun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод данных xslt
Подскажите есть 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
26.05.2010, 15:23
    #36650639
Anton_Demin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод данных xslt
SergGun,
Код: plaintext
1.
2.
3.
	<xsl:for-each select="child::shema[@st=1]">
		<xsl:value-of select="."/>
	</xsl:for-each>
...
Рейтинг: 0 / 0
26.05.2010, 16:27
    #36650912
SergGun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод данных xslt
Выводит еще и третий параметр пробую взять только 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
26.05.2010, 16:44
    #36650974
Anton_Demin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод данных xslt
SergGun,

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

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

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

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

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


так не работает
Код: 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
21.06.2010, 22:38
    #36699374
y-niko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод данных xslt
Вот как-то так:

<?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
21.06.2010, 22:47
    #36699387
y-niko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод данных xslt
Или лучше вот так, если с выбором по "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
22.06.2010, 10:43
    #36699866
y-niko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод данных xslt
Или вот так, с "модным" 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
22.06.2010, 14:35
    #36700644
Andry Trushin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод данных xslt
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
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Вывод данных xslt / 12 сообщений из 12, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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