Средство командной строки 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:

  1. внедрить проверочную XML-схему версии 1.1 на основе обратного генератора Oxygen Editor (на основе уже существующих XML-файлов). его можно скачать отсюда с бесплатной лицензией на 1 месяц

  2. Полученный файл 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
    
  3. Полученный файл схемы relaxng может быть использован с xmllint:

    xmllint --relaxng user.rng --noout user.xml 
    user.xml validates
    
Другие вопросы по тегам