Проверка XML-файла в Haskell прекрасно работает с HXT и Relax NG , за исключением одного: как я могу получить результат?
С помощью следующего кода файл XML xmlFilename
проверяется по схеме Relax NG rngFilename
. В случае ошибки выдается ошибка на stderr
, и оценка продолжается.
v <- runX
( readDocument
[ withRemoveWS yes -- remove redundant whitespace
, withValidate no -- don't validate source by DTD
] xmlFilename
>>>
-- validate source by Relax NG
validateDocumentWithRelaxSchema [] rngFilename
)
В случае ошибки переменная v
содержит следующую информацию согласно документации hxt-relaxng :
в случае ошибок проверки пустой документ с информацией о состоянии в корне [выводится]
Полученное дерево с ошибочным документом действительно содержит атрибут status
(и module
):
NTree (XAttr "module") [NTree (XText "validate document with Relax NG schema") []],
NTree (XAttr "status") [NTree (XText "2") []]
Теперь вопросы:
Как проверить вывод validateDocumentWithRelaxSchema
, была ли ошибка проверки?
Есть ли предопределенная функция, которую я могу использовать для этого (но еще не нашел)?