I should have run your query before sending you an answer. The following query should work:
json:serialize( <json type="array" objects='_'>{ for $user in collection("saveresult")//user[_id="1f2cda8f-a18a-44ba-8d17-73626d472306"] return <_> <testId>{$user/test/_id}</testId> <grade>{$user/user_info/user_grade}</grade> </_> }</json> ) > >> Which is what I expected after reading about the JSONML format. (Not too >> happy with that format, but that's another story). > > I agree; JSONML is a quasi-standard we have adopted, which is mainly useful > for converting arbitrary XML to JSON. If you can decide how your XML format > looks like, I would recommend the standard conversion format: > > declare option output:method "json"; > > <json type="array" objects='_'>{ > for $user in > collection("saveresult")//user[_id="1f2cda8f-a18a-44ba-8d17-73626d472306"] > return > <testResults> > <testId>{$user/test/_id}</testId> > <grade>{$user/user_info/user_grade}</grade> > </testResults> > }</json> > >> > Running exactly the same XQuery form within a PHP script however yields >> this: > > The query results are currently sent to all clients in their standard format > (i.e., ignoring all serialization parameters). That's why you'll need to > convert your JSON within XQuery: > > json:serialize( > <json type="array" objects='_'>{ > ... > }</json> > ) > > If I remember what was the reason for that design decision, I'll give you an > update soon.. > > Hope this helps, > Christian > >