Great suggestions. We have an open issue to look at the first issue but not the second. That would make a good addition
Sent from my iPad (excuse the terseness) David A Lee [email protected]<mailto:[email protected]> 812-630-7622 On Apr 21, 2013, at 10:50 AM, "Stu Salsbury" <[email protected]<mailto:[email protected]>> wrote: Thank you, David. Adding "element-namespace" certainly helps. I wish I'd thought of that. I guess that, unless the function is directly told that food is to be an array, it only renders the last element? Also, it would be great if: (a) there was a parameter to indicate that any elements which have multiplicity should be arrays; and (b) there was a parameter to indicate that the array elements should not be in the json (i.e. their content remains but is not wrapped with their name as a key/value). something like: (: I'm making up these parameter names -- this code isn't real!!! :) , $_ := map:put($c,"arrays-for-multiplicity",true); , $_ := map:put($c,"unwrap-array-elements",true); so that I'd get: {"foods":[{"id":1, "name":"celery", "price":50.2},{"id":2, "name":"beets", "price":23.3},{"id":3, "name":"goat cheese", "price":0.5}]} On Sun, Apr 21, 2013 at 4:49 AM, David Lee <[email protected]<mailto:[email protected]>> wrote: You need to indicate that food is an array element. Since you have now put food in a namespace your array-element-names isnt finding it. You either need to use an xs:QName() to give the full name of "food" or to declare the default namespace for the configuration using e.g. this should work , $_ := map:put($c,"array-element-names", xs:QName("agt:food") ) alternatively , $_ := map:put($c,"element-namespace","http://example.com/agt") which has the nice side effect of making the transformation reversable. ----------------------------------------------------------------------------- David Lee Lead Engineer MarkLogic Corporation [email protected]<mailto:[email protected]> Phone: +1 812-482-5224<tel:%2B1%20812-482-5224> Cell: +1 812-630-7622<tel:%2B1%20812-630-7622> www.marklogic.com<http://www.marklogic.com/> From: [email protected]<mailto:[email protected]> [mailto:[email protected]<mailto:[email protected]>] On Behalf Of Stu Salsbury Sent: Sunday, April 21, 2013 1:18 AM To: [email protected]<mailto:[email protected]> Subject: [MarkLogic Dev General] transform-to-json -- custom config drops elements? I have the following xml <foods xmlns="http://example.com/agt" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > <food id="1" name="celery"> <price>50.2</price> </food> <food id="2" name="beets"> <price>23.3</price> </food> <food id="3" name="goat cheese"> <price>0.5</price> </food> </foods> With the following xsd: <xs:schema targetNamespace="http://example.com/agt" attributeFormDefault="unqualified" elementFormDefault="unqualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" > <xs:element name="price" type="xs:decimal"/> <xs:element name="food"> <xs:complexType> <xs:sequence> <xs:element ref="price"/> </xs:sequence> <xs:attribute name="id" type="xs:integer"/> <xs:attribute name="name" type="xs:string"/> </xs:complexType> </xs:element> <xs:element name="foods"> <xs:complexType> <xs:sequence> <xs:element ref="food" maxOccurs="unbounded" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> When I execute the following query in the console: xquery version "1.0-ml"; import module namespace json = "http://marklogic.com/xdmp/json" at "/MarkLogic/json/json.xqy"; declare namespace agt = "http://example.com/agt"; let $c := json:config("custom") , $_ := map:put($c,"array-element-names", "food") return json:transform-to-json( doc("foods.xml") , $c ) ... I get: {"foods":{"food":{"id":3, "name":"goat cheese", "price":0.5}}} Something isn't clicking for me. What happened to the food elements? No array, and only the last one made it into the output. Note that taking out the array-element-names does *not* solve the missing food elements. Is this a bug or am I doing it wrong? I just started with MarkLogic Server, so I could very well be doing it wrong. Any advice appreciated. Regards, Stu _______________________________________________ General mailing list [email protected]<mailto:[email protected]> http://developer.marklogic.com/mailman/listinfo/general _______________________________________________ General mailing list [email protected]<mailto:[email protected]> http://developer.marklogic.com/mailman/listinfo/general
_______________________________________________ General mailing list [email protected] http://developer.marklogic.com/mailman/listinfo/general
