
es:serialize-attachments( $instance as map:map, $format as xs:string ) as map:map
This function is deprecated and will not be supported in MarkLogic 11.
A utility function used to serialize the attachments on an instance
into either JSON or XML envelopes.
| Parameters | |
|---|---|
| instance | The instance whose attachments are to be serialized. |
| format | The format in which to serialize the attachments. Must be one of "json" or "xml". |
If the data format specified in the format does not
match the format of an attachment, then that attachment is serialized
as a string. For example, if an attachment is an XML element and the
requested format is JSON, then the attachment is serialized as the
string representation of the XML.
xquery version "1.0-ml";
import module namespace es = "http://marklogic.com/entity-services"
at "/MarkLogic/entity-services/entity-services.xqy";
import module namespace person =
"http://example.org/example-person/Person-0.0.1"
at "/es-gs/person-0.0.1-conv.xqy";
let $source := fn:doc('/es-gs/raw/1234.xml')
let $instance := person:extract-instance-Person($source)
let $envelope-format := "xml"
let $attachments := es:serialize-attachments($instance, "xml")
return ($instance, $attachments)
(: Returns the following output. Notice that xml attachment stored
: in the instance as a string has been reconstitued as an XML element
: node in the generated attachments.
:
: ( {"$type":"Person",
: "$attachments":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<person>\n <pid>1234</pid>\n <given>George</given>\n <family>Washington</family>\n</person>",
: "id":"1234",
: "firstName":"George",
: "lastName":"Washington",
: "fullName":"George Washington"},
:
: <es:attachments xmlns:es="http://marklogic.com/entity-services">
: <person><pid>1234</pid><given>George</given><family>Washington</family></person>
: </es:attachments> )
:)
xquery version "1.0-ml";
import module namespace es = "http://marklogic.com/entity-services"
at "/MarkLogic/entity-services/entity-services.xqy";
import module namespace person =
"http://example.org/example-person/Person-0.0.1"
at "/es-gs/person-0.0.1-conv.xqy";
let $source := fn:doc('/es-gs/raw/1234.xml')
let $instance := person:extract-instance-Person($source)
let $envelope-format := "json"
let $attachments := es:serialize-attachments($instance, "xml")
return ($instance, $attachments)
(: Returns the following output. Notice that XML attachment stored
: in the instance is returned as a string in the attachments when
: you request JSON serialization.
:
: ( {"$type":"Person",
: "$attachments":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<person>\n <pid>1234</pid>\n <given>George</given>\n <family>Washington</family>\n</person>",
: "id":"1234",
: "firstName":"George",
: "lastName":"Washington",
: "fullName":"George Washington"},
:
: {"attachments":[
: "<person><pid>1234</pid><given>George</given><family>Washington</family></person>"
: ]} )
:)
Stack Overflow: Get the most useful answers to questions from the MarkLogic community, or ask your own question.