Какие инструменты проверки XML можно рекомендовать как для производительности, так и для точности, каждая из которых является важной проблемой в нашей системе? У нас есть следующие требования:
- Это не xmllint (см. ниже)
- Поддержка RelaxNG
- Может легко интегрироваться с Perl (это необязательно, но было бы неплохо)
Почему бы не xmllint? (Это фон, и вы можете пропустить его, если хотите)
У нас есть большая система Perl, которая использует RelaxNG для проверки нашего XML. Мы используем компактный формат RelaxNG и trang чтобы преобразовать его в стандартный формат RelaxNG. Затем мы выполняем фактическую проверку с помощью xmllint.
Это, когда проблемы запускаются. xmllint обычно имеет проблемы с ошибкой при отправке ошибок проверки. Он не дает ложных срабатываний или негативов, но если документ не удается проверить, xmllint часто сообщает о неправильном элементе или атрибуте для данной ошибки. Иногда ошибка правильная ( "не ожидал увидеть элемент" бар "), но только потому, что предыдущая ошибка не сообщалась (поскольку" бар "должен был следовать за требуемым, но отсутствующим элементом" foo ", но xmllint doesn ' t сказать нам, что бит). Обратите внимание, что это давняя проблема с xmllint, и даже последняя версия имеет те же проблемы. У нас часто есть огромные XML-документы и неправильное представление об ошибках вызывает много горя для клиентов и разработчиков.