XSD类型,只允许属性OR内容,但不是两个

问题描述:

我想制作一个XSD内容类型,允许属性或内容,但不是同时(或两者都不)。例如,以下将被允许:XSD类型,只允许属性OR内容,但不是两个

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

不幸的是,这对于XSD 1.0来说是不可能的。有了这些需求,您将不得不从另一个模式语言获得帮助,最终在XSD之上,例如Schematron。 XSD 1.1将允许你声明一个规则以达到你需要的效果;不幸的是,目前对XSD 1.1的支持非常有限。