Реализации 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.