繁体   English   中英

xslt数组问题

[英]xslt array problem

我正在使用xslt将xml转换为json。 我遇到的问题是:如果特定的xml元素没有兄弟姐妹,它不会作为数组返回。

        <xsl:if test="count(preceding-sibling::*[name() = name(current())]) = 0">
        <xsl:text>"</xsl:text><xsl:value-of select="name()" /><xsl:text>":</xsl:text>
        <xsl:if test="count(following-sibling::*[name() = name(current())]) &gt; 0">
            <xsl:text>[</xsl:text>
        </xsl:if>
    </xsl:if>

我想要的是如果父级的兄弟姐妹拥有与数组相同的元素,那么这个元素也必须是一个数组。

所以我想要的是:

<element>
 <child_element>
  <grandchild_element>
     only one
  </grandchild_element>
 </child_element>
 <child_element>
  <grandchild_element>
     one
  </grandchild_element>
  <grandchild_element>
     two
  </grandchild_element>
 </child_element>

我想要以下输出

{
    "element": {
        "child-element": [
            {
                "grandchild_element": "only one"
            }
        ],
        "child-element": [
            {
                "grandchild_element": "one" ,
                "grandchild_element": "two"
            }
        ]
    }
}

谢谢

已经有很多尝试来定义XML和JSON之间的映射,这不是一个微不足道的问题。 我建议在尝试对此转换进行编码之前,先研究一些现有的建议映射,如果要进行不同的映射,请在开始编码之前仔细指定。

您要遇到的问题之一是,如果您在不了解架构的情况下尝试执行此操作,您将发现很难知道何时输出单个JSON对象以及何时输出单个成员阵列。 例如,如果某人有一个电话号码,您将输出一个值,但如果他们有多个,您将输出一个数组:您无法知道何时看到一个电话号码,收件人是否期望一个数组电话号码。 这不是一个编码问题,这是一个问题,即XML实例中没有足够的信息来区分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM