Hi Martin,
Thanks for the answer.
Deriving from your XSLT stylesheet, I wrote following that works,
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/2005/xpath-functions"
version="3.0">
<xsl:output method="text"/>
<xsl:template match="root">
<map>
<map key="{local-name()}">
<array key="val">
<xsl:apply-templates/>
</array>
</map>
</map>
</xsl:template>
<xsl:template match="val">
<!--<number>{.}</number>-->
<number><xsl:value-of select="."/></number>
</xsl:template>
<xsl:template match="/">
<xsl:variable name="json-xml">
<xsl:apply-templates/>
</xsl:variable>
<xsl:value-of select="xml-to-json($json-xml, map { 'indent' :
true() })"/>
</xsl:template>
</xsl:stylesheet>
If I write, <number>{.}</number> in above stylesheet, as you've suggested
instead of mine <number><xsl:value-of select="."/></number>, I get
following error
xml-to-json: Invalid number: {.}
(produced by Saxon PE)
Any idea, why this is so?
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> <http://www.w3.org/1999/XSL/Transform>
>
> xmlns:xs="http://www.w3.org/2001/XMLSchema"
> <http://www.w3.org/2001/XMLSchema>
> exclude-result-prefixes="#all"
> xmlns="http://www.w3.org/2005/xpath-functions"
> <http://www.w3.org/2005/xpath-functions>
> expand-text="yes"
> version="3.0">
>
> <xsl:mode on-no-match="shallow-skip"/>
>
> <xsl:output method="text"/>
> <xsl:strip-space elements="*"/>
>
> <xsl:template match="root">
> <map>
> <map key="{local-name()}">
> <array key="val">
> <xsl:apply-templates/>
> </array>
> </map>
> </map>
> </xsl:template>
>
> <xsl:template match="val">
> <number>{.}</number>
> </xsl:template>
>
> <xsl:template match="/">
> <xsl:variable name="json-xml">
> <xsl:apply-templates/>
> </xsl:variable>
> <xsl:value-of select="xml-to-json($json-xml, map { 'indent' : true()
> })"/>
> </xsl:template>
>
> </xsl:stylesheet>
>
--
Regards,
Mukul Gandhi
| Current Thread |
|
Message not available
|
|