почему функция суммы не может работать в XSLT1.0? - PullRequest
0 голосов
/ 27 марта 2019

Я использую «функцию суммы» для вычисления общего количества, структура XML немного сложна, я искал в Интернете, функцию суммы можно использовать в XSLT 1.0, но я попробовал, она не работает для меня, я делаю не знаю почему?

мой XSLT:

  <xsl:template match="/">
  <html>
<body>
<table border="1">
      <tr>
      <th>Quantity</th>
       </tr>
       <xsl:for-each select="warehouses/warehouse">
       <tr>      
          <td><xsl:value-of select="sum(items/item/s_qty)"/></td>     
       </tr>
      </xsl:for-each>
  </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>

мой XML:

<warehouses>
    <warehouse>
             <w_id>22</w_id>
             <w_name>Namekagon</w_name>
             <address>
                    <w_city>Indonesia</w_city>
                    <w_country>Indonesia</w_country>
             </address>
             <items>
                   <item>
                        <i_name>MECLIZINE HYDROCHLORIDE</i_name>
                        <s_qty>909</s_qty>
                    </item>
                </items>
      </warehouse>
      <warehouse>
             <w_id>21</w_id>
             <w_name>kagon</w_name>
             <address>
                    <w_city>Indonesia</w_city>
                    <w_country>Indonesia</w_country>
             </address>
             <items>
                   <item>
                        <i_name>MECLIZINE HYDROCHLORIDE</i_name>
                        <s_qty>587</s_qty>
                    </item>
                </items>
      </warehouse>
      <warehouse>
             <w_id>21</w_id>
             <w_name>kagon</w_name>
             <address>
                    <w_city>Singapore</w_city>
                    <w_country>Singapore</w_country>
             </address>
             <items>
                   <item>
                        <i_name>MECLIZINE HYDROCHLORIDE</i_name>
                        <s_qty>587</s_qty>
                    </item>
                </items>
      </warehouse>

результат должен быть: 1496

1 Ответ

0 голосов
/ 27 марта 2019

если вы хотите сумму для всех s_qty, вы должны изменить

  <xsl:for-each select="warehouses">
       <tr>      
          <td><xsl:value-of select="sum(warehouse/items/item/s_qty)"/></td>     
       </tr>
   </xsl:for-each>

см. Преобразование в https://xsltfiddle.liberty -development.net / bnnZW7

также выможно использовать <xsl:value-of select="sum(//s_qty)"/>

...