XSLT

2013-12-18 32 views
6

kullanarak JSON'a XML dönüştürme sorunları XSLT kullanarak bir XML'i JSON'a dönüştürmeye çalışıyorum. Aşağıdaki benim XML ve XSLT kodum.XSLT

XML dosyası:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<catalog> 
    <cd> 
     <title>Empire Burlesque</title> 
     <artist>Bob Dylan</artist> 
     <country>USA</country> 
     <price>10.90</price> 
     <year>1985</year> 
    </cd> 
    <cd> 
     <title>Subrayana kathe</title> 
     <artist>Subba</artist> 
     <country>India</country> 
     <price>30</price> 
     <year>1986</year> 
    </cd> 
</catalog> 

XSLT dosyası: XSLT'dan

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:template match="/"> 
     { 
"catalog":[ 
     <xsl:for-each select="catalog/cd"> 
     {"title":" 
     <xsl:value-of select="title" /> 
     ", 
"artist":" 
     <xsl:value-of select="artist" /> 
     "}, 
     </xsl:for-each> 
     ] 
     } 
    </xsl:template> 
</xsl:stylesheet> 

Çıktı:

{ 
    "catalog":[ 
     { 
     "title":"Empire Burlesque", 
     "artist":"Bob Dylan" 
     }, 
     { 
     "title":"Subrayana kathe", 
     "artist":"Subba" 
     },(Problematic comma) 
    ] 
} 

sorun ekstra bir virgül de ('') olmasıdır dizideki son nesnenin sonu. XSLT'de bundan kaçınmanın bir yolu var mı?

cevap

11

Yalnızca xml'nize başka bir cd öğesi varsa virgülü yazınız. <xsl:if test="./following-sibling::cd">,</xsl:if>

Yani stil böyle bir şey olacaktır:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:template match="/"> 
     { 
"catalog":[ 
     <xsl:for-each select="catalog/cd"> 
     {"title":" 
     <xsl:value-of select="title" /> 
     ", 
"artist":" 
     <xsl:value-of select="artist" /> 
     "}<xsl:if test="./following-sibling::cd">,</xsl:if> 
     </xsl:for-each> 
     ] 
     } 
    </xsl:template> 
</xsl:stylesheet> 

Yani temelde böyle bir xsl:if açıklamada şu virgül sarmak zorunda