SpaRood
February 10th, 2008, 12:52 PM
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.
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.