我正在尝试将以下XML转换为JSON以进行分配,但我收到错误:
This XML file does not appear to have any style information associated with it.
source.xml
<people>
<name>John</name>
</people>
converter.xslt
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
{
"people":
{
<xsl:for-each select="people">
"name":
["
<xsl:value-of select="people/name"/>
"]
</xsl:for-each>
}
}
</xsl:template>
</xsl:stylesheet>
对于我做错的任何建议表示赞赏。我认为问题是元素的价值,但无法理解问题所在。
答案 0 :(得分:2)
将第一行添加到source.xml
文件中,使其如下所示:
<?xml-stylesheet type="text/xsl" href="converter.xslt" ?>
<people>
<name>John</name>
</people>
并删除XSLT中的第一行和'name'之前的'people /'引用,以便它看起来像这样:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
{
"people":
{
<xsl:for-each select="people">
"name":
["
<xsl:value-of select="name"/> <!-- REMOVE the 'people' before the 'name' -->
"]
</xsl:for-each>
}
}
</xsl:template>
</xsl:stylesheet>
这应该有效。如果您使用浏览器访问
file:///home/path/source.xml
结果是:
{
"people":
{
"name":
["
John
"]
}
}
答案 1 :(得分:0)
我认为,在最终版本中,您将拥有几个名称,例如:
<people>
<name>John</name>
<name>George</name>
<name>Eva</name>
</people>
输出名称列表应为:
类似这样的事:[ "John", "George", ... ]
尝试以下XSL:
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:variable name="names" select="people/name"/>
<xsl:variable name="separ">", "</xsl:variable>
{
"people":
{
"name": ["<xsl:value-of select="$names" separator="{$separ}"/>"]
}
}
</xsl:template>
</xsl:stylesheet>
然后输出列表符合上述要求。