dtd ファイルの char 文字列があり、xmlDtdPtr を xml ドキュメントと共に xmlValidateDtd に渡す必要があります。
現在のディレクトリ内のファイルとして dtd を使用して、次のようにします。
xmlParserCtxtPtr ctxt = xmlNewParserCtxt();
xmlDocPtr doc = xmlCtxtReadFile(ctxt, filename, NULL,0);
xmlDtdPtr dtd = xmlParseDTD(NULL,(const xmlChar*)dtd_filename);
xmlValidateDtd(&(ctxt->vctxt),doc,dtd);
私はこれを試しました:
XmlDocPtr dtd_doc = xmlReadMemory(dtd_string,sizeof(dtd_string),"blah.dtd",NULL,XML_PARSE_DTDLOAD);
xmlDtdPtr dtd = xmlNewDtd(dtd_doc,NULL,NULL,NULL);
しかし、 <!ELEMENT は無効な要素名であるというパーサー エラーが発生します。メモリから DTD を適切に解析する方法に関する良い例やドキュメントが見つかりません。