I would like to delete the "node2" nodes that have not child nodes. how can I do that
<node1>
<node2>
<node3>4</node3>
</node2>
<node2></node2>
<node2></node2>
</node1>
How can I do that with xquery>
If you want to modify a database, use XQuery Update:
delete nodes //node2
For inline XML snippets or when you want to modify the result output (and no database on disk), you can use a modify/transform statement:
copy $c :=
<node1>
<node2>
<node3>4</node3>
</node2>
<node2></node2>
<node2></node2>
</node1>
modify (
delete nodes $c//node2
)
return $c