Оказывается, 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(., ' '))\"/></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».