XSLT文本输出处理器差异

XSLT文本输出处理器差异,xslt,Xslt,我在XSLT处理器的行为上遇到了一些特殊的差异。我想知道这背后的原因是什么,是否有关于处理器差异的全面概述。 我测试了以下简单转换(使用虚拟输入): 在所有情况下,在=后面的十六进制和4=后面的行中,添加了两个字符,0D和0A。 显然,XMLSpy会替换&xA;的每个请求或&xD以完全CR+LF出现,除非CR和LF按顺序请求,紧随其后(参见3=部分) 但是当在saxon9he中运行时,我得到一个警告,我正在使用v2.0处理器运行v1.0样式表,并且输出是 1= 2=3= 4= end

我在XSLT处理器的行为上遇到了一些特殊的差异。我想知道这背后的原因是什么,是否有关于处理器差异的全面概述。
我测试了以下简单转换(使用虚拟输入):

在所有情况下,在
=
后面的十六进制和
4=
后面的行中,添加了两个字符,
0D
0A
。 显然,XMLSpy会替换
&xA;的每个请求
&xD以完全CR+LF出现,除非CR和LF按顺序请求,紧随其后(参见3=部分)

但是当在saxon9he中运行时,我得到一个警告,我正在使用v2.0处理器运行v1.0样式表,并且输出是

1=  
2=3=  
4=  
end
在这种情况下,
&xA替换为
0D 0A
(因此在LF前面添加了一个CR),但请求
&xD输出请求的CR,而不是额外的LF

在XML Spy中重新运行时,将XSLT版本设置为2.0会得到与1.0相同的结果,因此我想这不是两个XSLT版本中的不同约定造成的。

最有可能的是,这只是我们必须了解的工具之间的差异,但我想知道在这个问题上是否还有更多的话要说。

2.0规范规定,对于输出方法文本,如何表示行尾是由实现定义的(更具体地说,“数据模型实例中的换行符可以使用通常用于表示所选系统环境中结束的行的任何字符序列输出。”)

XSLT1.0什么也没说(这其实没有什么不同)


有些实现可能会一致地使用一个换行符,有些可能会输出您所要求的内容,有些可能会使用您正在运行的操作系统的默认行结尾。

如果您在样式表中输出到文件,则需要使用单个CR resp.LFs的第二个版本。Michael,我找到了您所指的文档,并且d请参阅:
1=  
2=  
3=  
4=  

end
1=  
2=3=  
4=  
end