2010-09-07 2 views
1

Ну, это было несколько часов я потерян ...IXSLTemplate :: putref_stylesheet возвращает E_INVALIDARG

IXSLTemplate::putref_stylesheet не документирует какой-либо ошибки, кроме E_FAIL.

Однако в моем случае putref_stylesheet возвращает E_INVALIDARG. GetErrorInfo() только лишний раз говорит мне, что «Аргумент недействителен». Поэтому я не оставляю много информации.

Однако мой код довольно близок ко всем примерам, которые я нашел в Интернете и msdn. И это делает что-то вроде:

void xsltProcessing(MSXML2::IXMLDOMDocument* pXmlDoc, MSXML2::IXMLDOMDocument * pXslDoc) 
{ 
    IXSLTemplatePtr pTemplate; 
    pTemplate.CreateInstance(_T("Msxml2.XSLTemplate")); 
    pTemplate->putref_stylesheet(pXslDoc); 
    //... 
} 

Поскольку существует не так много документации для putref_stylesheet. Есть ли у вас какие-либо идеи, что может пойти не так, чтобы он вернулся E_INVALIDARG?

My pXslDoc is IXMLDOMDocument Я успешно загрузил из статических константных строк.

Любой ключ? (Я думаю, это довольно неопределенный вопрос, но это часы, которые я ищу)

ответ

1

Вы загружаете pXslDoc асинхронно, возможно?

По умолчанию для объектов IXMLDOMDocument необходимо загрузить асинхронно, так что возможно, что pXslDoc не закончил загрузку, когда вы вызываете putref_stylesheet().

Добавление следующий код перед загрузкой pXslDoc бы решить эту проблему, если это то, что вы страдаете от:

pXslDoc->put_async(VARIANT_FALSE); 
+0

Да. Я сделал это, потому что видел это на примерах в сети, но не зная почему. Спасибо вам за объяснение. –