2014-09-04 56 views
0

我遇到了XML Web响应问题。 Inner Loop warehouseItems有一个节点leadTimeCumulative,leadTimeDays在第一次和第二次位置上第一次出现,其余的是最后一次。我需要将这些节点始终放在循环的最后位置。如何使用XSLT更改节点位置

<Envelope> 
    <Body> 
    <searchItemResponse> 
     <status> 
     <statusCode>Success</statusCode> 
     </status> 
     <itemList> 
     <itemWithWarehouses> 
      <item> 
      <originOfData>SME</originOfData> 
      <itemNumbers> 
       <shortNumber>115632</shortNumber> 
       <tssArticleNumber>PT0401450-T46N</tssArticleNumber> 
      </item> 
      <warehouseItems> 
      <leadTimeCumulative>14</leadTimeCumulative> 
      <leadTimeDays>14</leadTimeDays> 
      <warehouse> 
       <code>GA01</code> 
      </warehouse>- 
      <stockItem>- 
       <quantities> 
        <quantityAvailable>0</quantityAvailable> 
        <quantityOnHand>0</quantityOnHand> 
       </quantities> 
      </stockItem>- 
      <stockClass> 
       <group>MTO</group> 
      </stockClass> 
      </warehouseItems>- 
      <warehouseItems>- 
      <warehouse> 
       <code>GL01</code> 
      </warehouse>- 
      <stockItem>- 
       <quantities> 
        <quantityAvailable>0</quantityAvailable> 
        <quantityOnHand>0</quantityOnHand> 
       </quantities> 
      </stockItem>- 
      <stockClass> 
       <group>MTO</group> 
      </stockClass> 
      <leadTimeCumulative>14</leadTimeCumulative> 
      <leadTimeDays>14</leadTimeDays> 
      </warehouseItems>- 
      <warehouseItems>- 
      <warehouse> 
       <code>GS01</code></warehouse>- 
      <stockItem>- 
       <quantities> 
        <quantityAvailable>0</quantityAvailable> 
        <quantityOnHand>0</quantityOnHand> 
       </quantities> 
      </stockItem>- 
      <stockClass> 
       <group>MTO</group> 
      </stockClass> 
      <leadTimeCumulative>10</leadTimeCumulative> 
      <leadTimeDays>10</leadTimeDays> 
      </warehouseItems>- 
     </itemWithWarehouses> 
     </itemList> 
    </searchItemResponse> 
    </Body> 
</Envelope> 

我需要改变的节点leadTimeCumulative和leadTimeDays的位置到最后像环结构的其余任何XSLT。请帮帮我。

以上部分解决。 我需要与此一起改进.tssArticleNumber节点需要复制到具有不同节点名称(如“项目编号”)的相应仓库项目。请为我提供另一个XSLT。由于

回答

0

尝试以下样式:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:output omit-xml-declaration="yes" indent="yes"/> 

    <xsl:strip-space elements="*"/> 

    <!-- this is called an identity template --> 
    <xsl:template match="node()|@*"> 
     <xsl:copy> 
      <xsl:apply-templates select="node()|@*"/> 
     </xsl:copy> 
    </xsl:template> 

    <!-- a template to override warehouseItems -->  
    <xsl:template match="warehouseItems"> 
     <xsl:copy> 
      <!-- apply templates except leadTimeCumulative and leadTimeDays --> 
      <xsl:apply-templates select="node()[not(self::leadTimeCumulative) and not(self::leadTimeDays)]|@*"/> 
      <Item_No><xsl:value-of select="../item//tssArticleNumber"/></Item_No> 
      <xsl:apply-templates select="leadTimeCumulative"/> 
      <xsl:apply-templates select="leadTimeDays"/> 
     </xsl:copy> 
    </xsl:template> 

</xsl:stylesheet> 
+0

由于乔尔,它的工作原理就像一个魅力......布拉沃 – 2014-09-04 07:21:19

+0

我还有一个要求乔尔,请帮帮我。 – 2014-09-04 09:54:07

+0

有一个名为tssArticleNumber的节点。我需要在WarehouseItems中有一个Node“Item No”节点的副本。 – 2014-09-04 09:57:51