XSLT:基于其他属性名称的特定属性值的总和

Dan*_*ean 4 xml xslt xslt-1.0

我有以下XML文档(由另一方提供)

<transactions>
  <transaction TaxAType="11" TaxAValue="111" TaxBType="2" TaxBValue="222" TaxCType="3" TaxCValue="333"/>
  <transaction TaxAType="11" TaxAValue="111" TaxBType="2" TaxBValue="222" TaxCType="3" TaxCValue="333"/>
</transactions>
Run Code Online (Sandbox Code Playgroud)

我想编写一个XSLT文档来转换这些行,并总结Tax*Value,例如相应的Tax*Type ='11'.

这是不是可以使用模板?

XQuery中的name(),substring()等函数?你对此有何看法?

kam*_*uel 13

看看下面的XSLT:

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

    Sum of TaxA where type = 11:
    <xsl:value-of select="sum(transactions/transaction[@TaxAType='11']/@TaxAValue)" />

    Sum of all tax where type = 11:
    <xsl:value-of select="sum(transactions/transaction[@TaxAType='11']/@TaxAValue) 
      + sum(transactions/transaction[@TaxBType='11']/@TaxBValue) 
      + sum(transactions/transaction[@TaxCType='11']/@TaxCValue)" />

  </xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

它计算TaxAType = 11的节点的TaxAValue的总和以及Tax?Type = 11的节点的所有Tax?的值的总和.