Mercurial > pub > ModelGenerator
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xslt/json.xsl Wed Feb 21 03:01:53 2018 +0300 @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsl:stylesheet version="1.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> + <xsl:output method="text"/> + + <xsl:template match="/"> + <xsl:apply-templates mode="json-array" /> + </xsl:template> + + <xsl:template match="*" mode="json-array"> + [ + <xsl:for-each select="*"> + <xsl:apply-templates select="." mode="json-value"/> + <xsl:if test="position() != last()">,</xsl:if> + </xsl:for-each> + ] + </xsl:template> + + <xsl:template match="*[count(*) != 0]" mode="json-array-item"> + "<xsl:value-of select="name()"/> : <xsl:apply-templates mode="json-value"/>" + <xsl:if test="position() != last()">,</xsl:if> + </xsl:template> + + <xsl:template match="*" mode="json-value"> + <xsl:choose> + <xsl:when test="count(*) != 0">{ <xsl:apply-templates mode="json-named-value" /> }</xsl:when> + <xsl:when test="text() = 'true'">true</xsl:when> + <xsl:when test="text() = 'false'">false</xsl:when> + <xsl:when test="text() = 'null'">null</xsl:when> + <xsl:when test="string(number(.)) != 'NaN'"><xsl:value-of select="number(.)"/></xsl:when> + <xsl:otherwise>"<xsl:value-of select="text()"/>"</xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="*" mode="json-named-value"> + <xsl:value-of select="name()"/> : <xsl:apply-templates select="." mode="json-value"/> + </xsl:template> +</xsl:stylesheet> \ No newline at end of file