无法将 XML 架构添加到 XML 文档以进行 VBA 验证

Cannot add XML Schema to XML document for VBA Validation

我正在尝试使用 FCA 在线提供的模式验证 XML 文档。

在 xml 文件中,架构在 headers 中定义如下:

<PSD007-MortgagePerformanceSalesData xmlns = "urn:fsa-gov-uk:MER:PSD007:1" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="urn:fsa-gov-uk:MER:PSD007:1 
        http://www.fsa.gov.uk/mer/drg/PSD007/v1-3/PSD007-Schema.xsd"

我想为用户提供一个工具,在他们将 xml 文件加载到 FCA 报告系统之前验证我们的宏生成的 xml。

所以我从 tomalak's answer in SO: MSXML VBA: Validating XML against XSD: “The '' namespace provided differs from the schema's targetNamespace.”

中获取了代码

这是我修改后的代码版本:

Sub XSD_Validation()
    Dim xmlDoc As MSXML2.DOMDocument60
    Dim objSchemaCache As New XMLSchemaCache60
    Dim objErr As MSXML2.IXMLDOMParseError

    objSchemaCache.Add "http://www.w3.org/2001/XMLSchema-instance" & Chr
(34) & " xsi:schemaLocation=" & Chr(34) & "urn:fsa-gov-uk:MER:PSD007:1 
http://www.fsa.gov.uk/mer/drg/PSD007/v1-3/PSD007-Schema.xsd", LoadXmlFile
("C:\PRA Export Data Jul 17 2015.xml")

    Set xmlDoc = LoadXmlFile("C:\PRA Export Data Jul 17 2015.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

当我 运行 代码时,我得到以下错误:

PRA%20Export%20Data%20Jul%2017%202015.xml#/PSD007-MortgagePerformanceSalesData Incorrect definition for the root element in schema.

我在这里遗漏了什么或做错了什么?

仔细检查了tomalak在另一个问题上提供的答案后,我解决了这个问题。

实际上 objSchemaCache.Add 的第一个参数应该是 目标命名空间 urn:fsa-gov- uk:MER:PSD007:1 第二个参数应该是 模式文件的位置 http://www.fsa.gov.uk/mer/drg/PSD007/v1-3/PSD007-Schema.xsd

所以当我使用

    objSchemaCache.Add "urn:fsa-gov-
uk:MER:PSD007:1", "http://www.fsa.gov.uk/mer/drg/PSD007/v1-3/PSD007-Schema.xsd"

有效,但现在告诉我文件未通过验证(正确!)