2016-11-09 2 views
0

Возможно, я пропустил некоторые очевидные параметры конфигурации на Саксоне, но вот моя проблема:Как проверить файл пространства имен без использования саксона с определенной схемой пространства имен?

У меня есть XML-файл input.xml без объявления пространства имен. У меня есть схема xsd, schema.xsd, связанная с пространством имен mynamespace. И я хотел бы проверить файл input.xml с помощью Saxon и файла schema.xsd, как если бы корневой элемент моего файла input.xml находился в пространстве имен mynamespace? Чтобы задать вопрос по-другому, я хотел бы добавить в корневой элемент input.xml объявление пространства имен xmlns = "mynamespace", но не открывать его в Java и только для проверки. Возможно ли это? Есть ли какой-либо параметр конфигурации в Saxon, который разрешает объявлять пространство имен по умолчанию для файлов xml, подлежащих проверке?

ответ

0

Да, у Saxon есть средство для преобразования документа без пространства имен в документ с именами: он называется XSLT.

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

+0

Хорошо. Благодарю. Я не хотел использовать XSLT из-за эффективности, как вы догадались. Фильтр SAX является опцией, я попробую. Или я просто переключу свою схему на анонимную. –

+0

В случае простого преобразования, как это, время обработки Saxon во многом зависит от стоимости синтаксического анализа XML. Использование SAX не спасет вас от значительного времени обработки, хотя для экономии памяти может потребоваться экономия памяти, если документ очень большой. –

Смежные вопросы