msxml3: Corrected transformNode.
This commit is contained in:
parent
9c8c33006e
commit
42db8b439f
|
@ -44,6 +44,10 @@
|
||||||
# include <libxslt/xsltInternals.h>
|
# include <libxslt/xsltInternals.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_LIBXML2
|
||||||
|
# include <libxml/HTMLtree.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "wine/debug.h"
|
#include "wine/debug.h"
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(msxml);
|
WINE_DEFAULT_DEBUG_CHANNEL(msxml);
|
||||||
|
@ -1065,21 +1069,39 @@ static HRESULT WINAPI xmlnode_transformNode(
|
||||||
result = xsltApplyStylesheet(xsltSS, This->node->doc, NULL);
|
result = xsltApplyStylesheet(xsltSS, This->node->doc, NULL);
|
||||||
if(result)
|
if(result)
|
||||||
{
|
{
|
||||||
xmlBufferPtr pXmlBuf;
|
const xmlChar *pContent;
|
||||||
int nSize;
|
|
||||||
|
|
||||||
pXmlBuf = xmlBufferCreate();
|
if(result->type == XML_HTML_DOCUMENT_NODE)
|
||||||
if(pXmlBuf)
|
|
||||||
{
|
{
|
||||||
nSize = xmlNodeDump(pXmlBuf, NULL, (xmlNodePtr)result, 0, 0);
|
xmlOutputBufferPtr pOutput = xmlAllocOutputBuffer(NULL);
|
||||||
if(nSize > 0)
|
if(pOutput)
|
||||||
{
|
{
|
||||||
const xmlChar *pContent;
|
htmlDocContentDumpOutput(pOutput, result->doc, NULL);
|
||||||
|
if(pOutput)
|
||||||
|
{
|
||||||
|
pContent = xmlBufferContent(pOutput->buffer);
|
||||||
|
*xmlString = bstr_from_xmlChar(pContent);
|
||||||
|
}
|
||||||
|
|
||||||
pContent = xmlBufferContent(pXmlBuf);
|
xmlOutputBufferClose(pOutput);
|
||||||
*xmlString = bstr_from_xmlChar(pContent);
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xmlBufferPtr pXmlBuf;
|
||||||
|
int nSize;
|
||||||
|
|
||||||
xmlBufferFree(pXmlBuf);
|
pXmlBuf = xmlBufferCreate();
|
||||||
|
if(pXmlBuf)
|
||||||
|
{
|
||||||
|
nSize = xmlNodeDump(pXmlBuf, NULL, (xmlNodePtr)result, 0, 0);
|
||||||
|
if(nSize > 0)
|
||||||
|
{
|
||||||
|
pContent = xmlBufferContent(pXmlBuf);
|
||||||
|
*xmlString = bstr_from_xmlChar(pContent);
|
||||||
|
|
||||||
|
xmlBufferFree(pXmlBuf);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -143,10 +143,9 @@ static const CHAR szTransformSSXML[] =
|
||||||
"</xsl:stylesheet>";
|
"</xsl:stylesheet>";
|
||||||
|
|
||||||
static const CHAR szTransformOutput[] =
|
static const CHAR szTransformOutput[] =
|
||||||
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n"
|
"<html><body><h1>"
|
||||||
"<html><body><h1>\n"
|
"Hello World"
|
||||||
"Hello World\n"
|
"</h1></body></html>";
|
||||||
"</h1></body></html>\n";
|
|
||||||
|
|
||||||
static const WCHAR szNonExistentFile[] = {
|
static const WCHAR szNonExistentFile[] = {
|
||||||
'c', ':', '\\', 'N', 'o', 'n', 'e', 'x', 'i', 's', 't', 'e', 'n', 't', '.', 'x', 'm', 'l', 0
|
'c', ':', '\\', 'N', 'o', 'n', 'e', 'x', 'i', 's', 't', 'e', 'n', 't', '.', 'x', 'm', 'l', 0
|
||||||
|
@ -242,6 +241,19 @@ static VARIANT _variantbstr_(const char *str)
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static BOOL compareIgnoreReturns(BSTR sLeft, BSTR sRight)
|
||||||
|
{
|
||||||
|
for (;;)
|
||||||
|
{
|
||||||
|
while (*sLeft == '\r' || *sLeft == '\n') sLeft++;
|
||||||
|
while (*sRight == '\r' || *sRight == '\n') sRight++;
|
||||||
|
if (*sLeft != *sRight) return FALSE;
|
||||||
|
if (!*sLeft) return TRUE;
|
||||||
|
sLeft++;
|
||||||
|
sRight++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void get_str_for_type(DOMNodeType type, char *buf)
|
static void get_str_for_type(DOMNodeType type, char *buf)
|
||||||
{
|
{
|
||||||
switch (type)
|
switch (type)
|
||||||
|
@ -3193,7 +3205,7 @@ static void test_testTransforms(void)
|
||||||
|
|
||||||
hr = IXMLDOMDocument_transformNode(doc, pNode, &bOut);
|
hr = IXMLDOMDocument_transformNode(doc, pNode, &bOut);
|
||||||
ok(hr == S_OK, "ret %08x\n", hr );
|
ok(hr == S_OK, "ret %08x\n", hr );
|
||||||
ok( !lstrcmpW( bOut, _bstr_(szTransformOutput) ), "Stylesheet output not correct\n");
|
ok( compareIgnoreReturns( bOut, _bstr_(szTransformOutput)), "Stylesheet output not correct\n");
|
||||||
|
|
||||||
IXMLDOMNode_Release(pNode);
|
IXMLDOMNode_Release(pNode);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue