假设我有以下节点:
<parent>
<child size="1" />
<child size="2" />
<child size="3" />
</parent>
我想在输出文档中得到的是子项大小的平均值,最小值和最大值。即
<parent min-size="1" max-size="3" avg-size="2" />
是否可以将XSLT 1.0与EXSLT扩展一起使用?
答案 0 :(得分:0)
以下是使用math:max()和math:min() ...的示例。
XSLT 1.0 (stylesheet.xsl)
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:math="http://exslt.org/math"
extension-element-prefixes="math">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="parent">
<parent min-size="{math:min(child/@size)}"
max-size="{math:max(child/@size)}"
avg-size="{sum(child/@size) div count(child/@size)}"/>
</xsl:template>
</xsl:stylesheet>
Python
from lxml import etree
tree = etree.parse("input.xml")
xslt = etree.parse("stylesheet.xsl")
new_tree = tree.xslt(xslt)
print(etree.tostring(new_tree, pretty_print=True).decode("utf-8"))
输出
<parent min-size="1" max-size="3" avg-size="2"/>