用XSLT编写JSON
问题描述:
我正在尝试编写XSLT来将特定的网页转换为JSON.以下代码演示了Ruby如何进行此转换,但是XSLT不会生成有效的JSON(数组中有太多逗号)-有人知道如何编写XSLT来生成有效的JSON吗?
I'm trying to write XSLT to transform a specific web page to JSON. The following code demonstrates how Ruby would do this conversion, but the XSLT doesn't generate valid JSON (there's one too many commas inside the array) - anyone know how to write XSLT to generate valid JSON?
require 'rubygems'
require 'nokogiri'
require 'open-uri'
doc = Nokogiri::HTML(open('http://bbc.co.uk/radio1/playlist'))
xslt = Nokogiri::XSLT(DATA.read)
puts out = xslt.transform(doc)
# Now follows the XSLT
__END__
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
<xsl:output method="text" encoding="UTF-8" media-type="text/plain"/>
<xsl:template match="/">
[
<xsl:for-each select="//*[@id='playlist_a']//div[@class='artists_and_songs']//ul[@class='clearme']">
{'artist':'<xsl:value-of select="li[@class='artist']" />','track':'<xsl:value-of select="li[@class='song']" />'},
</xsl:for-each>
]
</xsl:template>
</xsl:stylesheet>
答
从for-each
内的行省略逗号,然后添加:
Omit the comma from the line inside the for-each
and add:
<xsl:if test="position() != last()">,</xsl:if>
这将为除最后一项之外的每一项添加一个逗号.
This will add a comma to each item except the last one.