Я хотел бы выполнить проверку схемы RelaxNG (предпочтительно) или XSD (если нужно) в клиентском JavaScript. Любые хорошие библиотеки для этого? Google находит jsrelaxngvalidator, но у меня возникли проблемы с его запуском, и он не поддерживается. Целевыми браузерами являются только Firefox и Chrome.
Проверка схемы RelaxNG или XSD с помощью JavaScript
Ответы (2)
SmartClient может загружать XSD и генерировать форму для редактирования данных с правилами проверки и удобными для пользователя сообщениями об ошибках:
http://www.smartclient.com/#xmlSchemaImport
Вы также можете сериализовать данные, которые вводит пользователь, и создать XML-документ, соответствующий XSD (с правильным пространством имен и т. д.), используя DataSource.xmlSerialize().
http://www.smartclient.com/docs/8.0/a/b/c/go.html#method..DataSource.xmlSerialize
Вся эта функциональность реализована в браузере (без серверного компонента) и доступна в бесплатной версии OSS (SmartClient LGPL).
Обратите внимание, что эта конкретная функция является частью гораздо более крупной системы, которая может соответствовать вашим потребностям, а может и не соответствовать — SmartClient в первую очередь предназначен для крупномасштабных корпоративных бизнес-приложений.
Похоже, что ответ «Нет»: в конце концов, jsrelaxngvalidator работает, но у него есть странные ограничения на то, что он поддерживает, для запуска требуется множество библиотек (включая пользовательский анализатор SAX, который также находится в бета-версии) и он делает странные вещи, такие как загрузка 18 XSLT по сети для предварительной обработки схем, поэтому мы отказались от этого.
Вместо этого я переписал схему как схему JSON с проверкой на стороне клиента с использованием JSV. Кривая обучения была немного крутой, но теперь она работает хорошо.