Ошибка проверки Xml: предоставленное пространство имен «X» отличается от целевого пространства имен схемы «Y» - PullRequest
0 голосов
/ 09 октября 2009

Я получаю следующую ошибку при проверке документа xml при использовании IXMLDOMDocument2 (C ++):

Предоставленное пространство имен 'http://www.somesite.com/schema/2.0' отличается от целевого пространства имен схемы' http://www.somesite.com/schema/2.0/SomeObject'.

Xml, который я пытаюсь проверить:

<id:envelope xmlns:id="http://www.somesite.com/schema/2.0/SomeObject" 
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
             xsi:schemaLocation="http://www.somesite.com/schema/2.0 SomeObject.xsd">
    <!-- content -->
</id:envelope>

Теперь я вижу, что похоже, что тег xsi: schemaLocation немного искажен пробелом ("http://www.somesite.com/schema/2.0 SomeObject.xsd", похоже, интерпретируется как "http://www.somesite.com/schema/2.0"),, но Я до сих пор не могу понять, что происходит, поскольку это указывает на то, что schemaLoaction должно точно соответствовать указанному xmlns ...

  • Разрешены ли пробелы в именах схем?
  • Должно ли schemaLoaction соответствовать targetNamespace?
  • Если так, то почему??

Ответы [ 2 ]

1 голос
/ 09 октября 2009

schemaLocation содержит способ сопоставления схемы с местом, где можно найти представление схемы

В этом случае schemaLocation должен содержать пару строк

The schema name - exactly matching the namespace id given

Where it is found in this case a relative file SomeObject.xsd

Определения содержатся в спецификации схемы W3C , см. Пример в разделе 4.3.2

Так что исправленная версия может быть xsi: schemaLocation = "http://www.somesite.com/schema/2.0/SomeObject http://www.somesite.com/schema/2.0SomeObject.xsd"

0 голосов
/ 09 октября 2009

Я не знаю фактического парсера, который вы используете, но поскольку расположение схемы - это URL, а URL не могут содержать пробелы, возможно, парсер просто выдает неверное сообщение об ошибке. Попробуйте правильную URL-кодировку местоположения schmea и посмотрите, поможет ли это:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...