2016-08-22 2 views
0

В одном из моих вариантов использования преобразование XSLT 2.0 (приведенное в действие Saxon и JAVA) генерирует дополнительный символ 
 в моем выходе, где встречается пробел или символ новой строки.xslt output character "
"

Однако, когда такое же преобразование выполняется с использованием XSLT 1.0 (на основе libXSLT и Perl), он не получает этот конкретный символ в выводе.

Я уже упоминал об этом query, в котором объясняется, что SAXON по существу сериализует эти специальные символы для круглых поездок.

Вопрос в том, почему поведение XSLT 1.0 отличается от другого?

ответ

3

Я полагаю, что XSLT 1.0 с 1999 года старше XML 1.1, который требует нормализации этого символа в https://www.w3.org/TR/xml11/#sec-line-ends, тогда как XML 1.0 https://www.w3.org/TR/xml/#sec-line-ends не охватывает этот символ. Правила сериализации XSLT 2.0, описанные в https://www.w3.org/TR/xslt-xquery-serialization/#xml-output, учитывают XML 1.1, а XSLT 1.0 старше.

+0

..... Быстрый последующий вопрос. Где я должен указать «версию 1.1»? A] Заголовок XSLT-файла 2] 'xslt: stylesheet version' или 3] в том месте, где генерируется выходной файл i.e' exsl: document version', чтобы я мог правильно создать ссылку на символ. – Recker

+0

Я не предлагал указать версию 1.1, я только пытался рассказать о истории разработки спецификации. Я не вижу, что «exsl: document» имеет отношение к этому и Saxon 9 и XSLT 2.0. Возможно, вы захотите задать новый вопрос, разработать или отредактировать его и предоставить информацию о вводе, XSLT, желаемом результате и текущем результате. –