использование libxml2 в VC
помогите начинающему в следующей задаче (VC++6):
имеется xml документ, по нему надо составить dtd-файл и осуществить валидацию xml по dtd, использую libxml2.
парсить только xml-документ - ошибок нет, с dtd - много проблем
1. если его открывать как файл, то возращается ошибка - пустой документ
xmlDtdPtr dtd;
dtd = xmlParseDTD(NULL,(const xmlChar*)"test.dtd");
2. если его открывать как ссылку из самого xml, то выдает ошибку no declaration for element....
xmlDocPtr doc;
doc = xmlReadFile("test.xml", NULL, 0);
dtd = xmlGetIntSubset(doc);
3. если запись dtd определить как строку в памяти, а потом ее направить в парсер, то все работает для маленьких и простых документов
const char *mem = "<?xml version='1.0' encoding='UTF-8'?> \
<!ELEMENT ECHO-DOCUMENT (Patient?,ToneAudiograms)> \"
buf = xmlParserInputBufferCreateStatic (mem, strlen(mem),XML_CHAR_ENCODING_ASCII);
if (buf == NULL)
{ g_print("Fatal error creating dtd buffer.\n");}
dtd = xmlIOParseDTD (NULL, buf, XML_CHAR_ENCODING_ASCII);
if(dtd == NULL)
{ g_print("Dtd parse failed.\n");}
если усложнить документ xml и dtd , то начинают лезть ошибки... проверяют эти файлы в Altova XMLSpy - они правильные, ошибок нет
кто-нибудь решал подобные задачи? как открыть внешний dtd, а не тянуть его программно? и как избавиться от ошибок, которых вроде нет, но они есть?