2015-11-20 225 views
1

以下是xml代碼,我在XSLT的輸入中提供了XSLT代碼,並提供了預期的輸出和區域,以便卡住。這是關於資產和相應基本計量表的一個例子。父節點和子節點交換xslt

  <BaseMeter> 
       <MeterName>Meter description</MeterName> 
       <MeterCode>Meter1</MeterCode> 
       <ASSETID> 
        <Name>Airco Unit</Name> 
        <Code>ID1</Code> 
       </ASSETID> 
      </BaseMeter> 
<BaseMeter> 
       <MeterName>Meter description</MeterName> 
       <MeterCode>Meter2</MeterCode> 
       <ASSETID> 
        <Name>Airco Unit</Name> 
        <Code>ID1</Code> 
       </ASSETID> 
      </BaseMeter> 

轉換的XML應該如下所示通過xslt實際轉換的xml代碼也在下面提供。

<Asset> 
    AssetID 
    AssetName 
    <Meter> 
     MeterID (eg. Meter 1) 
     MeterName 
    <Meter> 
    <Meter> 
     MeterID (eg. Meter 2) 
     MeterName 
    <Meter> 

我用下面的XSLT

<xsl:template match="/"> 

     <xsl:for-each-group select="BaseMeter" group-by="AssetID/Code"> 
      <Asset ID="{current-grouping-key()}"> 
       <xsl:copy-of select="current-group()"/> 

      </Asset> 
     </xsl:for-each-group> 

    </xsl:template> 

和輸出是這樣的,但同樣的資產ID和姓名被捕獲爲兒童的以資產標籤,如何刪除他們,使他們不出現輸出或轉換XML enter code here

<Asset ID="000244"> 
    <BaseMeter> 

       <MeterName>Meter Name</MeterName> 
       <MeterCode>0040</MeterCode> 
       <AssetID> 
        <Name>Airco Unit</Name> 
        <Code>000244</Code> 
       </AssetID> 
      </BaseMeter> 

這是我面臨的問題..將是非常好的,如果有人可以幫助我。我已經使用group by,無法破解如何移除再次出現的資產Id。

+0

你確定,你可以在你的XML找到InventoryItemRef? –

+0

我編輯了xslt – SSN

+0

您的輸入不是格式良好的XML(沒有單個根元素)。因此,輸出不能是你聲稱的。 –

回答

1

所需輸出看起來怪怪的,所以有產生更多converntional輸出模板:

<xsl:template match="/">  
    <xsl:for-each-group select="BaseMeter" group-by="ASSETID/Code"> 
     <Asset ID="{current-grouping-key()}"> 
      <xsl:for-each select="current-group()"> 
       <Meter> 
        <xsl:copy-of select="MeterName|MeterCode"/> 
       </Meter> 
      </xsl:for-each> 
     </Asset> 
    </xsl:for-each-group>  
</xsl:template> 

結果:

<Asset ID="ID1"> 
    <Meter> 
     <MeterName>Meter description</MeterName> 
     <MeterCode>Meter1</MeterCode> 
    </Meter> 
    <Meter> 
     <MeterName>Meter description</MeterName> 
     <MeterCode>Meter2</MeterCode> 
    </Meter> 
</Asset> 
+0

不,這是**不是結果,不能是結果。 –