Как обеспечить относительное расположение схем в xsd - PullRequest
0 голосов
/ 01 марта 2010

Если я определяю xsd main.xsd и sub.xsd

Теперь, если я хочу импортировать sub.xsd в main.xsd, как я могу это сделать.

<xsd:import
namespace="http://localhost:8080/my-app";
schemaLocation="main.xsd"/>

если оба находятся в одной папке ... но я хочу дать относительный URL-адрес, как мне это сделать.

1 Ответ

0 голосов
/ 03 марта 2010

Сначала я хотел бы сказать, что атрибут "SchemaLocation" описывается как "подсказка". В спецификации нет ничего, что приводило бы к разрешению этого атрибута в синтаксических анализаторах XML.

Тем не менее, если вы используете файловый подход, способ определения «в том же месте» был бы schemaLocation = ". \ Main.xsd".

Однако, будет ли это работать или нет, зависит от конкретной реализации используемого вами синтаксического анализатора XML.

Если вы используете .Net, я бы посоветовал вам загрузить обе схемы в XmlSchemaSet. Этого будет достаточно для проверки элементов / code-gen с использованием этого набора схем. Затем выполняется разрешение для namespace-uri.

Если вы используете .Net, вы также можете прикрепить XmlResolver к вашему приложению, которое принимает разрешение этих элементов.

Посмотрите MSDN , чтобы узнать больше об этом подходе

Надеюсь, это поможет,

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