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

后端 未结 2 1000
野趣味
野趣味 2021-01-02 18:25

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         


        
相关标签:
2条回答
  • 2021-01-02 18:29

    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.

    0 讨论(0)
  • 2021-01-02 18:50

    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
    
    0 讨论(0)
提交回复
热议问题