[xquery-talk] Need simple xquery help
adstech
adstech at bresnan.net
Thu Dec 20 14:48:57 PST 2007
Given:
Example.xml
____________________________________________________________________
<?xml version="1.0"?>
<pmcatalog>
<manufacture>
<mfg img="manufacturerlogos/arnelsonlogo.gif"
mfgID="G-mf-A.R._N-641" name="Nelson">
<pmdata>
<pmgroup>
<keyword>pgroup8</keyword>
<product>
<pmn modelid="234">
</pmn>
</product>
</pmgroup>
<pmgroup>
<keyword>pgroup1</keyword>
<product>
<pmn modelid="345">
</pmn>
</product>
</pmgroup>
<pmgroup>
<keyword>pgroup2</keyword>
<product>
<pmn modelid="456">
</pmn>
</product>
</pmgroup>
</pmdata>
</mfg>
<mfg img="manufacturerlogos/barns.gif" mfgID="barnsid"
name="Barns">
<pmdata>
<pmgroup>
<keyword>pgroup7</keyword>
<product>
<pmn modelid="567">
</pmn>
</product>
</pmgroup>
<pmgroup>
<keyword>pgroup10</keyword>
<product>
<pmn modelid="890">
</pmn>
</product>
</pmgroup>
<pmgroup>
<keyword>pgroup22</keyword>
<product>
<pmn modelid="556">
</pmn>
</product>
</pmgroup>
</pmdata>
</mfg>
</manufacture>
</pmcatalog>
____________________________________________________________________
The following query returns ALL the 'mfgs' - I don't understand why the
"where" doesn't restrict it to only the Nelson entry.
for $pmgroup in
doc("file:example.xml")/pmcatalog/manufacture/mfg/pmdata/pmgroup
where contains($pmgroup/keyword, "pgroup8")
return $pmgroup/../../../mfg
1) This returns mfg for Barns as well. I don't understand.
2) If I want to return a Node WITHOUT its children - how can I achieve
this? The desired results for my query would be:
<mfg img="manufacturerlogos/arnelsonlogo.gif" mfgID="G-mf-A.R._N-641"
name="Nelson">
<pmn modelid="234"></pmn>
<pmn modelid="345"></pmn>
<pmn modelid="456"></pmn>
</mfg>
I realize that I can "CONSTRUCT" OUTPUT via:
return <mfg img='{$ pmgroup /../../../@img/string()}' mfgID='{$ pmgroup
/../../../@mfgID/string()}' name='{$ pmgroup /../../@name/string()}' >
etc...
But how does one retrieve only the node "header" (for lack of a term to use)
- without its subsequent children. Picking and choosing nodes with their
attributes without the children.
Hopefully someone can show me the error of my ways :)
Thanx
Walt
More information about the talk
mailing list