[英]XSD:Controlling the restriction on length of xml element based on that element's attribute value using XSD
以下是示例XML:
<PatientName>
<FamilyName updatable="2">Bob</FamilyName>
</PatientName>
當前使用的XSD是這樣的:
<xs:simpleType name="reviewFamilyname">
<xs:restriction base="xs:string">
<xs:maxLength value="20"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="FamilyName" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="reviewFamilyname">
<xs:attribute type="xs:string" name="updatable"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
目前,我對姓氏使用限制,即最大長度不得超過20個字符。 我正在使用XSD 1.0,並且我想基於FamilyName元素的屬性值將限制應用於FamilyName元素。 我想在什么時候禁用限制,
在FamilyName元素中,屬性(可更新)值等於2。
並且attribute(可更新)值等於1,FamilyName元素值為null。
在所有其他情況下,都應啟用限制。我應該如何更改XSD以完全滿足這些要求,這有可能嗎?
謝謝。
在XSD 1.0中,元素內容的類型不能取決於其屬性的值。
在XSD 1.1中,您可以使用稱為條件類型分配的功能來實現此目的。
您會想要這樣的東西:
<xs:element name="FamilyName" type="xs:anyType">
<xs:alternative test="@updateable = 1" type="...."/>
<xs:alternative test="@updateable = 2" type="...."/>
<xs:alternative type="...."/>
</xs:element>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.