Гость
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / кореллирующий подзапрос в xpath / 25 сообщений из 25, страница 1 из 1
16.08.2010, 15:13
    #36793736
makitka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кореллирующий подзапрос в xpath
всегда для меня была здесь некая недосказанность..
вроде и уверен, а с другой стороны, мало ли что.
интересует как 1.0, так и 2.0
можно ли сделать что-то подобное (на примере distinct)

node()[not(preceding-sibling::node()[.=.])]
при этом чтобы вторая . относилась к ноде из запроса верхнего уровня
...
Рейтинг: 0 / 0
16.08.2010, 15:14
    #36793743
makitka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кореллирующий подзапрос в xpath
Код: plaintext
node()[not(preceding-sibling::node()[.=.])]
...
Рейтинг: 0 / 0
16.08.2010, 22:19
    #36794493
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кореллирующий подзапрос в xpath
current() не то, что Вам нужно?
...
Рейтинг: 0 / 0
17.08.2010, 10:08
    #36794811
makitka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кореллирующий подзапрос в xpath
_Vasilisk_current() не то, что Вам нужно?
вроде нет. current() - это текущей контекстный узел, он не относится к тому первому node(), который написан в запросе
...
Рейтинг: 0 / 0
17.08.2010, 15:53
    #36795860
Andry Trushin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кореллирующий подзапрос в xpath
makitka,

xsl добавте, для ясности.

_Василиск_ - абсолютно прав указав вам на current(), т.к. эта функция приносит в XPath ноду в которой идет обработка, именно верхнего уровня, как вы и хотите
Код: plaintext
node()[not(preceding-sibling::node()[.=current()/.])]
...
Рейтинг: 0 / 0
17.08.2010, 16:32
    #36795994
makitka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кореллирующий подзапрос в xpath
Andry Trushinmakitka,

xsl добавте, для ясности.

_Василиск_ - абсолютно прав указав вам на current(), т.к. эта функция приносит в XPath ноду в которой идет обработка, именно верхнего уровня, как вы и хотите
Код: plaintext
node()[not(preceding-sibling::node()[.=current()/.])]

я могу повторить - мне не надо нода, в которой идет обработка, мне надо нода из запроса первого уровня, то есть
Код: plaintext
1.
2.
***node()***[not(preceding-sibling::node()[.=current()/.])]
             эта
можно ли как-то к ней обратиться?
xsl добавить смысла нет, так как вопрос по xpath. к примеру: выбрать все узлы, для которых нет предшествующих соседей с таким же значением
можно ли это написать в один запрос?
...
Рейтинг: 0 / 0
17.08.2010, 16:33
    #36795996
makitka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кореллирующий подзапрос в xpath
съехало..
Код: plaintext
1.
2.
***node()***[not(preceding-sibling::node()[.=current()/.])]
     ^
    эта
...
Рейтинг: 0 / 0
17.08.2010, 16:51
    #36796061
Andry Trushin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кореллирующий подзапрос в xpath
makitka,

невозможно рассматривать XPath в отрыве от дерева, которое вы обходите.
для каждого из тегов a, b, c вы можете узнать предидущие ноды, написать абстрактный XPath - нет.

Код: plaintext
1.
2.
3.
4.
5.
6.
<?xml version="1.0" encoding="windows-1251"?>
<root>
   <b> 1 </b>
   <c> 2 </c>
   <a> 1 </a>
   <a> 3 </a>
</root>

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<?xml version="1.0" encoding="windows-1251"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="html" />

    <xsl:template match="/">
        <xsl:for-each select="/root/*">
            <xsl:value-of select="name()" /> -
            <xsl:value-of select="count(preceding-sibling::node()[not(text()=current()/text())])" />
            <BR/>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>
...
Рейтинг: 0 / 0
17.08.2010, 17:04
    #36796098
makitka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кореллирующий подзапрос в xpath
ну он не абстрактный.
допустим я нахожусь в узле root
Код: plaintext
1.
2.
3.
4.
5.
<root>
<val> 1 </val>
<val> 2 </val>
<val> 3 </val>
<val> 2 </val>
</root>

мне надо один запросом на Xpath получить выборку узлов val, для которыхавторнет предшествующих соседей с таким же значением
...
Рейтинг: 0 / 0
17.08.2010, 17:06
    #36796103
makitka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кореллирующий подзапрос в xpath
как написать на XSLT, я знаю. меня интересует, возможно ли это одной строкой в XPath
...
Рейтинг: 0 / 0
17.08.2010, 18:53
    #36796394
Andry Trushin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кореллирующий подзапрос в xpath
makitka,

о. наконец то вы сформулировали задачу.

Код: plaintext
node()[not(.=preceding-sibling::node())]
...
Рейтинг: 0 / 0
17.08.2010, 18:55
    #36796397
Andry Trushin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кореллирующий подзапрос в xpath
точнее даже так, а то бог знает в каком руте вы сидите ;)
Код: plaintext
/root/node()[not(.=preceding-sibling::node())]
...
Рейтинг: 0 / 0
17.08.2010, 19:23
    #36796445
makitka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кореллирующий подзапрос в xpath
о, круто, спасибо за идею, я и забыл уже про знак = в XPath :)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
29.06.2012, 15:14
    #37860558
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кореллирующий подзапрос в xpath
Не получается уловить суть :(
Попробовал применить 9278349 к 9277509 , получилось, а какой xpath в for-each должен быть для такой структуры?
Код: 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.
26.
27.
28.
29.
30.
31.
32.
33.
<root>
	<ACTION>
		<DATE>03.03.2011</DATE>
		<ACTIONSTUDENT>
			<STUDENT>
				<RECORDNUMBER>1</RECORDNUMBER>
				<FACULTY>Станкостроение</FACULTY>
			</STUDENT>
			<STUDENT>
				<RECORDNUMBER>2</RECORDNUMBER>
			</STUDENT>
			<STUDENT>
				<RECORDNUMBER>3</RECORDNUMBER>
			</STUDENT>
			<STUDENT>
				<RECORDNUMBER>4</RECORDNUMBER>
				<FACULTY>Факультет менеджмента и экономики туристского бизнеса</FACULTY>
			</STUDENT>
			<STUDENT>
				<RECORDNUMBER>5</RECORDNUMBER>
				<FACULTY>Факультет спортивной и социально-культурной анимации</FACULTY>
			</STUDENT>
			<STUDENT>
				<RECORDNUMBER>6</RECORDNUMBER>
				<FACULTY>Факультет менеджмента туристской индустрии</FACULTY>
			</STUDENT>
			<STUDENT>
				<RECORDNUMBER>7</RECORDNUMBER>
				<FACULTY>Факультет менеджмента туристской индустрии</FACULTY>
			</STUDENT>
		</ACTIONSTUDENT>
	</ACTION>
</root>


Должен получиться список из четырех факультетов.
...
Рейтинг: 0 / 0
01.07.2012, 15:59
    #37862031
PA
PA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кореллирующий подзапрос в xpath
Antonariyкакой xpath в for-each должен быть для такой структуры?
Код: xml
1.
<xsl:for-each select="//STUDENT/FACULTY[not(.=preceding::node())]">
...
Рейтинг: 0 / 0
03.09.2012, 17:00
    #37941656
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кореллирующий подзапрос в xpath
Встрял еще на одном подзапросе.

Есть исходные данные:
Код: 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.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
<ROOT>
	<row DOC_ID="815" TAG="000" LastUpdate="2012-08-17T13:15:56.700" CODE="0" SufField="     n    22        4500" />
	<row DOC_ID="815" TAG="001" LastUpdate="2012-08-17T13:15:56.700" CODE="0" SufField="        00000055    BOOK00001068" />
	<row DOC_ID="815" TAG="005" CODE="0" SufField="20120817131556.7" />
	<row DOC_ID="815" TAG="008" CODE="0" SufField="030129                                 d" />
	<row DOC_ID="815" TAG="020" CODE="c" SufField="183-40" />
	<row DOC_ID="815" TAG="041" CODE="a" SufField="rus" />
	<row DOC_ID="815" TAG="080" CODE="a" SufField="15" />
	<row DOC_ID="815" TAG="084" CODE="a" SufField="88.53" />
	<row DOC_ID="815" TAG="090" CODE="a" SufField="88.53" />
	<row DOC_ID="815" TAG="090" CODE="x" SufField="К 24" />
	<row DOC_ID="815" TAG="090" CODE="c" SufField="88.53" />
	<row DOC_ID="815" TAG="245" CODE="a" SufField="Ваше преуспевание - в ваших руках" />
	<row DOC_ID="815" TAG="245" CODE="c" SufField="Д. Карнеги, Л.Д. Питер, С.Н. Паркинсон, А. Блох" />
	<row DOC_ID="815" TAG="245" CODE="h" SufField="Текст" />
	<row DOC_ID="815" TAG="260" CODE="a" SufField="М." />
	<row DOC_ID="815" TAG="260" CODE="b" SufField="Республика" />
	<row DOC_ID="815" TAG="260" CODE="c" SufField="1993" />
	<row DOC_ID="815" TAG="300" CODE="a" SufField="447 с." />
	<row DOC_ID="815" TAG="852" CODE="b" SufField="Б" />
	<row DOC_ID="815" TAG="852" CODE="p" SufField="284205-Б" />
	<row DOC_ID="815" TAG="852" CODE="t" SufField="1" />
	<row DOC_ID="815" TAG="901" CODE="t" SufField="m" />
	<row DOC_ID="1296" TAG="000" LastUpdate="2012-08-17T13:40:15.500" CODE="0" SufField="     n    22        4500" />
	<row DOC_ID="1296" TAG="001" LastUpdate="2012-08-17T13:40:15.500" CODE="0" SufField="    BOOK00000763                " />
	<row DOC_ID="1296" TAG="005" CODE="0" SufField="20120817134015.5" />
	<row DOC_ID="1296" TAG="008" CODE="0" SufField="950630s1995    rur           00000 rus d" />
	<row DOC_ID="1296" TAG="020" CODE="c" SufField="5200-00" />
	<row DOC_ID="1296" TAG="041" CODE="a" SufField="rus" />
	<row DOC_ID="1296" TAG="084" CODE="a" SufField="63.3(2)7" />
	<row DOC_ID="1296" TAG="090" CODE="a" SufField="63.3(2)7" />
	<row DOC_ID="1296" TAG="090" CODE="x" SufField="Б 72" />
	<row DOC_ID="1296" TAG="090" CODE="c" SufField="63.3(2)7" />
	<row DOC_ID="1296" TAG="100" CODE="a" SufField="Боффа, Д." />
	<row DOC_ID="1296" TAG="245" CODE="a" SufField="История Советского Союза" />
	<row DOC_ID="1296" TAG="245" CODE="b" SufField="в 2 т.: пер.с итал." />
	<row DOC_ID="1296" TAG="245" CODE="n" SufField="Т.1" />
	<row DOC_ID="1296" TAG="245" CODE="p" SufField="От революции до второй мировой войны. Ленин и Сталин. 1917-1941" />
	<row DOC_ID="1296" TAG="250" CODE="a" SufField="2-е изд." />
	<row DOC_ID="1296" TAG="260" CODE="a" SufField="М." />
	<row DOC_ID="1296" TAG="260" CODE="b" SufField="Международные отношения" />
	<row DOC_ID="1296" TAG="260" CODE="c" SufField="1994" />
	<row DOC_ID="1296" TAG="300" CODE="a" SufField="632 с." />
	<row DOC_ID="1296" TAG="653" CODE="a" SufField="история Советского Союза" />
	<row DOC_ID="1296" TAG="852" CODE="p" SufField="286393-П" />
	<row DOC_ID="1296" TAG="852" CODE="t" SufField="9" />
	<row DOC_ID="1296" TAG="852" CODE="p" SufField="286392-Р" />
	<row DOC_ID="1296" TAG="852" CODE="b" SufField="Б, П, Т" />
	<row DOC_ID="1296" TAG="852" CODE="p" SufField="286385-Б" />
	<row DOC_ID="1296" TAG="852" CODE="p" SufField="286386-Б" />
	<row DOC_ID="1296" TAG="852" CODE="p" SufField="286387-Б" />
	<row DOC_ID="1296" TAG="852" CODE="p" SufField="286388-Б" />
	<row DOC_ID="1296" TAG="852" CODE="p" SufField="286389-Б" />
	<row DOC_ID="1296" TAG="852" CODE="p" SufField="286390-Б" />
	<row DOC_ID="1296" TAG="852" CODE="p" SufField="286391-Б" />
	<row DOC_ID="1296" TAG="901" CODE="t" SufField="m" />

Нужно сгруппировать по DOC_ID и по TAG чтобы получить следующую структуру:

Код: 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.
<collection>
  <record>
    <leader>     n    22        4500</leader>
    <controlfield tag=" ">815</controlfield><!-- DOC_ID -->
	 <datafield tag="000">
		 <subfield code="0">     n    22        4500</subfield>
	 </datafield>
	  ...
	 <datafield tag="090">
		<subfield code="a">88.53</subfield>
		<subfield code="x">К 24</subfield>
		<subfield code="c">88.53</subfield>
	 </datafield>
	 <datafield tag="245">
		<subfield code="a">Ваше преуспевание - в ваших руках</subfield>
		<subfield code="c">Д. Карнеги, Л.Д. Питер, С.Н. Паркинсон, А. Блох</subfield>
		<subfield code="h">Текст</subfield>
	 </datafield>
	 ...
  </record>
  <record>
  ...
  </record>
</collection>


Сумел сгруппировать по DOC_ID, но дальше дело встало:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
	<xsl:template match="/ROOT">
		<collection>
			<xsl:for-each select="*[not(@DOC_ID=preceding-sibling::*/@DOC_ID)]">
				<xsl:variable name="DOC_ID" select="@DOC_ID"/>
				<record>
					<leader><xsl:value-of select="@SufField"/></leader>
					<controlfield tag=" "><xsl:value-of select="$DOC_ID"/></controlfield>
					<xsl:for-each select="parent::*/*[@DOC_ID=$DOC_ID][not(@TAG=preceding-sibling::*/@TAG)]">
						<datafield tag="{@TAG}"></datafield>
					</xsl:for-each>
				</record>
			</xsl:for-each>
		</collection>
	</xsl:template>

Выводится не повторяющийся TAG для всего набора данных, а не в рамках одного DOC_ID:
Код: 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.
  <record>
    <leader>     n    22        4500</leader>
    <controlfield tag=" ">815</controlfield>
    <datafield tag="000" />
    <datafield tag="001" />
    <datafield tag="005" />
    <datafield tag="008" />
    <datafield tag="020" />
    <datafield tag="041" />
    <datafield tag="080" />
    <datafield tag="084" />
    <datafield tag="090" />
    <datafield tag="245" />
    <datafield tag="260" />
    <datafield tag="300" />
    <datafield tag="852" />
    <datafield tag="901" />
  </record>
  <record>
    <leader>     n    22        4500</leader>
    <controlfield tag=" ">1296</controlfield>
    <datafield tag="100" />
    <datafield tag="250" />
    <datafield tag="653" />
  </record>
...
Рейтинг: 0 / 0
03.09.2012, 17:28
    #37941729
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кореллирующий подзапрос в xpath
Код: xml
1.
2.
3.
4.
<xsl:variable name="docs" select="parent::*/*[@DOC_ID=$DOC_ID]"/>
<xsl:for-each select="$docs[not(@TAG=preceding-sibling::*/@TAG)]">
  <datafield tag="{@TAG}"></datafield>
</xsl:for-each>


???
...
Рейтинг: 0 / 0
03.09.2012, 18:22
    #37941844
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кореллирующий подзапрос в xpath
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<xsl:template match="/MARCSQL_DOC">
	<collection xmlns="http://www.loc.gov/MARC21/slim">
		<xsl:for-each select="*[not(@DOC_ID=preceding-sibling::*/@DOC_ID)]">
			<xsl:variable name="DOC_ID" select="@DOC_ID"/>
			<record>
				<leader><xsl:value-of select="@SufField"/></leader>
				<controlfield tag=" "><xsl:value-of select="$DOC_ID"/></controlfield>

				<xsl:variable name="docs" select="parent::*/*[@DOC_ID=$DOC_ID]"/>
				<xsl:for-each select="$docs[not(@TAG=preceding-sibling::*/@TAG)]">
					<datafield tag="{@TAG}"></datafield>
				</xsl:for-each>
			</record>
		</xsl:for-each>
	</collection>
</xsl:template>

Результат тот же самый, только чуть медленнее.
...
Рейтинг: 0 / 0
03.09.2012, 23:01
    #37942123
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кореллирующий подзапрос в xpath
Значит ключами нужно группировать
...
Рейтинг: 0 / 0
04.09.2012, 00:08
    #37942166
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кореллирующий подзапрос в xpath
Это как? Не сталкивался еще с ключами.
...
Рейтинг: 0 / 0
04.09.2012, 02:44
    #37942219
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кореллирующий подзапрос в xpath
...
Рейтинг: 0 / 0
04.09.2012, 13:07
    #37942740
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кореллирующий подзапрос в xpath
Ключи частично помогли. Они вывели весь набор возможных значений @TAG для каждого @DOC_ID, потеряв сортировку по @TAG. Такого же эффекта мне удалось добиться вчера и без них, правда работало медленнее. Сортировку и фильтрацию ненужных @TAG удалось сделать шаблонами соответственно taglist и TAG.
Код: 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.
26.
27.
<xsl:key name="doc" match="row" use="@DOC_ID"/>

<xsl:template match="/MARCSQL_DOC">
	<collection xmlns="http://www.loc.gov/MARC21/slim">
		<xsl:apply-templates select="*[generate-id(.)=generate-id(key('doc',@DOC_ID))]" mode="key"/>
	</collection>
</xsl:template>

<xsl:template match="row" mode="key">
	<record>
		<leader><xsl:value-of select="@SufField"/></leader>
		<controlfield tag=" "><xsl:value-of select="@DOC_ID"/></controlfield>
		<xsl:apply-templates select="parent::*/*[not(@TAG=preceding-sibling::*/@TAG)]" mode="taglist">
			<xsl:sort select="@TAG" data-type="text" order="ascending" />
			<xsl:with-param name="DOC_ID" select="@DOC_ID"/>
		</xsl:apply-templates>
	</record>
</xsl:template>

<xsl:template match="row" mode="taglist">
	<xsl:param name="DOC_ID"/>
	<xsl:apply-templates select="parent::*/*[@DOC_ID=$DOC_ID][@TAG=current()/@TAG]" mode="TAG"/>
</xsl:template>

<xsl:template match="row" mode="TAG">
	<datafield tag="{@TAG}"></datafield>
</xsl:template>
...
Рейтинг: 0 / 0
04.09.2012, 13:23
    #37942773
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кореллирующий подзапрос в xpath
Последняя проблема:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
<?xml version="1.0" encoding="utf-8"?>
<collection xmlns="http://www.loc.gov/MARC21/slim">
  <record xmlns="">
    <leader>     n    22        4500</leader>
    <controlfield tag="00X">5929</controlfield>
    <datafield tag="000" ind1=" " ind2=" ">
      <subfield code="0">     n    22        4500</subfield>
    </datafield>

У всех record появился пустой атрибут xmlns, как от него избавиться?
...
Рейтинг: 0 / 0
04.09.2012, 13:30
    #37942785
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кореллирующий подзапрос в xpath
Наверное нужно весь шаблон приложить )
Код: 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.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
	<xsl:output method="xml" indent="yes"/>
	
	<xsl:key name="doc" match="row" use="@DOC_ID"/>
	
	<xsl:template match="/MARCSQL_DOC">
		<collection xmlns="http://www.loc.gov/MARC21/slim">
			<xsl:apply-templates select="*[generate-id(.)=generate-id(key('doc',@DOC_ID))]" mode="key"/>
		</collection>
	</xsl:template>

	<xsl:template match="row" mode="key">
		<record>
			<leader><xsl:value-of select="@SubField"/></leader>
			<controlfield tag="00X"><xsl:value-of select="@DOC_ID"/></controlfield>
			<xsl:apply-templates select="parent::*/*[not(@TAG=preceding-sibling::*/@TAG)]" mode="taglist">
				<xsl:sort select="@TAG" data-type="text" order="ascending" />
				<xsl:with-param name="DOC_ID" select="@DOC_ID"/>
			</xsl:apply-templates>
		</record>
	</xsl:template>

	<xsl:template match="row" mode="taglist">
		<xsl:param name="DOC_ID"/>
		<xsl:apply-templates select="parent::*/*[@DOC_ID=$DOC_ID][@TAG=current()/@TAG]" mode="TAG"/>
	</xsl:template>

	<xsl:template match="row" mode="TAG">
		<datafield tag="{@TAG}" ind1=" " ind2=" ">
			<xsl:apply-templates select="parent::*/*[@DOC_ID=current()/@DOC_ID][@TAG=current()/@TAG]" mode="SUBFIELD"/>
		</datafield>
	</xsl:template>

	<xsl:template match="row" mode="SUBFIELD">
		<subfield code="{@CODE}">
			<xsl:value-of select="@SubField"/>
		</subfield>
	</xsl:template>
</xsl:stylesheet>

...
Рейтинг: 0 / 0
04.09.2012, 13:52
    #37942821
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
кореллирующий подзапрос в xpath
Проблема решена.
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / кореллирующий подзапрос в xpath / 25 сообщений из 25, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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