Могут ли элементы XSD иметь более одного <annotation>? - PullRequest
1 голос
/ 30 декабря 2010

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

<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>
   ...

Ответы [ 2 ]

1 голос
/ 30 декабря 2010

Очевидно, нет, так как спецификация XML-схемы гласит, что аннотации, когда они используются, должны появляться в начале содержимого элемента.Тем не менее, элемент annotation может иметь столько элементов документация (или 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>
 ...
1 голос
/ 30 декабря 2010

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

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

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

...