簡體   English   中英

XSD:使用XSD根據元素的屬性值控制xml元素的長度限制

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM