Соглашения для аннотирования appinfo в xml-схеме? - PullRequest
8 голосов
/ 10 ноября 2009

Я полагаю, что три приведенных ниже синтаксически верны; но которые разрешены в соответствии с соглашениями (особенно на предприятии)?


Первый приведенный ниже используется в большинстве примеров, которые я видел (например, JAXB), но он многословен:

<xs:annotation>
  <xs:appinfo>
    <myinfo>don't panic</myinfo>
  </xs:appinfo>
</xs:annotation>

Этот второй ниже разрешен, потому что любые атрибуты разрешены для <appinfo> (которые не находятся в собственном пространстве имен XML-схемы). Это короче, и кажется разумным - но это обычный?

<xs:annotation>
  <xs:appinfo myinfo="don't panic"/>
</xs:annotation>

Этот последний ниже мой любимый, потому что он такой короткий и не загромождает схему. Я уверен, что это законно, потому что, как и <appinfo>, любые атрибуты разрешены для <annotation> (опять же, при условии, что пространство имен схемы не-xml). Но он кодирует информацию приложения без использования <appinfo>, поэтому я боюсь, что он будет осужден. Это будет?

<xs:annotation myinfo="don't panic"/>

Большое спасибо за ваши комментарии!

Ответы [ 2 ]

5 голосов
/ 17 июня 2013

Интересными примерами несколько «стандартного» использования <xs:appinfo> являются http://docstore.mik.ua/orelly/xml/schema/ch14_02.htm и http://docstore.mik.ua/orelly/xml/schema/ch15_01.htm#ch15-77057

Обратите внимание, что <xs:appinfo> должен содержать информацию для обработки приложением, а не заметки, читаемые человеком (для этого используйте <xs:documentation>).

3 голосов
/ 19 ноября 2009

Я не думаю, что вы что-то слышите, потому что я не думаю, что эти аннотации так часто используются, и весь смысл спецификации состоит в том, чтобы позволить кому-либо поместить туда что-нибудь, что им поможет.

Единственное соглашение, которое я видел, это документация XHTML, которая, конечно, не похожа ни на одну из ваших опций.

Вы можете посмотреть, обрабатывают ли библиотеки обработки, такие как Apache XmlSchema, все ваши параметры одинаково.

...