有没有办法让webkit的javascript正确处理空白?

时间:2011-01-27 22:50:39

标签: javascript webkit whitespace xslt

事实证明,在处理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(., '&#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;

result变量显然应该包含'0';在Safari 4和Chrome 8中它返回'6'。

1 个答案:

答案 0 :(得分:0)

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

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="test2011012801Xsl.xml"?>
<test>foo bar</test>

样式表在哪里

<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>

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