2015-07-17 2 views
0

Я пытаюсь проверить XML-документ, используя схему, предоставленную онлайн FCA.Невозможно добавить XML-схему в документ XML для проверки VBA

В файле XML-схемы определяется в заголовках, как это:

<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-файл, генерируемый нашим макро до их загрузки файла XML в Система отчетности FCA.

Так что я взял код из ответа tomalak «s в 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.

Что мне не хватает или что-то не так?

ответ

0

После некоторой тщательной проверки ответа, предоставленного tomalak по другому вопросу, я решил это.

В самом деле первый аргумент objSchemaCache.Add должен быть целевое пространство имен который является урны: ТНФ-пра- Великобритании: РВК: 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" 

это работает, и теперь говорят s, что файл не проверяется (что правильно!)

 Смежные вопросы

  • Нет связанных вопросов^_^