Я пытаюсь удалить дочерний узел из родительского узла с помощью xquery.Скажем, у меня есть запись, показанная ниже в моем xml:
<entry>
<id>36</id>
<title>Engineering Village Author Tool</title>
<updated>2009-09-30T12:55:42Z</updated>
<libx:libapp>
<libx:entry xmlns:libx="http://libx.org/xml/libx2" src="37"/>
</libx:libapp>
</entry>
Как удалить дочерний узел
<libx:entry xmlns:libx="http://libx.org/xml/libx2" src="37"/>
Я использую следующий код xquery:
declare namespace libx='http://libx.org/xml/libx2';
declare namespace atom='http://www.w3.org/2005/Atom';
declare variable $child_id as xs:string external;
declare variable $parent_id as xs:string external;
declare variable $doc_name as xs:string external;
declare variable $feed as xs:anyAtomicType := doc($doc_name)/atom:feed;
let $parent_entry := $feed/atom:entry[atom:id=$parent_id]
return delete node $parent_entry//libx:entry[@libx:src=$child_id]
Значения передаваемых здесь переменных: child_id = 37 parent_id = 36 doc_name = имя используемого документа
Я предполагаю, что что-то не так с тем, как я использую пространства имен или выражение xpathя использую в своем xquery в строке:
return delete node $parent_entry//libx:entry[@libx:src=$child_id]
Пожалуйста, помогите мне исправить это.