Обработка специальных символов в XML при преобразовании с помощью Saxon - PullRequest
0 голосов
/ 09 сентября 2009

Я пытаюсь применить таблицу стилей к документу XML, используя Saxon. Имеется файл XML, созданный в Microsoft Word и имеющий кавычки в стиле Microsoft Word, например, вокруг FOO в следующем документе

<?xml version="1.0" encoding="UTF-8"?>
<doc>
    <act>
        <performer typeCode=“FOO“ />
        <performer typeCode="BAR" />
    </act>
</doc>

Саксон выбрасывает следующую ошибку:

SXXP0003: Error reported by XML parser: Invalid byte 1 of 1-byte UTF-8 sequence.

Каков наилучший способ обработки таких «специальных» символов в XML, которые должны были быть допустимыми, но нарушать фактический синтаксический анализ / преобразование?

Ответы [ 2 ]

2 голосов
/ 09 сентября 2009

Поскольку вышеприведенный код не является допустимым XML, вам придется выполнить некоторую предварительную обработку ввода (скажем, с помощью FilterReader), поскольку практически любой синтаксический анализатор XML будет указывать на ошибку (и, как правило, на фатальную ошибку, поэтому вы не можете обработать ошибку и продолжить).

Если специальные кавычки есть только в xml, вы можете сделать простую замену специальных кавычек на простые кавычки (немного больше работы, если вам нужно проверить преамбулу для типа кодировки). Если вы хотите сохранить специальные кавычки в другом месте документа, вам придется сделать что-то более сложное (в основном следите за тем, находитесь ли вы в теге или нет).

1 голос
/ 09 сентября 2009

проблема в том, что эти "специальные" кавычки не действительны xml. Saxon или любой другой xml-парсер собирается выбросить этот материал и не анализировать документ.

Единственное, что я могу предложить, - это найти и заменить их и заменить их ожидаемыми кавычками.

...