<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=EN-US link=blue vlink=purple>
<div class=Section1>
<p class=MsoNormal>Hello all,<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>I’m new to XQuery and this XQuery mailing list and
I’m hoping someone can help me answer a question that has been
stumping me.<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>I know how to use XQuery to find nodes that match a certain
pattern, but I need to find a way to pass back the parent nodes of the nodes
matching the pattern.<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>For example , here is a small subset from my test XML
document (using completely made up names and addresses) and following that is
my Xquery. I highlighted the matching node tag for my XQuery for easy
identification:<o:p></o:p></p>
<div style='mso-element:para-border-div;border:none;border-bottom:double windowtext 2.25pt;
padding:0in 0in 1.0pt 0in'>
<p class=MsoNormal style='border:none;padding:0in'><o:p> </o:p></p>
</div>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><?xml version="1.0"?><o:p></o:p></p>
<p class=MsoNormal><Company><o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><Person><o:p></o:p></p>
<p class=MsoNormal><Name><o:p></o:p></p>
<p class=MsoNormal> <LastName>Smith</LastName><o:p></o:p></p>
<p class=MsoNormal> <FirstName>Bob</FirstName><o:p></o:p></p>
<p class=MsoNormal> <MiddleInitial></MiddleInitial><o:p></o:p></p>
<p class=MsoNormal></Name><o:p></o:p></p>
<p class=MsoNormal><Address><o:p></o:p></p>
<p class=MsoNormal> <StreetAddress1>123 Elm
St</StreetAddress1><o:p></o:p></p>
<p class=MsoNormal>
<StreetAddress2></StreetAddress2><o:p></o:p></p>
<p class=MsoNormal> <City>Loganville</City><o:p></o:p></p>
<p class=MsoNormal> <State>LA</State><o:p></o:p></p>
<p class=MsoNormal> <span style='background:yellow;
mso-highlight:yellow'><Zipcode>12345</Zipcode></span><o:p></o:p></p>
<p class=MsoNormal></Address><o:p></o:p></p>
<p class=MsoNormal></Person><o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><Person><o:p></o:p></p>
<p class=MsoNormal><Name><o:p></o:p></p>
<p class=MsoNormal> <LastName>Jones</LastName><o:p></o:p></p>
<p class=MsoNormal> <FirstName>Mike</FirstName><o:p></o:p></p>
<p class=MsoNormal>
<MiddleInitial>B</MiddleInitial><o:p></o:p></p>
<p class=MsoNormal></Name><o:p></o:p></p>
<p class=MsoNormal><Address><o:p></o:p></p>
<p class=MsoNormal> <StreetAddress1>456 Maple
St</StreetAddress1><o:p></o:p></p>
<p class=MsoNormal>
<StreetAddress2></StreetAddress2><o:p></o:p></p>
<p class=MsoNormal> <City>Baston</City><o:p></o:p></p>
<p class=MsoNormal> <State>LA</State><o:p></o:p></p>
<p class=MsoNormal> <Zipcode>12378</Zipcode><o:p></o:p></p>
<p class=MsoNormal></Address><o:p></o:p></p>
<p class=MsoNormal></Person><o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal></Company><o:p></o:p></p>
<div style='mso-element:para-border-div;border:none;border-bottom:double windowtext 2.25pt;
padding:0in 0in 1.0pt 0in'>
<p class=MsoNormal style='border:none;padding:0in'><o:p> </o:p></p>
</div>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>I am trying to search the entire XML document using XQuery
to return all <Person> nodes with a <Zipcode> value of
‘12345’. Here is my XQuery command I created:<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>for $address in //Company/Person/Address<o:p></o:p></p>
<p class=MsoNormal>where $address/Zipcode = '12345'<o:p></o:p></p>
<p class=MsoNormal>return $address<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>This returns to me the following results:<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><Address><o:p></o:p></p>
<p class=MsoNormal> <StreetAddress1>123 Elm
St</StreetAddress1><o:p></o:p></p>
<p class=MsoNormal> <StreetAddress2/><o:p></o:p></p>
<p class=MsoNormal> <City>Loganville</City><o:p></o:p></p>
<p class=MsoNormal> <State>LA</State><o:p></o:p></p>
<p class=MsoNormal> <Zipcode>12345</Zipcode><o:p></o:p></p>
<p class=MsoNormal></Address><o:p></o:p></p>
<div style='mso-element:para-border-div;border:none;border-bottom:double windowtext 2.25pt;
padding:0in 0in 1.0pt 0in'>
<p class=MsoNormal style='border:none;padding:0in'><o:p> </o:p></p>
</div>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>The problem with the results above is that I need to return
the entire <Person> (including all sub-nodes) with the matching
<Zipcode> string, not just the person’s <Address> node since
the <Address> node alone does not tell me who is the matching person. With
the results I got back from the XQuery above I only get the <Address>
node, and I can’t seem to figure out how to return the entire
<Person> node. Here is the expected results I was hoping to receive for
this example:<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><Person><o:p></o:p></p>
<p class=MsoNormal><Name><o:p></o:p></p>
<p class=MsoNormal> <LastName>Smith</LastName><o:p></o:p></p>
<p class=MsoNormal> <FirstName>Bob</FirstName><o:p></o:p></p>
<p class=MsoNormal>
<MiddleInitial></MiddleInitial><o:p></o:p></p>
<p class=MsoNormal></Name><o:p></o:p></p>
<p class=MsoNormal><Address><o:p></o:p></p>
<p class=MsoNormal> <StreetAddress1>123 Elm
St</StreetAddress1><o:p></o:p></p>
<p class=MsoNormal>
<StreetAddress2></StreetAddress2><o:p></o:p></p>
<p class=MsoNormal> <City>Loganville</City><o:p></o:p></p>
<p class=MsoNormal> <State>LA</State><o:p></o:p></p>
<p class=MsoNormal> <Zipcode>12345</Zipcode><o:p></o:p></p>
<p class=MsoNormal></Address><o:p></o:p></p>
<p class=MsoNormal></Person><o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>Does anybody know if it is possible to get the results I am
looking for? If so, please let me know the proper syntax to use for my XQuery
command. I have looked everywhere for a solution and I can’t seem
to find anything.<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>Thank you very much in advance,<o:p></o:p></p>
<p class=MsoNormal>Steve Taylor<o:p></o:p></p>
<p class=MsoNormal>sstaylo@comcast.net<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
</div>
</body>
</html>