Я столкнулся с некоторыми своеобразными отличиями в поведении процессоров XSLT. Интересно, в чем причина этого, и есть ли полный обзор, доступный где-то от разницы в процессорах.
Я проверил следующее простое преобразование (с фиктивным входом):Различия в разнице в текстовом выходе XSLT
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:text>1=
2=
3=
4=

end</xsl:text>
</xsl:template>
</xsl:stylesheet>
Run в XML Spy (v 2011 sp1 x64), выход:
1=
2=
3=
4=
end
Во всех случаях, в шестнадцатеричном после =
, а на линии после 4=
добавлены два символа, 0D
и 0A
. По-видимому, XML Spy заменяет каждый запрос на &xA;
или &xD;
полным появлением CR + LF, за исключением случаев, когда CR и LF запрашиваются в этом порядке сразу после друг друга (см. 3 = часть).
Но при запуске в saxon9he, я получаю предупреждение, что я бегу v1.0 таблицу стилей с процессором v2.0, а выход
1=
2=3=
4=
end
В этом случае все запросы на &xA;
являются заменен на 0D 0A
(так что CR добавляется перед LF), но запрос для &xD;
выводит запрошенный CR, а не дополнительный LF.
Rerunning in XML Spy установка XSLT версии 2.0 дает тот же результат, что и для 1.0, поэтому я предполагаю, что это не другое соглашение в двух версиях XSLT, которое вызывает это.
Скорее всего, это просто разница между инструментами, о которых мы должны знать, но мне интересно, есть ли еще что сказать по этому вопросу.
Если вы выводите файл в таблицу стилей, ожидается вторая версия с одним CR или. ЛФ. –