Java XML: Как заставить подстановочный знак (xs:любой) строго соответствовать?

#java #xml #xsd #xml-validation

Вопрос:

У меня есть куча внешних XSD, которые я не могу изменить. Они используют модели содержимого с подстановочными (xs:any знаками ) с processContents="skip" .

Вопрос:
Существует ли в java/JAXP программный способ принудительного сопоставления подстановочных знаков ( xs:any ) processContents="strict" вместо этого (без изменения XSD)?

Ответ №1:

Конечно. Используйте Java для изменения схемы, прежде чем использовать ее для проверки. Вам не нужно изменять исходную схему, только ту, которую вы проверяете.

Если вы используете XSD 1.1, вы можете создать локально измененную схему с помощью xs:override .

Комментарии:

1. Это означает, что всякий раз, когда исходный файл схемы изменяется, я должен адаптировать свою «измененную» версию, которая работает (и то, что я делаю в настоящее время), но на самом деле не отвечает на мой вопрос.

2. xs:override предназначен для того, чтобы делать именно то, что вы хотите: определять, что отличается, не переопределяя все, что одно и то же. Но вы можете добиться того же самого с помощью пользовательского преобразования XSLT. Ответ на ваш вопрос, как указано, очевидно, «нет» (вы не можете изменить схему, не изменив схему), но я не думаю, что это было полезно.