我是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变量是不可变的,因此我无法执行以下操作。帮助我找到解决方案。
答案 0 :(得分:0)
由于XSLT变量是不可变的,因此我无法执行以下操作。
我不知道哪些变量,不可变或不变,与它有关。这只是简单的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>