Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;使用MSXML 3.0时XLST转换不起作用 我是C++的新手,继承了以下代码:使用XSLT文件来转换给定的XML,只需吐出文本值。_C++_Xml_Msxml_Xslt - Fatal编程技术网

C++;使用MSXML 3.0时XLST转换不起作用 我是C++的新手,继承了以下代码:使用XSLT文件来转换给定的XML,只需吐出文本值。

C++;使用MSXML 3.0时XLST转换不起作用 我是C++的新手,继承了以下代码:使用XSLT文件来转换给定的XML,只需吐出文本值。,c++,xml,msxml,xslt,C++,Xml,Msxml,Xslt,它同时加载XML和XSLT,transformnode()调用返回成功,但未应用任何转换。底部的原始输出包含完整的原始XML 它使用的是MSXML3.0。我已经使用Xselerator来验证XSLT是否有效和有效(即返回字符串“thisatestmessage…”) 以下是代码(减去所有错误处理): IXMLDOMNode*m_pXslt; EssSxsltData::初始化(无效) { IUnknown*l_pUnknown=NULL; IXMLDOMDocument*l_pXSLDocume

它同时加载XML和XSLT,transformnode()调用返回成功,但未应用任何转换。底部的原始输出包含完整的原始XML

它使用的是MSXML3.0。我已经使用Xselerator来验证XSLT是否有效和有效(即返回字符串“thisatestmessage…”)

以下是代码(减去所有错误处理):

IXMLDOMNode*m_pXslt;
EssSxsltData::初始化(无效)
{
IUnknown*l_pUnknown=NULL;
IXMLDOMDocument*l_pXSLDocument=NULL;
HRESULT hr=CoCreateInstance(uuuuidof(DOMDocument),NULL,CLSCTX_uall,IID_IUnknown,(LPVOID*)&l_punnown);
hr=l_pUnknown->QueryInterface(IID_IXMLDOMDocument,(LPVOID*)和l_pxsl文档);
CString l_sFileName(RetrieveXsltFileName().c_str());
hr=l_pxsl文档->加载(l_vFileName和l_bsucces);
hr=l_pXSLDocument->QueryInterface(IID_IXMLDOMNode,(LPVOID*)(&m_pXslt));
}
HRESULT ESSXsltData::ApplyXslt(常量字符*p_pszESSXml,std::vector&p_注释行)
{
IUnknown*l_pUnknown=NULL;
IXMLDOMDocument*l_pDocument=NULL;
if(p_pszESSXml)
{
变型成功;
HRESULT hr=CoCreateInstance(uuuuidof(DOMDocument),NULL,CLSCTX_uall,IID_IUnknown,(LPVOID*)&l_punnown);
hr=l_pUnknown->QueryInterface(IID_IXMLDOMDocument,(LPVOID*)和l_pDocument);
hr=l_pDocument->loadXML(CComBSTR(p_pszESSXml)和l_bSuccess);
hr=l_pDocument->QueryInterface(IID_IXMLDOMNode,(LPVOID*)(&m_pXslt));
BSTR l_bsOutput=NULL;
hr=l_pDocument->transformNode(m_pXslt和l_bsOutput);
COLE2T l_ASCIIOUT(l_bsOutput);
log修复了它

它重新分配了m_pXslt,使其等于应该验证的XML

有人一直在复制和粘贴

IXMLDOMNode *m_pXslt;

ESSXsltData::Initialise(void)
{
    IUnknown *l_pUnknown = NULL;
    IXMLDOMDocument *l_pXSLDocument = NULL;

HRESULT hr = CoCreateInstance(__uuidof(DOMDocument), NULL, CLSCTX_ALL, IID_IUnknown, (LPVOID *)&l_pUnknown);
hr = l_pUnknown->QueryInterface(IID_IXMLDOMDocument,(LPVOID *)&l_pXSLDocument);
CString l_sFileName(RetrieveXsltFileName().c_str() );
hr = l_pXSLDocument->load(l_vFileName, &l_bSuccess);

hr = l_pXSLDocument->QueryInterface(IID_IXMLDOMNode, (LPVOID *)(&m_pXslt) );
}

HRESULT ESSXsltData::ApplyXslt(const char *p_pszESSXml, std::vector< std::string > &p_CommentLines)
{
    IUnknown *l_pUnknown = NULL;
    IXMLDOMDocument *l_pDocument = NULL;


if (p_pszESSXml)
{
    VARIANT_BOOL l_bSuccess;
    HRESULT hr = CoCreateInstance(__uuidof(DOMDocument), NULL, CLSCTX_ALL, IID_IUnknown, (LPVOID *)&l_pUnknown);
    hr = l_pUnknown->QueryInterface(IID_IXMLDOMDocument,(LPVOID *)&l_pDocument);

    hr = l_pDocument->loadXML(CComBSTR(p_pszESSXml) , &l_bSuccess);
    hr = l_pDocument->QueryInterface(IID_IXMLDOMNode, (LPVOID *)(&m_pXslt) );

    BSTR l_bsOutput = NULL;
    hr = l_pDocument->transformNode(m_pXslt, &l_bsOutput);

    COLE2T l_AsciiOutput(l_bsOutput);
    log << "AsciiOutput: " << l_AsciiOutput << "\n"; 
}
}
<ESS><Message>This is a test message...</Message></ESS>
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
    <xsl:output method="text" indent="yes"/>
    <xsl:template match="ESS">
        <xsl:apply-templates select="Message"/>
    </xsl:template>
    <xsl:template match="Message">
        <xsl:value-of select="."/>
    </xsl:template>
</xsl:stylesheet>