xmlhack.ru XML-форумы
Обсуждение XML и связанных с ним технологий

Валидация при сохранении


Автор Сообщение
Vasilisk
Наставник

Зарегистрирован: 17.05.2006
Сообщения: 370
Откуда: Украина, Харьков
[12569] Ср Июн 04, 2008 00:17
Валидация при сохранении
Глупый вопрос - как при создании XML перед записью проверить его на валидность XSD схемой?
Делаю так

Код:

    LXML := CreateComObject(CLASS_DOMDocument40) as IXMLDOMDocument2;
    LXML.schemas := GetSchemaCache;
    LNode := LXML.createProcessingInstruction('xml', 'version="1.0" encoding="windows-1251"');
    LXML.appendChild(LNode);
    LNode := LXML.createProcessingInstruction('xml-stylesheet', 'type="text/xsl" href="savedata.xsl"');
    LXML.appendChild(LNode);
    //
    LParentElem := LXML.createNode(NODE_ELEMENT, 'SaveData', FNameSpace) as IXMLDOMElement;
    LParentElem.setAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance');
    LXML.appendChild(LParentElem);
    .....................
    LError := LXML.validate;
    if LError.errorCode <> 0 then
      raise Exception.CreateFmt('Ошибка %.8x'#13#10'%s'#13#10'%s'#13#10'FilePos: %d',
        [LError.errorCode, LError.reason, LError.srcText, LError.filepos]);
    LXML.save('123.xml');


Говорит ошибка XML_E_NODTD (0xC00CE224)

Что я делаю не так? Сам XML получается валидный и тот же код, но при загрузке отлично работает
_________________
С уважением Vasilisk
Уважайте читающих, используйте тэги [code ][/code]
Vasilisk
Наставник

Зарегистрирован: 17.05.2006
Сообщения: 370
Откуда: Украина, Харьков
[12585] Пт Июн 06, 2008 20:22

Ответ тут http://www.sql.ru/forum/actualthread.aspx?tid=563789
_________________
С уважением Vasilisk
Уважайте читающих, используйте тэги [code ][/code]