使用XSLT拆分输入XML

使用XSLT拆分输入XML,xml,xslt-2.0,soa,Xml,Xslt 2.0,Soa,我想基于元素“ConsolidatedID”拆分输入XML,并使用XSL转换创建新的输出XML,这可能吗 如何在SOA12c中使用XSLT实现这一点 输入XML: <Root> <Data> <ConsolidatedID>ONE</ConsolidatedID> <NewID>First</NewID> <Amount>100</Amount> </Data> <Data>

我想基于元素“ConsolidatedID”拆分输入XML,并使用XSL转换创建新的输出XML,这可能吗

如何在SOA12c中使用XSLT实现这一点

输入XML:

<Root>
<Data>
<ConsolidatedID>ONE</ConsolidatedID>
<NewID>First</NewID>
<Amount>100</Amount>
</Data>
<Data>
<ConsolidatedID>ONE</ConsolidatedID>
<NewID>First</NewID>
<Amount>100</Amount>
</Data>
<Data>
<ConsolidatedID>ONE</ConsolidatedID>
<NewID>Second</NewID>
<Amount>200</Amount>
</Data>
<Data>
<ConsolidatedID>TWO</ConsolidatedID>
<NewID>First</NewID>
<Amount>100</Amount>
</Data>
<Data>
<ConsolidatedID>TWO</ConsolidatedID>
<NewID>First</NewID>
<Amount>100</Amount>
</Data>
<ConsolidatedID>TWO</ConsolidatedID>
<NewID>Four</NewID>
<Amount>400</Amount>
</Data>
</Root>

一个
弗斯特
100
一个
弗斯特
100
一个
第二
200
两个
弗斯特
100
两个
弗斯特
100
两个
四
400
预期O/p:

<Root>
<Data>
<ConsolidatedID>ONE</ID>
<NewID>First</NewID>
<Amount>100</Amount>
</Data>
<Data>
<ConsolidatedID>ONE</ConsolidatedID>
<NewID>First</NewID>
<Amount>100</Amount>
</Data>
<Data>
<ConsolidatedID>ONE</ConsolidatedID>
<NewID>Second</NewID>
<Amount>200</Amount>
</Data>
</Root>


<Root>
    <Data>
    <ConsolidatedID>TWO</ConsolidatedID>
    <NewID>First</NewID>
    <Amount>100</Amount>
    </Data>
    <Data>
    <ConsolidatedID>TWO</ConsolidatedID>
    <NewID>First</NewID>
    <Amount>100</Amount>
    </Data>
    <ConsolidatedID>TWO</ConsolidatedID>
    <NewID>Four</NewID>
    <Amount>400</Amount>
    </Data>
    </Root>

一个
弗斯特
100
一个
弗斯特
100
一个
第二
200
两个
弗斯特
100
两个
弗斯特
100
两个
四
400
有人能帮我解决这个问题吗

问候,, 毗湿奴。

在标准XSLT2.0中(不知道SOA到底支持什么),您可以使用

<xsl:template match="Root">
  <xsl:for-each-group select="Data" group-by="ConsolidatedID">
    <xsl:result-document href="{current-grouping-key()}.xml">
      <Root>
        <xsl:copy-of select="current-group()"/>
      </Root>
    </xsl:result-document>
  </xsl:for-each-group>
</xsl:template>