XSD元素可以有多个<annotation>?</annotation>

时间:2010-12-30 01:20:23

标签: xsd annotations

我在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 个答案:

答案 0 :(得分:1)

appinfo elementannotation元素中使用,并指定应用程序要使用的信息:

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

由于任何XML内容都有效,您可以创建自己的特定于应用程序的元数据并将其放在appinfo元素中。

答案 1 :(得分: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>
 ...