2010-12-30 4 views
1

У меня есть общая схема данных в XSD, которая используется двумя различными приложениями: A и B, каждый использует данные по-разному. Я хочу документировать различные бизнес-правила для каждого приложения. Я могу сделать это?Могут ли элементы XSD иметь более одного <annotation>?

<xs:complexType name="Account"> 
    <xs:annotation app="A"> 
     <xs:documentation> 
     The Account entity must be used this way for app A 
     </xs:documentation> 
    </xs:annotation> 
    <xs:annotation app="B"> 
     <xs:documentation> 
     The Account entity must be used this way for app B 
     </xs:documentation> 
    </xs:annotation> 
    <xs:complexContent> 
    ... 

ответ

1

appinfo element используется внутри annotation элемента, и определяет информацию, которая будет использоваться приложениями:

<xs:annotation> 
    <xs:appinfo>Any well-formed XML content here</xs:appinfo> 
</xs:annotation> 

Поскольку любое содержание XML является действительным, вы можете создавать свои собственные метаданные приложения конкретным и положить это в элементе appinfo.

1

По-видимому, нет, поскольку в спецификации XML Schema указано, что аннотации, когда они используются, должны содержать at the beginning содержимого элемента. Однако элемент annotation может иметь столько элементов documentation (или appinfo), сколько пожелаете. Вы можете различать эти элементы с помощью атрибутов. Вы также можете иметь несколько детей (любого типа) в пределах элемента documentation.

Таким образом, один из способов написания схемы может выглядеть следующим образом:

<xs:complexType name="Account"> 
    <xs:annotation > 
     <xs:documentation app="A"> 
     The Account entity must be used this way for app A 
     </xs:documentation> 
     <xs:documentation app="B"> 
     The Account entity must be used this way for app B 
     </xs:documentation> 
    </xs:annotation> 
    <xs:complexContent> 
... 
Смежные вопросы