Microsoft XML Core Services (MSXML) 5.0 for Microsoft Office - DOM Reference

Visual Basic Code (errorXPath.frm)

   ' Check "Microsoft XML, v50" from Project->References... 
   ' in Visual Studio.
   Set xd = CreateObject("MSXML2.DOMDocument.5.0")
   Set xs = CreateObject("MSXML2.XMLSchemaCache.5.0")

   ' Add xs to xd.
   xs.Add "urn:books", App.Path & "\books.xsd"
   Set xd.schemas = xs
   xd.async = False
   xd.validateOnParse = False

   xd.Load App.Path & "\books.xml"
   msg = "Validating DOM..." & vbCrLf
   Set er1 = xd.Validate
   If er1.errorCode <> 0 Then
      msg = msg & "invalid dom:" & vbCrLf & er1.reason _
                & "errorXPath:" & vbCrLf & er1.errorXPath & vbCrLf
   Else
      msg = msg & "DOM is valid:" & vbCrLf & xd.xml & vbCrLf
   End If

   msg = msg & vbCrLf & "Validating nodes..." & vbCrLf
   Set nlist = xd.selectNodes("//book")
   For Each node In nlist
      Set er1 = xd.validateNode(node)
      If er1.errorCode <> 0 Then
         msg = msg & vbCrLf & "Node is invalid:" & vbCrLf & er1.reason _
                            & "errorXPath:" & vbCrLf & er1.errorXPath _
                            & vbCrLf
      Else
         msg = msg & vbCrLf & "Node is valid:" & vbCrLf & node.xml & vbCrLf
      End If
   Next

   MsgBox msg

Try It!

  1. Copy the XML data (books.xml), and paste it into a text file. Save the file as books.xml.
  2. Copy the XSD listing (books.xsd), and paste it into a text file. Save the file as books.xsd, in the same directory where you saved books.xml.
  3. Create a Standard EXE project in Visual Basic. Save the empty project as errorXPath.vbp to the same directory where you saved books.xml and books.xsd. Name the form file errorXPath.frm.
  4. Create a reference to MSXML 5.0. To do this, select References... from the Project menu, then check the box for Microsoft XML, v50.
  5. Copy the Visual Basic code listing above, and paste it into the form_load subroutine.
  6. Execute the code by selecting Start from the Run menu.
  7. Verify that your output is the same as that listed in Output for the errorXPath Example.