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的支持非常有限。