在XSD 1.0,你唯一的選擇是記錄在散文的約束。 (例如,在架構模式中,元素聲明具有類似的約束)。
在XSD 1.1中,您可以使用斷言來記錄和強制執行約束。 Modfying通過彼得魯杜米特Gardea提出了一個位架構文檔,我們有:
<xs:schema targetNamespace="http://example.com/colors"
xmlns:tns="http://example.com/colors"
elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="flowerColor">
<xs:restriction base="xs:normalizedString">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="flowerVariantC">
<xs:sequence>
<xs:element name="color"
type="tns:flowerColor"
minOccurs="0"/>
</xs:sequence>
<xs:attribute name="color"
type="tns:flowerColor"
use="optional"/>
<xs:assert test="(./tns:color or ./@color)
and not(./tns:color and ./@color)"/>
</xs:complexType>
<xs:element name="flower" type="tns:flowerVariantC"/>
<xs:element name="test"/>
</xs:schema>
鑑於剛剛展示的模式文檔和下面的實例,撒克遜人拒絕第一和第四花朵元素爲無效。
<test xmlns="http://example.com/colors"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://example.com/colors colors.xsd">
<flower/>
<flower color="red"/>
<flower><color>blue</color></flower>
<flower color="blue"><color>blue</color></flower>
</test>
(這就是說,我的本能是反對這項建議設計過於複雜:選擇使顏色的屬性,還是選擇讓孩子的事實,每一個都是合理的設計確實不。意味着允許它在文檔內變化是一種合理的設計。)