我有以下XML:
<team>
<name>Sanha</name>
<players>
<player>
<name>Alberto Carreiras</name>
<skill>7</skill>
</player>
<player>
<name>Uông Bửu Đích</name>
<skill>8</skill>
</player>
...
</players>
<sum>0</sum>
</team>
<team>
...
</team>
是否有一种简单直接的方法来计算skill
的总和并将其插入标签?为了达到以下结果:
<team>
<name>Sanha</name>
<players>
<player>... </player>
<player>...</player>
...
</players>
<sum>15</sum>
</team>
我可以使用XPath来获得总和:
sum(/team/name["Sanha"]/following-sibling::players/player/skill)
假设我有一个可用的XSD文件来描述这些值。所有字母均为xsd:string
,所有数字均为xsd:float
。一切都没有限制。
但是我不知道如何将此值解析为sum
标记。
答案 0 :(得分:0)
如果要使用XSLT转换文档,请使用带有标识转换模板的样式表以及要实现的更改的模板:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="team[name = 'Sanha']/sum">
<xsl:copy>
<xsl:value-of select="sum(../players/player/skill)"/>
</xsl:copy>
</xsl:template>
</xsl:transform>
我不确定您是否只想计算名为Sanha
的特定团队的总和,如果您想为所有团队计算它,只需将匹配模式更改为<xsl:template match="team/sum">
。