改变平面XML结构

时间:2013-06-19 19:18:19

标签: xml xslt xpath

我的客户端总是向我发送一个平面XML文件,如下所示:

<Root>
  <ROW>
    <KIND>A</KIND>
    <DATA>Produc 1</DATA>
    <DATA>Details</DATA>
  </ROW>
  <ROW>
    <KIND>A</KIND>
    <DATA>Product 2</DATA>
    <DATA>Details</DATA>
  </ROW>
    <ROW>
    <KIND>B</KIND>
    <DATA>Product 3</DATA>
    <DATA>Details</DATA>
    </ROW>
  <ROW>
    <KIND>B</KIND>
    <DATA>Product 4</DATA>
    <DATA>Details</DATA>
    </ROW>
</Root>

我需要一个按KIND分组的XML,如下所示:

  <Root>
  <KIND>A
    <DATA>Product 1</DATA>
    <DATA>Details</DATA>
    <DATA>Product 2</DATA>
    <DATA>Details</DATA>
  </KIND>
  <KIND>B  
    <DATA>Product 3</DATA>
    <DATA>Details</DATA>
    <DATA>Product 4</DATA>
    <DATA>Details</DATA>
  </KIND>
</Root>

我现在不知道我能完成它吗?谢谢大家。

1 个答案:

答案 0 :(得分:2)

<xsl:for-each-group select="ROW" group-by="KIND">
  <KIND>
    <xsl:value-of select="current-grouping-key()"/>
    <xsl:copy-of select="current-group()/*"/>
  </KIND>
</xsl:for-each-group>

但我同意Kevin Brown的看法 - 你的输出设计甚至比输入的设计更差。