I’m trying to validate an .XML file against an .XSD file with MSXML 6.0 DOM but on executing the code I’m getting this error message:
Test.xsd#/schema/target
You shouldn't have to change anything in your xml/xsd, since together they are valid. The problem is in your code, so I would suggest to take a look at this sample that shows what I think is different than your code: when you add the XSD to the cache, use the target namespace http://somewhere.com/root instead of the empty string.
Try adding the namespace URI to the schema cache.
Sub XSD_Validation()
Dim xmlDoc As MSXML2.DOMDocument60
Dim objSchemaCache As New XMLSchemaCache60
Dim objErr As MSXML2.IXMLDOMParseError
objSchemaCache.Add "http://somewhere.com/root", LoadXmlFile("I:\Test.xsd")
Set xmlDoc = LoadXmlFile("I:\Test.xml")
Set xmlDoc.Schemas = objSchemaCache
Set objErr = xmlDoc.Validate()
If objErr.errorCode = 0 Then
Debug.Print "No errors found"
Else
Debug.Print "Error parser: " & objErr.errorCode & "; " & objErr.reason
End If
End Sub
Function LoadXmlFile(Path As String) As MSXML2.DOMDocument60
Set LoadXmlFile = New MSXML2.DOMDocument60
With LoadXmlFile
.async = False
.validateOnParse = False
.resolveExternals = False
.load Path
End With
End Function