I've been playing a bit with BaseX the last couple of days - and very
excited about the product while doing so - but now I am having problems
outputting JSON from a PHP script.
I have this XQuery:
declare option output:method "json";
declare option output:json "format=jsonml";
<json type="object">
{
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>
In the BaseX GUI this yields:
["json", {"type":"object"},
["testResults",
["testId",
["_id",
"Bio-1"]],
["grade",
["user_grade",
"7"]]],
["testResults",
["testId",
["_id",
"Bio-2"]],
["grade",
["user_grade",
"1"]]]]
Which is what I expected after reading about the JSONML format. (Not too
happy with that format, but that's another story).
Running exactly the same XQuery form within a PHP script however yields
this:
<json type="object">
<testResults>
<testId>
<_id>Bio-1</_id>
</testId>
<grade>
<user_grade>7</user_grade>
</grade>
</testResults>
<testResults>
<testId>
<_id>Bio-2</_id>
</testId>
<grade>
<user_grade>1</user_grade>
</grade>
</testResults>
</json>
(script is attached; note that the $ signs have been escaped there so
that PHP will not try to evaluate them)
In other words, the result is being output as XML with an enclosing
<json> root tag, not as JSON.
What is happening here? And how can I have BaseX return JSON from PHP?
Paul Swennenhuis