Здравствуйте Lloyd, Вы писали:
L>Здравствуйте alsun, Вы писали:
A>>xml создается программно из таблиц,
A>> oXML = CreateCOMObject;
A>> ...
A>> oXML.appendChild(oXML.createProcessingInstruction('xml', ' version="1.0" encoding="windows-1251"'));
A>> // вот здесь бы добавить объявление типа документа...
A>> oXML.documentElement = oXML.createElement('ROOT');
A>>потом в него добавляются ноды и аттрибуты из таблицы,
A>>все это чудесно сохраняется в файл, но не прописывать же объявление типа документа в ручную?
A>> oXML.createNode('10', 'ROOT', '');
A>>выдает ошибку:
A>> This operation can not be performed on DOCTYPE node.
L>А oXMLDOMDocument.doctype Вам не подойдет?
к сожалению, doctype доступен только для чтения
doctype — Возвращает тип документа, определяемый при его создании тэгом <!DOCTYPE>, включающим DTD. Если в документе нет DTD описаний, возвращается null (
действительно возвращает).
Только для чтения.
Здравствуйте alsun, Вы писали:
A>к сожалению, doctype доступен только для чтения
Можно сделать по тупому, после создания нового XMLDocument'а, загрузить в него <!DOCTYPE> из строки:
Set doc_ = CreateObject("Microsoft.XMLDOM")
doc_.async=false: doc_.validateOnParse=false: doc_.resolveExternals=false
doc_.loadXml("<!DOCTYPE jboss PUBLIC '-//JBoss//DTD JBOSS 2.4//EN' 'http://www.jboss.org/j2ee/dtd/jboss_2_4.dtd'><jboss/>")
set newElement = doc_.appendChild (doc_.createProcessingInstruction("xml","version=""1.0"" encoding=""WINDOWS-1251"""))
doc_.save(".\sm.xml")
Пример на vbs'е