comparison xslt/json.xsl @ 0:cbdada054b4a

Basic schemas for generating csharp internal dom from model definition
author cin
date Wed, 21 Feb 2018 03:01:53 +0300
parents
children 14162f9133a1
comparison
equal deleted inserted replaced
-1:000000000000 0:cbdada054b4a
1 <?xml version="1.0" encoding="UTF-8"?>
2 <xsl:stylesheet version="1.0"
3 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
4 <xsl:output method="text"/>
5
6 <xsl:template match="/">
7 <xsl:apply-templates mode="json-array" />
8 </xsl:template>
9
10 <xsl:template match="*" mode="json-array">
11 [
12 <xsl:for-each select="*">
13 <xsl:apply-templates select="." mode="json-value"/>
14 <xsl:if test="position() != last()">,</xsl:if>
15 </xsl:for-each>
16 ]
17 </xsl:template>
18
19 <xsl:template match="*[count(*) != 0]" mode="json-array-item">
20 "<xsl:value-of select="name()"/> : <xsl:apply-templates mode="json-value"/>"
21 <xsl:if test="position() != last()">,</xsl:if>
22 </xsl:template>
23
24 <xsl:template match="*" mode="json-value">
25 <xsl:choose>
26 <xsl:when test="count(*) != 0">{ <xsl:apply-templates mode="json-named-value" /> }</xsl:when>
27 <xsl:when test="text() = 'true'">true</xsl:when>
28 <xsl:when test="text() = 'false'">false</xsl:when>
29 <xsl:when test="text() = 'null'">null</xsl:when>
30 <xsl:when test="string(number(.)) != 'NaN'"><xsl:value-of select="number(.)"/></xsl:when>
31 <xsl:otherwise>"<xsl:value-of select="text()"/>"</xsl:otherwise>
32 </xsl:choose>
33 </xsl:template>
34
35 <xsl:template match="*" mode="json-named-value">
36 <xsl:value-of select="name()"/> : <xsl:apply-templates select="." mode="json-value"/>
37 </xsl:template>
38 </xsl:stylesheet>