Реализации Java не требуются для реализации валидации RELAX NG через SchemaFactory?

Фон:

У меня есть схема RELAX NG и несколько файлов XML, которые должны следовать этой схеме. Я пытаюсь проверить XML-файлы в схеме на Java и получаю сообщение об ошибке:

SchemaFactory, которая реализует язык схемы, указанный в: http://relaxng.org/ns/structure/1.0 не может быть загружен

Я нашел этот пост с той же проблемой, и один из ответов говорит:

Реализации Java не требуются для реализации валидации RELAX NG через SchemaFactory. Так что, даже если он работает в одной среде, он не переносим...

Вопрос:

Правда ли, что я не могу создать портативный валидатор для RELAX NG, не полагаясь на такие вещи, как библиотека Jing?

Я пытаюсь избежать использования внешних библиотек в моем приложении.

Проверка в Java:

        ...

        DocumentBuilderFactory builder = DocumentBuilderFactory.newInstance();
        builder.setNamespaceAware(true);
        SchemaFactory schfactory = SchemaFactory.newInstance(XMLConstants.RELAXNG_NS_URI);

        Schema schema = schfactory.newSchema(new File("Configuration/Schema.rng"));
        builder.setSchema(schema);
        Validator validator = schema.newValidator();


        DocumentBuilder build = builder.newDocumentBuilder();
        Document doc = build.parse(new File(filepath));
        DOMSource source = new DOMSource(doc);

        validator.validate(source);

        ...

2 ответа

Решение

Да, это правда. Насколько мне известно, XML Schema в соответствии с определением W3C является единственным переносимым языком схем. RELAX NG представляет дополнительные функции помимо обычной XML-схемы.

Этот пост IBM прояснил мой вопрос.

В комплект поставки JDK не входит валидатор RELAX NG.

Другие вопросы по тегам