вторник, 6 марта 2012 г.

Пакетная проверка xml-файлов на валидность (ant)

Преамбула:
  • Приложение подгружает языковой xml-файл (соответствующий переданной локале) со строковыми в стандарте xliff.
  • Архитектура приложения такова, что если загруженный файл не валидный то приложение "прекращает работу".
  • Языковых файлов около 15 штук.
  • Загрузкой файлов на сервер занимается ant-build-скрипт.

Проблема:
Не допустить загрузку не валидных xml-файлов.

Решение:
Воспользуемся консольной утилитой xmllint, которая есть в *nix системах, а так же в комплекте cygwin для windows.
Например, файл для русского языка находится по пути: ${projectDir}\bin\ru\client_ru.xlf
Вот таким таском проверим перед загрузкой нужные нам языковый файлы:

   Validating lang files...
      
         
         
         
         
         ...
   
   OK

P.S.: Можно еще более ужесточить проверку подсунув xmllint дополнительно DTD описывающего структуру xml-файлов.