XSLT 聚合 XML 标记值并存储新标记
XSLT aggregating XML tag values and storing new tag
我是 xslt 的新手,正在尝试使用 XSLT 在 XML 以下进行处理:
<xml>
<characters>
<char a="a1" b="b1" y="y1" z="z1" weight="100">F</char>
<char a="a2" b="b2" y="y2" z="z2" weight="80">r</char>
<char a="a3" b="b3" y="y3" z="z3" weight="80">o</char>
<char a="a4" b="b4" y="y4" z="z4" weight="100">m</char>
</characters>
</xml>
产生输出 XML :
<word>
<value>From</value>
<coordinates>a1 b1 y4 z4</coordinates>
<avgWeight>90</avgWeight>
</word>
其中坐标构成第一个和最后一个字符的坐标,avgWeight 聚合权重标签的值。
由于 XSLT 变量是不可变的,我无法执行以下操作。帮助我找到解决方案。
Since XSLT variables are immutable, I'm unable perform below operation.
我看不出有什么变量,不可变的或不可变的,与它有什么关系。这只是简单的 XSLT:
XSLT 1.0
<xsl:stylesheet version="1.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="/xml">
<xsl:for-each select="characters">
<word>
<value>
<xsl:for-each select="char">
<xsl:value-of select="."/>
</xsl:for-each>
</value>
<coordinates>
<xsl:value-of select="char[1]/@a"/>
<xsl:text> </xsl:text>
<xsl:value-of select="char[1]/@b"/>
<xsl:text> </xsl:text>
<xsl:value-of select="char[last()]/@y"/>
<xsl:text> </xsl:text>
<xsl:value-of select="char[last()]/@z"/>
</coordinates>
<avgWeight>
<xsl:value-of select="sum(characters/char/@weight) div count(characters/char) "/>
</avgWeight>
</word>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
我是 xslt 的新手,正在尝试使用 XSLT 在 XML 以下进行处理:
<xml>
<characters>
<char a="a1" b="b1" y="y1" z="z1" weight="100">F</char>
<char a="a2" b="b2" y="y2" z="z2" weight="80">r</char>
<char a="a3" b="b3" y="y3" z="z3" weight="80">o</char>
<char a="a4" b="b4" y="y4" z="z4" weight="100">m</char>
</characters>
</xml>
产生输出 XML :
<word>
<value>From</value>
<coordinates>a1 b1 y4 z4</coordinates>
<avgWeight>90</avgWeight>
</word>
其中坐标构成第一个和最后一个字符的坐标,avgWeight 聚合权重标签的值。
由于 XSLT 变量是不可变的,我无法执行以下操作。帮助我找到解决方案。
Since XSLT variables are immutable, I'm unable perform below operation.
我看不出有什么变量,不可变的或不可变的,与它有什么关系。这只是简单的 XSLT:
XSLT 1.0
<xsl:stylesheet version="1.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="/xml">
<xsl:for-each select="characters">
<word>
<value>
<xsl:for-each select="char">
<xsl:value-of select="."/>
</xsl:for-each>
</value>
<coordinates>
<xsl:value-of select="char[1]/@a"/>
<xsl:text> </xsl:text>
<xsl:value-of select="char[1]/@b"/>
<xsl:text> </xsl:text>
<xsl:value-of select="char[last()]/@y"/>
<xsl:text> </xsl:text>
<xsl:value-of select="char[last()]/@z"/>
</coordinates>
<avgWeight>
<xsl:value-of select="sum(characters/char/@weight) div count(characters/char) "/>
</avgWeight>
</word>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>