0

インラインで指定された DTD に対して XML を検証する必要がある libxml ライブラリを使用して、C++ で XML パーサーを作成しています。プログラムで system() を使用したくありません。そうでなければ、xmllint コマンドを使用できたはずです。

http://xmlsoft.org/ API ページで指定されているxmlValidateDtd(xmlValidCtxtPtr ctxt, xmlDocPtr doc, xmlDtdPtr dtd)関数を見つけました。しかし、SAX 解析には xmlDocPtr がないため、これは DOM ベースの関数だと思います。

インライン DTD に対して XML ドキュメントを検証する他の方法はありますか?

4

1 に答える 1

0

通常、XML_PARSE_DTDVALIDパーサー オプションを指定するだけなので、ドキュメントは解析時に検証されます。

ドキュメントが検証なしで既に解析されている場合は、次を使用できますxmlValidateDocument

int xmlValidateDocument (xmlValidCtxtPtr ctxt, 
                         xmlDocPtr doc)

ドキュメント インスタンスの検証を試みます。基本的に、XML Rec で記述されたすべてのチェックを実行します。つまり、内部および外部サブセット (存在する場合) を検証し、ドキュメント ツリーを検証します。

ctxt:検証コンテキスト
doc:ドキュメントインスタンス
Returns:有効な場合は 1、そうでない場合は 0

于 2014-06-17T10:30:08.127 に答える