[xquery-talk] Selecting everything before and after path,
but without duplicated leafs
Junte Zhang
zhangjunte at gmail.com
Sun Feb 10 12:33:44 PST 2008
Hi all,
I have an XML file (quite long) and I have a path to an element. I
want to select
(1) everything of that path and its descendants, at the same time I
want to return everything (2) before that path, and everything (3)
after that path. I was trying the XPath axes "preceding" and
"following", but these axes are returning duplicate leafs, which is
not what I want. I would like to reconstruct the original XML file,
but with an extra tag for the XPath selection ($unit).
This is how my XQuery looks like.
let $doc := doc("file.xml")
let $precedingUnit := $doc/ead[1]/archdesc[1]/dsc[1]/c01[1]/preceding::node()
let $unit := $doc/ead[1]/archdesc[1]/dsc[1]/c01[1]/self::node()
let $followingUnit := $doc/ead[1]/archdesc[1]/dsc[1]/c01[1]/following::node()
return
<out>
<before>
{
$precedingUnit
}
</before>
<select>
{
$unit
}
</select>
<after>
{
$followingUnit
}
</after>
</out>
I am using XQuery with Saxon: java -cp saxon9.jar net.sf.saxon.Query query.xq
Could you please help me?
Thank you very much, I am really desperate in getting this working.
Kind regards
jz
More information about the talk
mailing list