是否有人知道以下XSLT在saxon 8.7下打印“ 1 ”和在9.1.0.8下打印“ 2 ”的原因?
<xsl:variable name="count1">
<xsl:variable name="tmp1"><x y="z"><x/></x></xsl:variable>
<xsl:for-each select="$tmp1/x/x">
<xsl:number level="any" from="x[@y='z']" />
</xsl:for-each>
</xsl:variable>
<xsl:message select="$count1"/>
哪个值是正确的?
提前感谢任何见解!
答案 0 :(得分:1)
我通过Saxon 8.7.3J和Saxon-HE 9.3.0.8J运行以下内容:
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
<xsl:output method="xml" encoding="utf-8" indent="yes"/>
<xsl:variable name="count1">
<xsl:variable name="tmp1"><x y="z"><x/></x></xsl:variable>
<xsl:for-each select="$tmp1/x/x">
<xsl:number level="any" from="x[@y='z']" />
</xsl:for-each>
</xsl:variable>
<xsl:template match="/">
<xsl:message select="$count1"/>
</xsl:template>
</xsl:stylesheet>
他们都打印了&#39; 2&#39;:
~ zacharyyoung$ java -jar ~/Downloads/saxonb8-7-3j/saxon8.jar ~/so.xsl ~/so.xsl
2
- 和 -
~ zacharyyoung$ java -jar /usr/local/saxon9he.jar -s:so.xsl -xsl:so.xsl
2
<?xml version="1.0" encoding="utf-8"?>
编辑1
OP对此答案的评论中提供的版本确实打印了&#39; 1&#39;:
~ zacharyyoung$ java -jar ~/Downloads/saxon-8.7.jar ~/so.xsl ~/so.xsl
1
~ zacharyyoung$ java -jar ~/Downloads/saxon-8.7.jar
No source file name
Saxon 8.7J from Saxonica
...
答案 1 :(得分:1)
在我看来,好像这个错误修复引入了更改:
http://sourceforge.net/tracker/?func=detail&aid=1460712&group_id=29872&atid=397617
但是,多年来xsl:number中还有许多其他错误修复,可能值得检查其他错误。有些人正在修复撒克逊人实施中的漏洞,有些人正在对规范中的勘误作出回应:多年来对角落案件进行了大量澄清。请记住,在XSLT 2.0规范最终确定之前,2006年出现了8.7。 (并且xsl:number的XSLT 1.0规范极端模糊。)
Michael Kay