/child[@name="C:"]//*/../child[@system="true"] 在XMLSpy中显示是Valid的XPath.msxml4.0也支持这个XPath, 但是msxml3.0不支持。我想问一下msxml3.0和msxml4.0有什么区别,为什么msxml3.0不支持?我的测试code如下:
int _tmain(int argc, _TCHAR* argv[])
{  
   CoInitialize(NULL);
   HRESULT  hr = S_OK;
   CComPtr <IXMLDOMDocument>     xmlDomDoc;   
   CComPtr <IXMLDOMNodeList>     nodeList;   
   WCHAR       xPath[256] = 
L"/child[@name=\"C:\"]//*/../child[@system=\"true\"]";   hr = xmlDomDoc.CoCreateInstance (L"MSXML2.DOMDocument.3.0", NULL, 
CLSCTX_INPROC_SERVER);            if (SUCCEEDED (hr))
   {
      xmlDomDoc->put_async(VARIANT_FALSE);                   
      xmlDomDoc->put_validateOnParse(VARIANT_FALSE);                  
      xmlDomDoc->put_resolveExternals(VARIANT_FALSE);           
      xmlDomDoc ->selectNodes (CComBSTR (xPath), &nodeList);      if (NULL == nodeList.p)
      { 
         printf ("invalid xpath\r\n");
      }
      else
      {
         printf ("valid xpath\r\n");
      }
      nodeList.Release ();
      xmlDomDoc.Release ();
   }
   CoUninitialize();
   return 0;
}msxml3.0 输出 invalid xpath.
msxml4.0 输出 valid xpath.