我试图创建/更正以下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>
希望可以做到这一点。我也尝试集团,但它并不适用于所有标签的工作。所有这些都表明欢迎。
在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?