Как указывал Мирод, неполнота иногда встречается среди минусов.
Если вам нужно проверить XML в соответствии со схемой XSD, ситуация может ухудшиться.
Существуют модули, которые пытаются решить эту проблему, например XML :: Compile или XML :: Pastor , но вы должны быть терпимы к скорости.
Чтобы дать вам некоторые цифры, я расскажу о программе на Perl, которую я написал для проверки данных XML, которые должны соответствовать схеме. Моя программа использует XML :: Parser и MooseX :: Types , и для проверки XML-файла размером 5 МБ может потребоваться до 10 секунд.
С другой стороны,
xmllint --schema /path_to/schema.xsd data.xml
выполняет ту же задачу за доли секунды.
Я вернул некоторую скорость (и память), используя VTD-XML на этапе синтаксического анализа, но все же мне нужно проверить данные с помощью Perl, потому что VTD-XML (до сих пор) не является проверяющим анализатором .