2017-08-12 101 views
0

所以我有這個XML代碼,我需要添加具有相同ID的所有值。從「身份」屬性獲取ID,而不是將其與值10等進行比較。XSL - 如何添加具有相同屬性的所有值?

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="random.xsl"?> 
<RootName> 
    <RandomRootNode> 
     <RandomNode> 
      <Identity sid="10">abc</Identity> 
      <Identity sid="20">def</Identity> 
      <Identity sid="30">ghi</Identity> 
     </RandomNode> 
    </RandomRootNode> 
    <SeriesRootNode> 
     <Series> 
      <Ran dustId="10">1</Ran> 
      <Ran dustId="20">2</Ran> 
      <Ran dustId="30">3</Ran> 
     </Series> 
     <Series> 
      <Ran dustId="10">4</Ran> 
      <Ran dustId="20">5</Ran> 
      <Ran dustId="30">6</Ran> 
     </Series> 
     <Series> 
      <Ran dustId="10">7</Ran> 
      <Ran dustId="20">8</Ran> 
      <Ran dustId="30">9</Ran> 
     </Series> 
    </SeriesRootNode> 
</RootName> 

所以爲了這個,我需要這樣的

| ID | name | total | 
|----|------|-------| 
| 10 | abc | 12 | 
| 20 | def | 15 | 
| 30 | ghi | 18 | 

我試着這樣做顯示的東西,但我只能得到總所有這些的。所以我得到

| ID | name | total | 
|----|------|-------| 
| 10 | abc | 45 | 
| 20 | def | 45 | 
| 30 | ghi | 45 | 

我該如何解決這個問題?
我對編寫XSLT相當新穎。

+0

您可以編輯您的問題以顯示您嘗試過的XSLT嗎?謝謝。 –

回答

0

這是一個工作random.xsl
其輸出在瀏覽器中按照需要。

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

    <!-- Demo template --> 
    <xsl:template match="/RootName/RandomRootNode/RandomNode"> 
     <table border="1"> 
     <th width="50">ID</th><th>name</th><th>total</th> 
     <xsl:for-each select="Identity"> 
      <xsl:variable name="curID" select="@sid" /> 
      <tr> 
      <td align="center"><xsl:value-of select="$curID" /></td> 
      <td align="center"><xsl:value-of select="text()" /></td> 
      <td align="center"><xsl:value-of select="sum(/RootName/SeriesRootNode/Series/Ran[@dustId=$curID]/text())" /></td> 
      </tr> 
     </xsl:for-each> 
     </table> 
    </xsl:template> 

    <!-- Remove not matched text nodes --> 
    <xsl:template match="text()" /> 

</xsl:stylesheet> 
+0

你真的應該使用這個鍵。 –

+0

@ michael.hor257k:謝謝你提醒我。當然會下一次。 – zx485

相關問題