DECLARE @x xml =
'<A>
<B name="235">
<A1>
<C id="1.1"/>
<D id="1.2" />
</A1>
</B>
<B name="535">
<A1>
<C id="2.1"/>
<D id="2.2" />
</A1>
</B>
</A>'
Я хочу получить значение атрибута предка B (idB) для каждого тега на 4 уровне (C, D).
Например:
<node tag="C">
<id>1.1</id>
<idB>235</idB>
</node>
<node tag="D">
<id>1.2</id>
<idB>235</idB>
</node>
<node tag="C">
<id>2.1</id>
<idB>535</idB>
</node>
<node tag="D">
<id>2.2</id>
<idB>535</idB>
</node>
Я использую XQuery на SQL Сервер:
SELECT @x.query('for $b in /A/B/A1/*
return
<node tag="{local-name($b)}">
<id>{data($b/@*[1])}</id>
<idB>{data(//logu[.//$b]/@*[1])}</idB>
</node>
')
Но я получаю ошибку;
Синтаксическая ошибка около "$ b", ожидаемое выражение шага