【发布时间】: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>
【问题讨论】:
需要对所有属性值求和,而无需对属性名称进行实际硬编码。下面是具有 2 个属性的示例。场景是可能有 n 个事先不知道的属性。
<Books>
<Book a="10" b="20" />
<Book a="30" b="40" />
</Books>
输出:
<analysis>
<a>40</a>
<b>60</b>
</analysis>
【问题讨论】:
这是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>
【讨论】: