Adam Martinson : msxml3: Add XSLPattern nodeType() method.
Module: wine Branch: master Commit: 42ccbc51322409aa20272651759c5434b6d0c1db URL: http://source.winehq.org/git/wine.git/?a=commit;h=42ccbc51322409aa2027265175... Author: Adam Martinson <amartinson(a)codeweavers.com> Date: Tue Nov 2 16:11:49 2010 -0500 msxml3: Add XSLPattern nodeType() method. --- dlls/msxml3/queryresult.c | 7 +++++++ dlls/msxml3/tests/domdoc.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 0 deletions(-) diff --git a/dlls/msxml3/queryresult.c b/dlls/msxml3/queryresult.c index 96f9e6f..88fe39f 100644 --- a/dlls/msxml3/queryresult.c +++ b/dlls/msxml3/queryresult.c @@ -405,6 +405,12 @@ void XSLPattern_end(xmlXPathParserContextPtr pctx, int nargs) xmlXPathReturnBoolean(pctx, pos == last); } +void XSLPattern_nodeType(xmlXPathParserContextPtr pctx, int nargs) +{ + XSLPATTERN_CHECK_ARGS(0); + xmlXPathReturnNumber(pctx, pctx->context->node->type); +} + void XSLPattern_OP_IEq(xmlXPathParserContextPtr pctx, int nargs) { xmlChar *arg1, *arg2; @@ -528,6 +534,7 @@ HRESULT queryresult_create(xmlNodePtr node, LPCWSTR szQuery, IXMLDOMNodeList **o xmlXPathRegisterFunc(ctxt, (xmlChar const*)"index", XSLPattern_index); xmlXPathRegisterFunc(ctxt, (xmlChar const*)"end", XSLPattern_end); + xmlXPathRegisterFunc(ctxt, (xmlChar const*)"nodeType", XSLPattern_nodeType); xmlXPathRegisterFunc(ctxt, (xmlChar const*)"OP_IEq", XSLPattern_OP_IEq); xmlXPathRegisterFunc(ctxt, (xmlChar const*)"OP_INEq", XSLPattern_OP_INEq); diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c index 3ab6be3..e8f77cf 100644 --- a/dlls/msxml3/tests/domdoc.c +++ b/dlls/msxml3/tests/domdoc.c @@ -6702,6 +6702,36 @@ static void test_XSLPattern(void) expect_list_and_release(list, "P1.E3.E3.D1 C2.E3.E3.D1 T3.E3.E3.D1 E4.E3.E3.D1 E5.E3.E3.D1 E6.E3.E3.D1"); } + /* nodeType() */ + /* XML_ELEMENT_NODE */ + ole_check(IXMLDOMDocument2_selectNodes(doc, _bstr_("//x/node()[nodeType()=1]"), &list)); + len = 0; + ole_check(IXMLDOMNodeList_get_length(list, &len)); + ok(len != 0, "expected filled list\n"); + if (len) + expect_list_and_release(list, "E4.E3.E3.D1 E5.E3.E3.D1 E6.E3.E3.D1"); + /* XML_TEXT_NODE */ + ole_check(IXMLDOMDocument2_selectNodes(doc, _bstr_("//x/node()[nodeType()=3]"), &list)); + len = 0; + ole_check(IXMLDOMNodeList_get_length(list, &len)); + ok(len != 0, "expected filled list\n"); + if (len) + expect_list_and_release(list, "T3.E3.E3.D1"); + /* XML_PI_NODE */ + ole_check(IXMLDOMDocument2_selectNodes(doc, _bstr_("//x/node()[nodeType()=7]"), &list)); + len = 0; + ole_check(IXMLDOMNodeList_get_length(list, &len)); + ok(len != 0, "expected filled list\n"); + if (len) + expect_list_and_release(list, "P1.E3.E3.D1"); + /* XML_COMMENT_NODE */ + ole_check(IXMLDOMDocument2_selectNodes(doc, _bstr_("//x/node()[nodeType()=8]"), &list)); + len = 0; + ole_check(IXMLDOMNodeList_get_length(list, &len)); + ok(len != 0, "expected filled list\n"); + if (len) + expect_list_and_release(list, "C2.E3.E3.D1"); + /* pi() */ todo_wine ole_check(IXMLDOMDocument2_selectNodes(doc, _bstr_("pi()"), &list)); if (list)
participants (1)
-
Alexandre Julliard