有没有办法让 webkit 的 javascript 正确处理空格?
事实证明,在处理 XSLT 时,webkit 对于空格的处理似乎并不是特别好。它似乎平等地对待换行符、回车符、制表符和空格,甚至到 substring-after('test string',' ')
将返回 string< /代码>。
有什么方法可以让它正常运行,或者这是 webkit 中的一个错误,没有解决方法?
编辑:这里有一些 javascript 演示了错误:
var parser = new DOMParser();
var xsltText = "<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\"version=\"1.0\"><xsl:template match=\"test\"><output><xsl:value-of select=\"string-length(substring-after(., ' '))\"/></output></xsl:template></xsl:stylesheet>";
var xslt = parser.parseFromString(xsltText, "text/xml");
var xmlText = "<test>test string</test>";
var xml = parser.parseFromString(xmlText, "text/xml");
var xsltProcessor = new XSLTProcessor();
xsltProcessor.importStylesheet(xslt);
var processed = xsltProcessor.transformToDocument(xml);
var result = processed.firstChild.textContent;
result
变量显然应该包含“0”;在 Safari 4 和 Chrome 8 中,它返回“6”。
It turns out webkit doesn't appear to behave particularly well with whitespace while processing an XSLT. It seems to treat newline, carriage returns, tabs and spaces equally, even to the point where substring-after('test string','
')
will return string
.
Is there any way of getting it to behave properly, or is this a bug in webkit that doesn't have a workaround?
EDIT: Here's some javascript that demonstrates the error:
var parser = new DOMParser();
var xsltText = "<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\"version=\"1.0\"><xsl:template match=\"test\"><output><xsl:value-of select=\"string-length(substring-after(., '
'))\"/></output></xsl:template></xsl:stylesheet>";
var xslt = parser.parseFromString(xsltText, "text/xml");
var xmlText = "<test>test string</test>";
var xml = parser.parseFromString(xmlText, "text/xml");
var xsltProcessor = new XSLTProcessor();
xsltProcessor.importStylesheet(xslt);
var processed = xsltProcessor.transformToDocument(xml);
var result = processed.firstChild.textContent;
The result
variable should obviously contain '0'; in Safari 4 and Chrome 8 it returns '6'.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我无法使用 Safari 5.0.3 重现该问题。
测试用例(在浏览器窗口中加载的 XML 文档):
样式表
其中Firefox (3.6) 和 Windows 上的 Safari 中的 输出均为“0”。因此,至少通过该测试,没有证据表明文本节点中的空格字符被视为换行符。
I can't reproduce that problem with Safari 5.0.3.
Test case (XML document loaded in browser window):
where the stylesheet is
Output in both Firefox (3.6) and Safari on Windows is "0". So at least with that test there is no evidence that a space character in a text node is treated as a newline character.