从输入xml到输出xml的XSLT转换

时间:2011-03-17 07:41:06

标签: xslt

输入xml结构:

<Customer>
   <Order>
      <item><name>ID</name><value>11111</value><item>
   </Order>
   <Order>
      <item><name>ID</name><value>11111</value></item>
   </Order>
    <Order>
      <item><name>ID</name><value>22222</value></item>
   </Order>
   <Order>
      <item><name>ID</name><value>33333</value></item>
   </Order>
</Customer>

输出应为:

<Customer>
   <Order>
      <item><name>ID</name><value>11111</value><item>
   </Order>
   <Order>
      <item><name>ID</name><value>11111</value> </item>
   </Order>
</Customer>

<Customer>
  <Order>
      <item><name>ID</name><value>22222</value></item>
   </Order>
</Customer>
<Customer>
  <Order>
      <item><name>ID</name><value>33333</value></item>
   </Order>
</Customer>

此处&lt; Customer&gt;。&lt; Order&gt;。&lt; item&gt;。&lt; value&gt;会动态地来。 请任何人根据&lt; Order&gt;在xslt中为此转换提供解决方案。&lt; item&gt;。&lt; value&gt;

1 个答案:

答案 0 :(得分:1)

这是一个标准的分组问题。在XSLT 2.0中,使用

<xsl:template match="Customer">
 <xsl:for-each-group select="Order" group-by="item/value">
  <Customer>
    <xsl:copy-of select="current-group()"/>
  </Customer>
 </xsl:for-each-group>
</xsl:template>

如果你坚持使用XSLT 1.0,那就更棘手了:查看“Muenchian Grouping”(或者Dimitre Novatchev对本论坛上的问题的回复)。