我希望订单列表元素与输出JSON文件中的输入XML文件类似。我尝试使用XSLT,但它无法正常工作
我的输入XML文件是:
<description>
<p>This medicine is classified as a GLP-1 receptor agonist.</p>
<ol>
<li>Use this medicine once a week</li>
</ol>
</description>
我使用的XSL是:
<xsl:template match="description">
description:
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="p">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="ol">
<ol><xsl:apply-templates/></ol>
</xsl:template>
<xsl:template match="li">
<li><xsl:apply-templates/></li>
</xsl:template>
我得到的输出XML是:
description: 'This medicine is classified as a b : "GLP-1 receptor agonist."'
Use this medicine once a week
我希望输出JSON为:
description: 'This medicine is classified as a b : "GLP-1 receptor agonist."'
<ol><li>Use this medicine once a week</li></ol>
这在XML到JSON转换中是否可行? 请检查并提供正确的XSLT代码。在此先感谢。
答案 0 :(得分:0)
我完成了你的XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes" method="xml" />
<xsl:strip-space elements="*" />
<xsl:template match="description">
description:
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="p">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="ol">
<ol><xsl:apply-templates/></ol>
</xsl:template>
<xsl:template match="li">
<li><xsl:apply-templates/></li>
</xsl:template>
</xsl:stylesheet>
技巧 - 两个输出之间的差异在于开头method
元素的<xsl:output ...>
属性。
如果您使用
<xsl:output omit-xml-declaration="yes" indent="yes" method="text" />
你会得到
description:
This medicine is classified as a GLP-1 receptor agonist.Use this medicine once a weekctbankix@ctbankix:~/Do
如果您使用
<xsl:output omit-xml-declaration="yes" indent="yes" method="xml" />
你会得到
description:
This medicine is classified as a GLP-1 receptor agonist.<ol>
<li>Use this medicine once a week</li>
</ol>
根据需要。
答案 1 :(得分:0)
您只需要处理match
元素或节点,根据您的要求,您只需按照以下方式执行copy-of
节点ol
,
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes" method="xml" />
<xsl:strip-space elements="*" />
<xsl:template match="description">
description:
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="ol">
<xsl:copy-of select="." />
</xsl:template>
</xsl:stylesheet>