Есть ли способ заставить javascript webkit правильно обрабатывать пробелы? - PullRequest
1 голос
/ 28 января 2011

Оказывается, webkit не очень хорошо работает с пробелами при обработке XSLT.Кажется, он одинаково обрабатывает перевод строки, возврат каретки, табуляцию и пробелы, даже до точки, где 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 голосов
/ 28 января 2011

Я не могу воспроизвести эту проблему с 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) и Safari в Windows равен «0». Так что, по крайней мере, в этом тесте нет доказательств того, что символ пробела в текстовом узле рассматривается как символ новой строки.

...