2011-04-12 49 views
1

我想製作一個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> 

回答

1

不幸的是,這對於XSD 1.0來說是不可能的。有了這些需求,您將不得不從另一個模式語言獲得幫助,最終在XSD之上,例如Schematron。 XSD 1.1將允許你聲明一個規則以達到你需要的效果;不幸的是,目前對XSD 1.1的支持非常有限。