有没有办法获得webkit';如何使用javascript正确处理空白?

有没有办法获得webkit';如何使用javascript正确处理空白?,javascript,webkit,whitespace,xslt,Javascript,Webkit,Whitespace,Xslt,事实证明,webkit在处理XSLT时似乎不能很好地处理空白。它似乎平等地对待换行符、回车符、制表符和空格,甚至在('test string',' ;')之后的子字符串将返回string 有没有办法让它正常工作,或者这是webkit中没有解决方法的bug 编辑:下面是一些javascript,演示了错误: var parser = new DOMParser(); var xsltText = "<xsl:stylesheet xmlns:xsl=\"http://www.w3.or

事实证明,webkit在处理XSLT时似乎不能很好地处理空白。它似乎平等地对待换行符、回车符、制表符和空格,甚至在('test string',' ;')之后的
子字符串
将返回
string

有没有办法让它正常工作,或者这是webkit中没有解决方法的bug

编辑:下面是一些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(., '&#10;'))\"/></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;
var parser=new DOMParser();
var xsltText=“”;
var xslt=parser.parseFromString(xsltText,“text/xml”);
var xmlText=“测试字符串”;
var xml=parser.parseFromString(xmlText,“text/xml”);
var xsltProcessor=new xsltProcessor();
导入样式表(xslt);
var processed=xsltProcessor.transformToDocument(xml);
var result=processed.firstChild.textContent;

结果
变量应明显包含“0”;在Safari 4和Chrome 8中,它返回“6”。

我无法在Safari 5.0.3中重现这个问题。 测试用例(浏览器窗口中加载的XML文档):


富吧
样式表在哪里

<xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="1.0">

  <xsl:template match="/">
    <html>
      <head>
        <title>Test</title>
      </head>
      <body>
        <xsl:apply-templates/>
      </body>
    </html>
  </xsl:template>

  <xsl:template match="test">
    <p><xsl:value-of select="string-length(substring-after(., '&#10;'))"/></p>
  </xsl:template>

</xsl:stylesheet>

测验


Windows上Firefox(3.6)和Safari的输出均为“0”。因此,至少在该测试中,没有证据表明文本节点中的空格字符被视为换行符。

我首先在Chrome中注意到了这一点。。诚然,我测试的Safari版本只有4.0.2,我想5.0.3可能使用更新版本的webkit。你能用你的Safari版本运行测试用例吗?它是否输出与0不同的数字?在这种情况下,该版本的Safari中存在一个bug。如果您发布您发现问题所在的Chrome版本号,这也将有助于其他人尝试复制。@flyn1179:也在Chrome(10.0.648.6 dev)上测试过。输出:
测试0

。请注意,XML文档经过XML解析器,它们负责为XSLT处理器设置上下文。这可能会与EmacScript调用有所不同。奇怪的是,我在Safari 4上尝试这个xml文档时得到了相同的结果,而不是通过javascript的XsltProcessor调用xslt。我将编写一些精简的javascript来复制它,并将其添加到问题中。@Fynn1179:是的,大多数报告的任何浏览器XSLT处理器的bug都有EmacScript调用的上下文。但是,当这是XML/XSLT驱动的时候,它们都是标准的。这在上被报告为WebKit错误,错误报告引用了这个StackOverflow问题。
<xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="1.0">

  <xsl:template match="/">
    <html>
      <head>
        <title>Test</title>
      </head>
      <body>
        <xsl:apply-templates/>
      </body>
    </html>
  </xsl:template>

  <xsl:template match="test">
    <p><xsl:value-of select="string-length(substring-after(., '&#10;'))"/></p>
  </xsl:template>

</xsl:stylesheet>