簡體   English   中英

XSD XML所有序列maxOccurs

[英]XSD XML all sequence maxOccurs

我試圖創建/更正以下XSD以匹配程序邏輯。 當前的非XSD邏輯允許以下屬性(以下XML表示形式)以任何順序進行解析。 我對XSD非常滿意。 這將是解析驗證的寶貴工具。 是否可以創建XSD以允許以允許Susp_O_CD發生maxOccurs的任何順序處理這些屬性? 我知道序列將允許maxOccurs,而所有序列都不允許,但是必須允許Susp_O_CD最多包含五個值,並且需要StReas,StReas_N,ListSusp_T和Susp_O_CD標記的任何輸入順序。

<PrimaryReason>
   <StReas>2</StReas>
   <StReas_N>Reason for stop test</StReas_N>
   <ListSusp_T>
       <Susp_T>8</Susp_T>
       <Susp_T>4</Susp_T>
   </ListSusp_T>
   <Susp_O_CD>00100</Susp_O_CD>
   <Susp_O_CD>00200</Susp_O_CD>
   <Susp_O_CD>00101</Susp_O_CD>
   <Susp_O_CD>00201</Susp_O_CD>
</PrimaryReason>

XSD:

<xs:element name="PrimaryReason" type="Reason_Set"/>

<xs:complexType name="Reason_Set">
    <xs:all>
        <xs:element name="StReas" type="StReas"/>
        <xs:element name="StReas_N" type="StReas_N"/>
        <xs:element name="Tr_ID" type="Tr_ID" minOccurs="0"/>
        <xs:element name="Tr_O_CD" type="Tr_O_CD" minOccurs="0"/>
        <xs:element name="EDU_sec_CD" type="EDU_sec_CD" minOccurs="0"/>
        <xs:element name="EDU_subDiv_CD" type="EDU_subDiv_CD" minOccurs="0"/>
        <xs:element name="ListSusp_T" minOccurs="0">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Susp_T" type="Susp_T" minOccurs="0" maxOccurs="9"/>
            </xs:sequence>
        </xs:complexType>
        </xs:element>
        <xs:element name="Susp_O_CD" type="Susp_O_CD"  minOccurs="0" maxOccurs="5"/>
    </xs:all>   
</xs:complexType>

希望可以做到這一點。 我確實嘗試過Group,但不適用於所有標簽。 所有建議都值得歡迎。

在XSD 1.0中, xs:all粒子中的元素只能出現零或一次。

在XSD 1.1中取消了此限制,以允許任何maxOccurs值。

因此,您需要確定是否可以遷移到XSD 1.1(相對較少的架構處理器支持它:Xerces,Altova和Saxon)。

順便提一句,將元素稱為屬性會令人困惑。 “屬性”是XML中的技術術語。 模式文檔中的“名稱”和“ maxOccurs”是屬性; 實例文檔中的“ Susp_O_CD”是一個元素。

另請參閱XSD-如何允許元素以任意順序多次出現?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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