XSD XML序列所有的maxOccurs

问题描述 投票:0回答:1

我试图创建/更正以下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>

希望可以做到这一点。我也尝试集团,但它并不适用于所有标签的工作。所有这些都表明欢迎。

xml xsd sequence
1个回答
0
投票

在XSD 1.0,在一个xs:all粒子元素只能出现零或一次。

这一限制在XSD 1.1提升到允许任何maxOccurs值。

所以,你需要决定你是否可以移动到XSD 1.1(这是由相对较少的处理器架构支持:Xerces的,Altova公司,以及撒克逊)。

顺便说一句,这是令人困惑的是指你的元素属性。 “属性”是XML的技术术语。 “名”和你的模式文档中“的maxOccurs”的属性; “Susp_O_CD”您的实例文档中的一个元素。

参见XSD - how to allow elements in any order any number of times?

© www.soinside.com 2019 - 2024. All rights reserved.