VC中怎样实现利用xml和xslt生成html,我调试了半天都没弄出来,看了xml的SDK,针对transformNode他没有给出具体的示例,那位高手麻烦一下,帮忙写一下这个代码可以不?

解决方案 »

  1.   

    直接调用IE打开xml文档就可以了啊。。xml里面写上相关的解析用的xsl的地址就可以了这里面主要是编写xsl文件的工作。。
      

  2.   

    你下载这个东西:
    http://msdn.microsoft.com/library/en-us/dnsamples/msxslsrc.exe这是ms提供的一个使用xslt的例子,如果你下载不了,给我发邮件,我给你发送过去。
    [email protected]顺便提一句:我当时模仿这个例子自己写了一个程序把xml转换为另外一种格式的xml,但是无论如何也无法把UTF-8编码的xml转换后仍然保持UTF-8的编码,最后我只好在程序中调用这个例子编译后的exe文件。至今没有搞明白原因!你用的时候注意。
      

  3.   

    http://madeira.dainf.cefetpr.br/internet/bd/xml/
    在这个页面中搜索msxslsrc可以下载!
      

  4.   

    CSDN社区就是直接给出XML,IE处理之后用HTML格式显示的……
      

  5.   

    不用这么复杂,两个domdocument,a读取xml文件,b读取xsl文件 ,a调用函数transformNode
    // Load data.
    var source = new ActiveXObject("Msxml2.DOMDocument.3.0");
    source.async = false;
    source.load("books.xml");
    if (source.parseError.errorCode != 0) {
       var myErr = source.parseError;
       WScript.Echo("You have error " + myErr.reason);
    } else {
       // Load style sheet.
       var stylesheet = new ActiveXObject("Msxml2.DOMDocument.3.0");
       stylesheet.async = false
       stylesheet.load("sample.xsl");
       if (stylesheet.parseError.errorCode != 0) {
          var myErr = stylesheet.parseError;
          WScript.Echo("You have error " + myErr.reason);
        } else {
          // Echo back XSLT output to console
          WScript.Echo(source.transformNode(stylesheet));
       }
    }
      

  6.   

    我在vc下利用msdom解析了xml文件,采用xml+xsl结合的方式将其转换为html文件
    具体的转换函数如下。下面的函数采用文件流在磁盘下创建了temp.html文件,并将转换后的html文件写进temp.html文件中。
    temp.html可以在网页中直接运行。bool  ConvertXmlToHtml(CString fileXMLName,CString fileXSLName)
    {
    MSXML2::IXMLDOMDocumentPtr m_pXMLDoc;
    MSXML2::IXMLDOMDocumentPtr m_pXSLDoc;
    _bstr_t fileName;
    variant_t value;
    variant_t vResult;
      _bstr_t strBuffer; CoInitialize(NULL);                  //初始化模块库; //载入XML文件
    fileName=fileXMLName.AllocSysString();
    HRESULT hr=m_pXMLDoc.CreateInstance(MSXML2::CLSID_DOMDocument);
    if(FAILED(hr))
    {
    AfxMessageBox("创建XML文档失败");
    return false;
    }
    vResult=m_pXMLDoc->load(fileName);
    if((bool)vResult==FALSE)
    {
    AfxMessageBox("载入xml dom文件失败");
    return false;
    } //载入xsl文件;
    fileName=fileXSLName.AllocSysString(); hr=m_pXSLDoc.CreateInstance(MSXML2::CLSID_DOMDocument);
    if(FAILED(hr))
    {
    AfxMessageBox("创建XSL dom文档失败");
    return  false;
    }
    vResult=m_pXSLDoc->load(fileName);
    if((bool)vResult==FALSE)
    {
    AfxMessageBox("载入xsl文件失败");
    return false;
    } strBuffer=m_pXMLDoc->transformNode(m_pXSLDoc);
    ofstream outFile("C:\\temp.html");
    outFile<<(LPCTSTR)strBuffer;
    m_pXMLDoc.Release();      //释放职能指针;
    m_pXSLDoc.Release();
    CoUninitialize();                                          //模块反初始化;
    return true;
    }