Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Вложенность тегов / 9 сообщений из 9, страница 1 из 1
23.03.2007, 15:25
    #34412004
XX_78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенность тегов
как правильно прописать путь, если есть
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<a> 
   <b/>
    ...
   <f/>
</a> 
<a> 
   <b/>
   <d/>
    ...
   <f/>
</a>
а необходимо получить, только a/.../f
...
Рейтинг: 0 / 0
23.03.2007, 15:29
    #34412023
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенность тегов
a//f
если правильно понял, что тебе надо.
...
Рейтинг: 0 / 0
23.03.2007, 16:01
    #34412167
XX_78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенность тегов
Не совсем, правильно задала вопрос.
Я вызываю
Код: plaintext
1.
<xsl:variable name="testCount" select="count(following-sibling::f) - count(following-sibling::not(f)[1]/following-sibling::f)"/>
<xsl:apply-templates select="following-sibling::f and position()<=$testCount]"/>

но это приемлемо только если тег <f> будет единственным тегом в теге <а> , а это не всегда так.
...
Рейтинг: 0 / 0
23.03.2007, 17:08
    #34412429
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенность тегов
а что это означает? Что не устраивает? И чего бы хотелось?
...
Рейтинг: 0 / 0
23.03.2007, 17:33
    #34412516
SuSa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенность тегов
Сам(а) же написал(а)
XX_78
[src] ...- count(following-sibling::not(f)[1]/following-sibling::f)"/>

что сомтреть надо первый тег
Потдерживаю maXmo в вопросе:
" И чего бы хотелось?"
...
Рейтинг: 0 / 0
23.03.2007, 17:43
    #34412538
XX_78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенность тегов
Прошу прощения, что опять бросаю много информации, но я плохо знаю XSL, а работу сделать необходимо.


У меня есть xsl :

Код: 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.
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" encoding="windows-1251" indent="yes"/>
<xsl:template match="/ediroot/interchange">
<UZ-XDOC doc_version="1.0" doc_type="data">
<HEAD from="{sender/address/@Id}" to="{receiver/address/@Id}" messcode="2514"/>
<BODY>
<xsl:apply-templates select="group/transaction"/>
</BODY>
</UZ-XDOC>
</xsl:template>
<xsl:template match="transaction">
<xsl:element name="OTPR">
<xsl:apply-templates select="segment[@Id='EQD' and element[@Id='EQD01']='RR']"/>
</xsl:element>
</xsl:template>

<xsl:template match="segment[@Id='EQD' and element[@Id='EQD01']='RR']">
<xsl:element name="VAGON">
<xsl:attribute name="nom_pp">
<xsl:number value="position()" format="1"/>
</xsl:attribute>
<xsl:apply-templates select="following-sibling::segment[@Id='SEL' ]"/>
</xsl:element>
</xsl:template>

<xsl:template match="segment[@Id='SEL']">
<xsl:if test="element[@Id='SEL01']">
<xsl:variable name="dt" select="element[@Id='SEL01']"/>
<xsl:element name="PAY">
<xsl:attribute name="date_op">
<xsl:value-of select="substring($dt,3,8)"/>
</xsl:attribute>
</xsl:element>
</xsl:if>
</xsl:template>

</xsl:stylesheet>

После преобразования получается:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<?xml version="1.0" encoding="windows-1251"?>
<UZ-XDOC doc_version="1.0" doc_type="data">
<HEAD from="GVCMPSRU" to="GIVCUZ" messcode="2514" />
<BODY>
<OTPR>
<VAGON nom_pp="1">
<PAY date_op="1720359130" />
<PAY date_op="1778459780" />
<PAY date_op="003333331" />
</VAGON>
<VAGON nom_pp="2">
<PAY date_op="003333331" />
</VAGON>
<VAGON nom_pp="3">
<PAY date_op="003333331" />
</VAGON>
......
</OTPR>
</BODY>
</UZ-XDOC>
А должно получиться:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<?xml version="1.0" encoding="windows-1251"?>
<UZ-XDOC doc_version="1.0" doc_type="data">
<HEAD from="GVCMPSRU" to="GIVCUZ" messcode="2514" />
<BODY>
<OTPR>
<VAGON nom_pp="1">
<PAY date_op="1720359130" />
<PAY date_op="1778459780" />
</VAGON>

<VAGON nom_pp="2">
</VAGON>

<VAGON nom_pp="3">
<PAY date_op="003333331" />
</VAGON>
.....
</OTPR>
</BODY>
</UZ-XDOC>

А
Код: plaintext
1.
<xsl:apply-templates select="following-sibling::segment[@Id='SEL' and position()<=$testCount]"/>
<xsl:variable name="testCount" select="count(following-sibling::segment[@Id='SEL']) - count(following-sibling::segment[not(@Id='SEL')][1]/following-sibling::segment[@Id='SEL'])"/>
не подходит, т.к. между сегментами EQD и SEL могут быть разные сегменты.
...
Рейтинг: 0 / 0
26.03.2007, 11:25
    #34414924
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенность тегов
хмм… ты хочешь обработать сегменты SEL до следующего EQD? Попробуй так:
Код: plaintext
1.
2.
<xsl:variable name="testCount" select="count(following-sibling::segment)
 - count(following-sibling::segment[@Id='EQD'][1]/following-sibling::segment)"/>
<xsl:apply-templates select="following-sibling::segment[@Id='SEL' and position()&lt;$testCount]"/>
Кстати интересный приёмчик, надо будет взять на вооружение :)
...
Рейтинг: 0 / 0
26.03.2007, 14:26
    #34415686
XX_78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенность тегов
Огромное спасибою
...
Рейтинг: 0 / 0
11.02.2008, 16:30
    #35124707
Dimchansky
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенность тегов
XX_78Огромное спасибою

XX_78, можешь связаться со мной по мылу: dimchansky собака gmail точка com для обмента опытом? :)
Я похоже получаю от тебя EDIFACT сообщения. :)
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Вложенность тегов / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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