见Diff 1.0 vs 2.0。那个问题已经解决了,但对我来说,首先引起这个问题仍然有点神秘 现在我可能找到了一些东西,但需要帮助了解正在发生的事情 我将输入xml简化为
<?xml version="1.0" encoding="UTF-8"?>
<root>
<Manager>
<Employee grade="9"/>
<Employee grade="8"/>
</Manager>
<Manager>
<Employee grade="9"/>
<Employee grade="8"/>
<Employee grade="4"/>
</Manager>
</root>
我在此输入中应用的样式表是
<?xml version="1.0" encoding="UTF-8"?>
<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="/">
<root>
<xsl:apply-templates select="root/Manager"/>
</root>
</xsl:template>
<xsl:template match="Manager">
<test><xsl:value-of select="Employee/@grade"/></test>
</xsl:template>
</xsl:stylesheet>
输出
<?xml version="1.0" encoding="UTF-8"?>
<root>
<test>9</test>
<test>9</test>
</root>
但是在XSLT 2.0模式下运行转换(将stylesheet / @ version更改为“2.0”),输出
<?xml version="1.0" encoding="UTF-8"?>
<root>
<test>9 8</test>
<test>9 8 4</test>
</root>
我想知道XSLT 1.0和XSLT 2.0的确切差异导致了这一点。
答案 0 :(得分:1)
对于第一个区别,我确实用XSLT 2.0解释了比较运算符,如小于或大于或小于或等于等等,默认比较字符串,而使用XSLT 1.0,这些运算符仅为数字定义将任何操作数转换为数字。
对于这篇文章,区别在于XSLT 1.0 xsl:value-of select="foo"
输出foo
元素的选定节点集中第一个foo
元素的字符串值,而XSLT 2.0则具有更改后,如果选择了序列,则输出序列中项的字符串值的空格分隔列表。您可以在XSLT 2.0中更改与separator
xsl:value-of
属性一起使用的分隔符(即空格)。另请参阅http://www.w3.org/TR/xslt20/#incompatibilities。