XSD类型只允许属性OR内容,但不能同时允许两者

时间:2011-04-12 21:38:00

标签: attributes xsd

我正在尝试创建一个允许属性或内容的XSD内容类型,但不能同时(或两者都不)。例如,允许以下内容:

<data cid="my_id" />
<data>TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGh</data>

但不允许以下内容:

<data cid="my_id">TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGh</data>
<data />

到目前为止,我所做的最好的尝试既允许,也可以两者兼而有。

<xs:complexType name="data">
  <xs:simpleContent>
    <xs:extension base="xs:base64Binary">
      <xs:attribute name="cid" type="xs:string" use="optional" />
    </xs:extension>
  </xs:simpleContent>
</xs:complexType>

1 个答案:

答案 0 :(得分:1)

不幸的是,XSD 1.0无法实现这一点。有了这些要求,您将不得不从最终的XSD(例如Schematron)获得另一种模式语言的帮助。 XSD 1.1允许您根据需要确定规则;遗憾的是,目前对XSD 1.1的支持非常有限。