Java XSLT Как мне избежать французского, немецкого и греческого языков в одном документе? - PullRequest
0 голосов
/ 06 марта 2012

Я успешно читаю файлы Microsoft DOCX с Java, используя классы java.util.zip.Я начинаю с перевода MS XML на то, что мне нужно, используя XSLT.Поскольку я выводлю HTML, я замечаю, что XSLT правильно экранирует большинство очевидных символов без необходимости что-либо делать, например, ndash, ldquo, rdquo, egrave, eacute, uuml, auml и т. Д. Затем я использую регулярные выражения Java длявыполните дальнейшую обработку на выходе XSLT.

Моя проблема в том, что помимо французского и немецкого языков у меня также есть греческий.Греческий не экранируется XSLT, но корректно отображается в выходных данных XSLT, и если я редактирую полученный файл (с помощью eclipse или даже с помощью блокнота), греческий экран без экранирования отображается правильно.НО ...

Когда я работаю с выводом XSLT с помощью кода Java, он скремблирует греческий язык, и на любой странице, которую я сохраняю, есть обычные случайные символы, которые вы видите, если страница закодирована неправильно.

* 1006Ясно, что я не кодирую это правильно.Я пытался сделать это в UTF-8, так как все мои символы ISO-8859-1 экранированы.

Кто-нибудь может подсказать, что я могу делать неправильно?Есть ли способ убедить XSLT избежать греческих символов для меня, а также тех, которые он уже делает?

Ответы [ 2 ]

1 голос
/ 06 марта 2012

Вы пытались установить выходную кодировку в xslt на "us-ascii"? Таким образом, он должен экранировать все символы, отличные от ascii, используя соответствующие им символы.

Однако настоящая проблема заключается в работе с полученным XML / HTML с использованием регулярных выражений. Вы должны попытаться выполнить эту обработку, используя xml и инструменты, поддерживающие кодирование, или даже как часть преобразования xsl. Большинство процессоров Java XSLT даже позволяют вызывать функции Java изнутри преобразования.

0 голосов
/ 06 марта 2012

Вы можете использовать атрибут disable-output-escaping для xsl:value-of и xsl:text.

<xsl:value-of select="expression" disable-output-escaping="yes|no" />

Поскольку значением по умолчанию является «нет», вы должны активно установить его в «да»."чтобы получить экранированные символы в выводе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...