I've been experimenting with the xml-to-json function, but for some reason
my output is escaped. Why is that?
Stylesheet:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:f="
http://www.w3.org/2005/xpath-functions" version="3.0">
<xsl:output encoding="UTF-8" method="json"/>
<xsl:template match="/">
<xsl:variable name="transformed">
<xsl:apply-templates select="programs"/>
</xsl:variable>
<xsl:value-of select="xml-to-json($transformed, map{'indent':
true()})"/>
</xsl:template>
<xsl:template match="programs">
<f:array>
<xsl:apply-templates select="program"/>
</f:array>
</xsl:template>
<xsl:template match="program">
<f:map>
<f:string key="title">
<xsl:value-of select="@title"/>
</f:string>
</f:map>
</xsl:template>
</xsl:stylesheet>
input:
<programs>
<program title="ben hur"/>
</programs>
returns:
"[ \n { \"title \" : \"ben hur\" } ]"
Running this with Saxon 9.8 using Oxygen.
On Fri, Mar 8, 2019 at 1:00 PM David Maus lists@xxxxxxxxxx <
xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
> On Fri, 08 Mar 2019 12:49:28 +0100,
> Mukul Gandhi gandhi.mukul@xxxxxxxxx wrote:
> >
> > [1 <text/plain; UTF-8 (7bit)>]
> > [2 <text/html; UTF-8 (quoted-printable)>]
> > Hi all,
> >
> > I find the XPath 3.1 function json-to-xml() quite useful. It can
> > convert any JSON input to an XML representation. But I'm not
> > convinced that XPath 3.1's xml-to-json() function (as defined in
> > the spec) is much useful.
>
> It is very useful to me because it gives full control over the JSON
> output.
>
> At work we recently started to publish descriptions of digital objects
> as IIIF Manifests [1]. IIIF Manifest is a JSON-based metadata format,
> the source of the object descriptions is in XML.
>
> Example: Manuscript Cod. Guelf. 35 Helmst.
>
> XML:
> https://github.com/dmj/diglib-iiif/blob/master/examples/mss/35-helmst/mets.xml
> JSON: http://iiif.hab.de/object/mss_35-helmst/manifest.json
> XSL:
> https://github.com/dmj/diglib-iiif/blob/master/src/IIIF/Mapper/METS2IIIFv2.xsl
>
> Not sure if a 'generic' XML to JSON conversion would be of much
> help. Being explicit about the JSON structure makes the transformation
> manageable.
>
> Best,
> -- David
>
> >
> > Taking an example from XPath 3.1 F&O spec, the following XML document
> >
> > <array xmlns="http://www.w3.org/2005/xpath-functions
> "><number>1</number><string>is</string><boolean>1</boolean></array>
> >
> > converts into following JSON by the function xml-to-json(),
> >
> > [1,"is",true]
> >
> > (which is fine)
> >
> > But as per the XPath 3.1 F&O spec, simple XML documents like,
> >
> > <root>
> > <val>1</val>
> > <val>2</val>
> > <val>3</val>
> > <val>4</val>
> > </root>
> >
> > cannot be converted into JSON, by the function xml-to-json(), since the
> XML input doesn't conform to structure like <array>, <number>, <string> etc
> (which looks to me, a very limited capability given to the xml-to-json()
> function).
> >
> > Any comments would be useful.
> >
> > --
> > Regards,
> > Mukul Gandhi
> >
> > XSL-List info and archive
> > EasyUnsubscribe (by email)
>
> --
> David Maus M.A.
>
> Www: http://dmaus.name
> Twitter: @_dmaus
|