Средство командной строки Linux, проверяющее XSD 1.1?
Существует ли какой-либо инструмент командной строки, который проверяет XML по версии 1.1 XSD?
Xmllint не проверяет версию 1.1.
3 ответа
XSD 1.1 в настоящее время поддерживается Saxon и Xerces J. Оба должны без проблем работать под Linux.
Я нашел удобную обертку вокруг Xerces-J: https://www.dropbox.com/s/939jv39ihnluem0/xsd11-validator.jar
java -jar xsd11-validator.jar -sf my.xsd -if my.xml
Вы можете обновить библиотеку Xerces-J, разархивировав банку, поместив в нее новую Xerces-J, а затем снова разархивировав ее в банку.
Изменить: Обновленная ссылка для скачивания
Я ответил на этот вопрос здесь, в AskUbuntu.
Включает рабочие ссылки на оболочку Xerces-J xsd11-validator.jar
и удобный скрипт bash для легкого использования.
К сожалению, xmllint не может поддерживать XML-схему 1.1, но в качестве альтернативы он поддерживает схему на основе RelaxNG (включая все улучшения, аналогичные XML-схеме 1.1).
Ниже описана процедура, которая может быть использована для преодоления ограничений xmllint:
внедрить проверочную XML-схему версии 1.1 на основе обратного генератора Oxygen Editor (на основе уже существующих XML-файлов). его можно скачать отсюда с бесплатной лицензией на 1 месяц
Полученный файл XSD 1.1 не будет принят xmllint со следующими сообщениями об ошибках:
xmllint --schema user.xsd --noout user.xml user.xsd:565: element element: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element': Invalid value for maxOccurs (must be 0 or 1). user.xsd:741: element element: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}element': Invalid value for maxOccurs (must be 0 or 1). WXS schema user.xsd failed to compile
однако схему xml можно преобразовать в схему relaxng с помощью инструмента RNGConv, который является частью проекта MSV Kohsuke Kawaguchi, с помощью следующей команды преобразования:
java -jar rngconv-20060319/rngconv.jar user.xsd > user.rng
Полученный файл схемы relaxng может быть использован с xmllint:
xmllint --relaxng user.rng --noout user.xml user.xml validates