【问题标题】:XSLT - Sum all the attribute valuesXSLT - 对所有属性值求和
【发布时间】:2021-10-03 03:11:44
【问题描述】:

需要对所有属性值求和,而无需对属性名称进行实际硬编码。下面是具有 2 个属性的示例。场景是可能有 n 个事先不知道的属性。

<Books>
 <Book a="10" b="20"  />
 <Book a="30" b="40"  />
</Books>

输出:

<analysis>
  <a>40</a>
  <b>60</b>
</analysis>

【问题讨论】:

    标签: xslt xpath xslt-2.0


    【解决方案1】:

    这是grouping中的一个简单练习:

    XSLT 2.0

    <xsl:stylesheet version="2.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
    
    <xsl:template match="/Books">
        <analysis>
            <xsl:for-each-group select="Book/@*" group-by="name()">
                <xsl:element name="{name()}">
                    <xsl:value-of select="sum(current-group())" />
                </xsl:element>
            </xsl:for-each-group>
        </analysis>
    </xsl:template>
    
    </xsl:stylesheet>
    

    【讨论】:

    • 我正在尝试将 name() 添加到 sum 参数,但它不起作用。使用分组确实让事情看起来更干净、更简单。感谢您的快速回复。
    • @HarshaJayaram 如果您的问题得到解答,请通过接受答案关闭它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-24
    • 1970-01-01
    • 1970-01-01
    • 2017-08-04
    • 1970-01-01
    相关资源
    最近更新 更多