2014-12-12 3 views
0

У меня есть много XSD, которые обращаются друг к другу.
Поскольку я перехожу к JAXB, я в настоящее время ищу простой способ добавления пространств имен в xsds в соответствии с их структурой папок.Inherit XSD префикс пространства имен

Моей главной проблемой на данный момент является добавление пространства имен к самому XSD, к импорту в файле доступа, а также к определению префикса в файле доступа.

Вот небольшой пример (не вполне реально жить)

User.xsd - targetNamespace="common.user" 
Message.xsd - targetNamespace="common.message" 
Email.xsd - targetNamespace="email" xmlns:user="common.user" xmlns:message="common.message" 
      import namespace="common.user" schemaLocation="./common/user.xsd" 
      import namespace="common.message" schemaLocation="./common/message.xsd" 

Когда у меня теперь есть новый Message.xsd схемы я должен дублировать 90% моего заголовка XSD.

Я создал Namespace.xsd xmlns:user="common.user" xmlns:message="common.message", который затем включается Email.xsd. Но доступ, например, user:name не работает.

Есть ли способ сохранить определение пространства имен в центральном XSD-файле, поэтому мне не нужно определять их в каждом отдельном xsd?

Кроме того, существует ли способ, которым не нужно устанавливать пространство имен в импорте, когда оно уже определено в импортированном xsd как targetNamespace?

ответ

0

Я думаю (не 100% уверен, однако), что включение в схему А схему B, которая импортирует другую схему C даст вам доступ к C в A.

Однако вам все равно нужно объявить префикс пространства имен (например, xmlns:user="common.user").

пс. Просто предупреждение - никогда не делайте chameleon schemas. Не похоже, что вы планируете, но я все еще хотел предупредить.

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