XSLT суммирует стоимость - PullRequest
       0

XSLT суммирует стоимость

0 голосов
/ 13 сентября 2018

Мне нужно сгенерировать элемент, который накапливает общее количество для данного XML-ввода.

Ввод XML:

<catalog xmlns:foo="http://www.foo.org/" xmlns:bar="http://www.bar.org">
  <item id="1" amount="10" />
  <item id="2" amount="20" />           
</catalog>

Это мой XSLT:

 <?xml version="1.0" encoding="ISO-8859-1"?>
  <xsl:stylesheet version="1.0" 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
  xmlns:foo="http://www.foo.org/" xmlns:bar="http://www.bar.org">
  <xsl:template match="/">
  <html>
 <body>
 <h2>My CD Collection</h2>
 <table border="1">
  <tr bgcolor="#9acd32">
    <th>Id</th>
    <th>Amount</th>     
  </tr>

  <xsl:for-each select="catalog/item">
  <tr>
    <td><xsl:value-of select="@id"/></td>
    <td><xsl:value-of select="@amount"/></td>   

  <br/>
   Total: 

  </tr>
  </xsl:for-each>

</table>

И это мой вывод:

<html xmlns:foo="http://www.foo.org/" xmlns:bar="http://www.bar.org">
<body>
  <h2></h2>
  <table border="1">
     <tr bgcolor="#9acd32">
        <th>Id</th>
        <th>Amount</th>
     </tr>
     <tr>
        <td>1</td>
        <td>10</td>
        <br/>
 Total: 

  </tr>
     <tr>
        <td>2</td>
        <td>20</td>
        <br/>
  Total: 

  </tr>
  </table>

Результат должен быть Total = 30

Как реализовать функцию суммирования, которая возвращает правильное общее значение?

1 Ответ

0 голосов
/ 13 сентября 2018

Используйте функцию sum() для суммирования значений @amount:

<xsl:value-of select="sum(/catalog/item/@amount)"/>

Обратите внимание, что вы захотите переместить Total:пометьте вместе с указанным выше xsl:value-of за пределами вашего xsl:for-each цикла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...