我发现了跟随XSL转换的不同结果。
XSL:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="test">
<xsl:variable name="p1" select="a/@p1"/>
<xsl:variable name="p2" select="a/@p2"/>
<xsl:variable name="p3" select="a/@p3"/>
<xsl:value-of select="$p1+$p2*$p3"/><br />
<xsl:value-of select="$p2*$p3+$p1"/>
</xsl:template>
</xsl:stylesheet>
XML:
<test>
<a p1="1458569700" p2="60" p3="60"/>
</test>
的libxslt:
<?xml version="1.0"?>
1458573300<br/>1458573300
某种Java库(http://xslttest.appspot.com):
<?xml version="1.0" encoding="UTF-8"?>1.4585733E9<br/>1.4585733E9
谁是正确的以及为什么(参考规范会很棒)?
答案 0 :(得分:1)
这两个结果在数学上都是“正确的”。就标准而言,XSLT 1.0不允许使用科学记数法,但XSLT 2.0确实如此。
XPath 1.0:
https://www.w3.org/TR/xpath/#exprlex 生产[30]
XPath 2.0 :
将数字转换为字符串的规则已更改。这些可能 影响数字在样式表输出中的显示方式。 对于绝对值在1E-6到1E + 6范围内的数字, 结果应该是相同的,但超出此范围,科学格式 用于非整数xs:float和xs:double值。