У меня есть рабочий код с использованием класса TXMLDocument Delphi и использование метода TransformNode для выполнения XSLT-перевода.Доступ к IXMLDOMDocument2 через TXMLDocument?
Но мне нужно, чтобы включить функции XSLT JavaScript (<msxml:script>
тегов) и - после того, как много прибегая к помощи - это означает, что мне нужно, чтобы установить AllowXsltScript
свойства IXMLDOMDocument2
к истине.
http://msdn.microsoft.com/en-us/library/windows/desktop/ms760290(v=vs.85).aspx
Я достиг этого успешно - но только путем изменения источника функции библиотеки Delphi CreateDOMDocument
в msxmldom.pas
.
function CreateDOMDocument: IXMLDOMDocument;
var doc :IXMLDOMDocument2;
begin
doc := TryObjectCreate([CLASS_DOMDocument60, CLASS_DOMDocument40, CLASS_DOMDocument30,
CLASS_DOMDocument26, msxml.CLASS_DOMDocument]) as IXMLDOMDocument2;
if not Assigned(doc) then
raise DOMException.Create(SMSDOMNotInstalled);
doc.setProperty('AllowXsltScript', true); // Allow XSLT scripts!!
Result := doc;
end;
Очевидно, что это далеко не удовлетворительны, - так как я могу получить доступ к IXMLDOMDocument2 объектов без модифицирующих код библиотеки ??
Не можете просто позвонить 'CoCreateInstance' себя и сделать' IXMLDOMDocument2'? –
@DavidHeffernan - проблема в том, что у меня есть куча существующего кода, основанного на TXMLDocument, с которым я не хочу общаться. Если бы я делал это с чистого листа, я бы, вероятно, не использовал MSXML! – Roddy