标记元素不是JSON输出

时间:2016-11-30 06:50:34

标签: json xml xslt

我希望订单列表元素与输出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代码。在此先感谢。

2 个答案:

答案 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>