在xsd:sequence中使用xsd:all

时间:2018-06-29 16:27:47

标签: xsd xsd-validation xml-validation

我有一个XSD,其序列中具有选择结构:

<xsd:element name="M_850">
    <xsd:complexType>
        <xsd:sequence>
            <xsd:element name="S_ST" minOccurs="1" maxOccurs="1"/>
            <xsd:element name="S_BEG" minOccurs="1" maxOccurs="1"/>
            **<xsd:choice minOccurs="0" maxOccurs="2">
               <xsd:element name="Element1"/>
               <xsd:element name="Element2"/>
            </xsd:choice>**
        </xsd:sequence>
    </xsd:complexType>
</xsd:element>

但是我的实际要求是:

<xsd:element name="M_850">
    <xsd:complexType>
        <xsd:sequence>
            <xsd:element name="S_ST" minOccurs="1" maxOccurs="1"/>
            <xsd:element name="S_BEG" minOccurs="1" maxOccurs="1"/>
            **<xsd:all>
                <xsd:element name="Element1" minOccurs="0" maxOccurs="1"/>
                <xsd:element name="Element2" minOccurs="0" maxOccurs="1"/>
            </xsd:all>**
        </xsd:sequence>
    </xsd:complexType>
</xsd:element>

“ Element1”和“ Element2”可以按任何顺序出现,但只能根据其各自的基数出现。更糟的是,选择/所有结构中的基数可能有所不同。

我知道我们不能在“序列”中使用“全部”,但是有什么替代方法可以用来实现相同的验证效果。

0 个答案:

没有答案