42 MSXML2::IXMLDOMDocument3Ptr pStyleSheet( MSXML2::CLSID_FreeThreadedDOMDocument60 );
43 MSXML2::IXSLTemplatePtr pTemplate( MSXML2::CLSID_XSLTemplate60 );
44 MSXML2::IXSLProcessorPtr pProcessor;
46 pStyleSheet->async = VARIANT_FALSE;
47 pStyleSheet->resolveExternals = VARIANT_TRUE;
48 pStyleSheet->setProperty(
"AllowDocumentFunction", VARIANT_TRUE );
50 bResult = pStyleSheet->load( _variant_t(
m_stylesheet ) );
52 pTemplate->stylesheet = pStyleSheet;
54 pProcessor = pTemplate->createProcessor();
56 catch ( _com_error &e ) {
57 TRACE1(
"Error loading XSL stylesheet : %s\n", (
const char * ) _bstr_t( e.Description() ) );
62 MSXML2::IXMLDOMDocumentPtr pSrcDoc( MSXML2::CLSID_DOMDocument60 );
65 bResult = pSrcDoc->load( _variant_t( src ) );
67 TRACE1(
"Error parsing source document for transform: %s\n", src );
68 if ( pSrcDoc->parseError )
70 CString text = pSrcDoc->parseError->Getreason();
71 TRACE1(
"Parse error: %s\n", text );
73 TRACE1(
"error: %d\n", GetLastError() );
76 hr = pProcessor->put_output( CComVariant( dst ) );
77 if ( !SUCCEEDED( hr ) ) {
78 TRACE1(
"error: %d\n", GetLastError() );
81 hr = pProcessor->put_input( _variant_t( ( IUnknown * ) pSrcDoc ) );
82 if ( !SUCCEEDED( hr ) ) {
83 TRACE1(
"error: %d\n", GetLastError() );
88 for ( POSITION pos = params.GetStartPosition(); pos != NULL; ) {
89 params.GetNextAssoc( pos, key, val );
90 pProcessor->addParameter( _bstr_t( key ), _variant_t( val ),
"" );
91 TRACE2(
"adding params: %s = %s\r\n", key, val );
94 bResult = pProcessor->transform();
96 catch ( _com_error &e ) {
98 TRACE1(
"Error processing XML : %s\n", (
const char * ) _bstr_t( e.Description() ) );