MSXML VBA: Validating XML against XSD: "The '' namespace provided differs from the schema's targetNamespace." MSXML VBA: Validating XML against XSD: "The '' namespace provided differs from the schema's targetNamespace." vba vba

MSXML VBA: Validating XML against XSD: "The '' namespace provided differs from the schema's targetNamespace."


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 IfEnd SubFunction LoadXmlFile(Path As String) As MSXML2.DOMDocument60    Set LoadXmlFile = New MSXML2.DOMDocument60    With LoadXmlFile        .async = False        .validateOnParse = False        .resolveExternals = False        .load Path    End WithEnd Function


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.