2013-09-24 3 views
1

Hy,схемы импорта без пространства имен атрибута

Если я импортировать пространство имен, как это:

<xs:import namespace="UniqueIRIstyleNameSpaceName" schemaLocation="mySchema.xsd"></xs:import> 

Я знаю, что mySchema.xsd создает TargetNamespace = "UniqueIRIstyleNameSpaceName". Теперь, если я перехожу к: http://www.w3schools.com/schema/el_import.asp и читаю соответствующий API элемента «import», определенного в пространстве имен, связанного с «xs», он говорит, что «пространство имен» атрибута является необязательным.

Теперь вот вопросы:

  • ДОЛЖНА значение атрибута «пространства имен» такого импорта всегда быть таким же, как значение «TargetNamespace» в соответствующей схеме (XSD-)?

  • Если это так: не было бы проще просто полностью оставить атрибут «namespace»?

  • Если нет ... Im в глубокой скорби, так как я, кажется, не в полной мере понимают концепцию пространства имен и будет действительно заинтересован в нескольких ключевых слов, где искать информацию, чтобы закрыть утечку :)

Я спрашиваю об этом, потому что я в настоящее время работаю с XML/XSD как 5-й раз в своей карьере и никогда не видел его в другом варианте, но атрибут «namespace» всегда присутствует и сопоставляет значение targetNamespace в соответствующей схеме.

Большое спасибо заранее & уважением

JBA

ответ

5

ДОЛЖНА значение атрибута «пространства имен» такого импорта всегда будет таким же, как значение «TargetNamespace» в соответствующей схеме (. XSD)?

Да, абсолютно. Вы не можете переопределить целевое пространство имен импортированной схемы!

Это возможно, но с использованием <xs:include> и только в том случае, если включенная схема не имеет целевого пространства имен. Такая техника называется «хамелеон-дизайн».

Если это так: не было бы проще просто полностью оставить атрибут «namespace»?

No. Единственный случай, когда следует опустить namespace атрибут, когда импортируемая схема не имеет целевого пространства имен. То есть его целевое пространство имен является глобальным.

В <xs:import> атрибут namespace является основным. Указание импортированного пространства имен может быть достаточно, чтобы процессор схемы мог импортировать необходимую схему. schemaLocation скорее намек, где его найти.

+0

Очень большое спасибо за разъяснение! – JBA

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