Haskell での XML ファイルの検証は、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
)
エラーが発生した場合、hxt-relaxng のドキュメントv
に従って、変数には次の情報が保持されます。
検証エラーの場合、ルートにステータス情報を含む空のドキュメントが[出力されます]
欠陥のあるドキュメントを含む結果のツリーは、実際にはstatus
(and module
) 属性を保持します。
NTree (XAttr "module") [NTree (XText "validate document with Relax NG schema") []],
NTree (XAttr "status") [NTree (XText "2") []]
今質問:
validateDocumentWithRelaxSchema
検証エラーがあったかどうかの出力を確認するにはどうすればよいですか?
そのために使用できる定義済みの関数はありますか (ただし、まだ見つかりません)。