2017-08-12 25 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

関連する問題