/ / Schreiben von JSON mit XSLT - json, xslt

JSON mit XSLT schreiben - json, xslt

Ich versuche, XSLT zu schreiben, um ein bestimmtes zu transformierenWebseite zu JSON. Der folgende Code demonstriert, wie Ruby diese Konvertierung durchführen würde, aber das XSLT generiert kein gültiges JSON (es gibt ein zu viele Kommas im Array) - kann jemand XSLT schreiben, um gültiges JSON zu generieren?

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>

Antworten:

20 für die Antwort № 1

Lassen Sie das Komma aus der Zeile in der for-each und füge hinzu:

<xsl:if test="position() != last()">,</xsl:if>

Dies fügt jedem Element außer dem letzten ein Komma hinzu.


5 für die Antwort № 2

Das Aufteilen Ihres XSLT in separate Vorlagen kann die Lesbarkeit verbessern.

<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:text>[</xsl:text>
<xsl:apply-templates select="//div[@id="playlist_a"]//ul[@class="clearme"]" />
<xsl:text>]</xsl:text>
</xsl:template>

<xsl:template match="ul">
<xsl:text>{"artist":"</xsl:text><xsl:value-of select="li[@class="artist"]" />
<xsl:text>","track":"</xsl:text><xsl:value-of select="li[@class="song"]" />
<xsl:text>"}</xsl:text>
<xsl:if test="position() &lt; last()">,</xsl:if>
</xsl:template>
</xsl:stylesheet>

Außerdem können die Werte von Interpret und Song Ihre JSON beschädigen, wenn sie einfache Anführungszeichen enthalten. Das Ersetzen einzelner Anführungszeichen kann erforderlich sein.


0 für die Antwort № 3

Verwenden Sie stattdessen die Sitecore Item-Web-API. Es ist auf SDN verfügbar und wird als einfaches Plugin installiert. Wenn es installiert ist, können Sie REST verwenden, um Elemente als JSON zurückzugewinnen. Sie können nach Elementen suchen und die Sicherheit für die einzelnen über JSON verfügbaren Felder festlegen. Außerdem können Sie Sitecore-Elemente mithilfe von REST und JSON erstellen, löschen und aktualisieren.