[xquery-talk] XQuery question about accessing ancestor/parent
nodes of return values
Shannon Scott Shiflett
sss4r at virginia.edu
Fri May 9 17:57:29 PDT 2008
I see the highlight :)
I think you want to do:
for $person in //Company/Person
where $person/Address/Zipcode = '12345'
return $person
On May 9, 2008, at 4:36 PM, Steve Taylor wrote:
> Hello all,
>
> 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.
>
> 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.
>
> 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:
>
>
> <?xml version="1.0"?>
> <Company>
>
> <Person>
> <Name>
> <LastName>Smith</LastName>
> <FirstName>Bob</FirstName>
> <MiddleInitial></MiddleInitial>
> </Name>
> <Address>
> <StreetAddress1>123 Elm St</StreetAddress1>
> <StreetAddress2></StreetAddress2>
> <City>Loganville</City>
> <State>LA</State>
> <Zipcode>12345</Zipcode>
> </Address>
> </Person>
>
> <Person>
> <Name>
> <LastName>Jones</LastName>
> <FirstName>Mike</FirstName>
> <MiddleInitial>B</MiddleInitial>
> </Name>
> <Address>
> <StreetAddress1>456 Maple St</StreetAddress1>
> <StreetAddress2></StreetAddress2>
> <City>Baston</City>
> <State>LA</State>
> <Zipcode>12378</Zipcode>
> </Address>
> </Person>
>
> </Company>
>
>
>
> 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:
>
> for $address in //Company/Person/Address
> where $address/Zipcode = '12345'
> return $address
>
> This returns to me the following results:
>
> <Address>
> <StreetAddress1>123 Elm St</StreetAddress1>
> <StreetAddress2/>
> <City>Loganville</City>
> <State>LA</State>
> <Zipcode>12345</Zipcode>
> </Address>
>
>
> 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:
>
> <Person>
> <Name>
> <LastName>Smith</LastName>
> <FirstName>Bob</FirstName>
> <MiddleInitial></MiddleInitial>
> </Name>
> <Address>
> <StreetAddress1>123 Elm St</StreetAddress1>
> <StreetAddress2></StreetAddress2>
> <City>Loganville</City>
> <State>LA</State>
> <Zipcode>12345</Zipcode>
> </Address>
> </Person>
>
> 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.
>
> Thank you very much in advance,
> Steve Taylor
> sstaylo at comcast.net
>
>
>
> _______________________________________________
> talk at x-query.com
> http://x-query.com/mailman/listinfo/talk
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://x-query.com/pipermail/talk/attachments/20080509/61bbb560/attachment-0001.htm
More information about the talk
mailing list