Thank you in advance for your time.
If I comment out the line where the output is set, I can see that the transform is working by readin the text from output. I obviously need to do something to the document that recieves the output.
try
{
HRESULT hr;
IXSLTemplatePtr xsltemplate;
IXMLDOMDocumentPtr xsldocument;
// create a document to hold the xslt template
hr = xsltemplate.CreateInstance("Msxml2.XSLTemplate");
hr = xsldocument.CreateInstance("Msxml2.FreeThreadedDOM Document");
// load the transform
xsldocument->async = false;
xsldocument->load("test.xsl");
xsltemplate->stylesheet = xsldocument;
// load the xml to be transformed
IXMLDOMDocumentPtr xml;
hr = xml.CreateInstance("Msxml2.FreeThreadedDOMDocument ");
xml->async = false;
xml->load("test.xml");
// create a processor
IXSLProcessorPtr proc;
proc = xsltemplate->createProcessor();
// create a document to be the output
IXMLDOMDocumentPtr resultxml;
hr = resultxml.CreateInstance("Msxml2.FreeThreadedDOMDo cument");
// do the trasnform
proc->input = variant_t((IUnknown*)xml);
proc->setStartMode("versions", "");
proc->output = variant_t((IUnknown*)resultxml);
proc->transform();
// empty messagebox
::MessageBox(0,resultxml->xml,0,0);
}
catch(_com_error e)
{
::MessageBox(0,e.Description(),"exception",0);
}
// test.xsl
<?xml version="1.0" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:rs='urn:schemas-microsoft-com:rowset' xmlns:z='#RowsetSchema' version="1.0">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="/" mode="versions">
<xsl:for-each select='xml/rs:data/z:row'>
<version>
<object type='string'><xsl:value-of select='@object'/></object>
<version type='string'><xsl:value-of select='@version'/></version>
</version>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
// test.xml
<xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'
xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'
xmlns:rs='urn:schemas-microsoft-com:rowset'
xmlns:z='#RowsetSchema'>
<s:Schema id='RowsetSchema'>
<s:ElementType name='row' content='eltOnly' rs:CommandTimeout='30'
rs:ReshapeName='DSRowset1'>
<s:AttributeType name='object' rs:number='1' rs:writeunknown='true'>
<s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='128'
rs:maybenull='false'/>
</s:AttributeType>
<s:AttributeType name='version' rs:number='2' rs:writeunknown='true'>
<s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='50'
rs:maybenull='false'/>
</s:AttributeType>
<s:extends type='rs:rowbase'/>
</s:ElementType>
</s:Schema>
<rs:data>
<z:row object='Aggregate' version='2.0'/>
<z:row object='BackPrintLines' version='2.0'/>
<z:row object='Config' version='3.0'/>
<z:row object='Customer' version='6.0'/>
<z:row object='FlowController' version='2.0'/>
<z:row object='FlowControlRecipe' version='2.0'/>
<z:row object='Frame' version='6.0'/>
<z:row object='FulfillmentStatus' version='6.0'/>
<z:row object='Image' version='7.0'/>
<z:row object='ImageNode' version='6.0'/>
<z:row object='ImageSource' version='5.0'/>
<z:row object='Item' version='2.0'/>
<z:row object='Logos' version='3.0'/>
<z:row object='OrderEntryData' version='11.0'/>
<z:row object='Orders' version='9.0'/>
<z:row object='PaperPack' version='1.0'/>
<z:row object='PicturePackage' version='4.0'/>
<z:row object='Preference' version='1.0'/>
<z:row object='Product' version='7.0'/>
<z:row object='Rendition' version='3.0'/>
<z:row object='TextLines' version='4.0'/>
<z:row object='Versions' version='2003.02.1-INT-001'/>
</rs:data>
</xml>
Love,
Michael
|