在XML Schema中验证多个元素和值组合

时间:2011-11-01 16:43:11

标签: xml xsd xsd-1.0

我正在尝试创建一个验证多个元素组合的XML Schema 1.0。

例如,

是否可以在架构中创建可能的元素 - 值组合列表? 喜欢, 仅在

时有效
  1. A = 1&& B = 2

  2. A = 2&& B = 4

  3. 通过示例

    <Full>  
      <A>1</A>
      <B>2</B>      
    </Full>  
    
    <Full>
     <A>2</A>
     <B>4</B>
    </Full>
    

    失败示例

    <Full>  
      <A>2</A>
      <B>2</B>      
    </Full>  
    
    <Full>
     <A>1</A>
     <B>4</B>
    </Full>  
    

    我还不能使用XML Schema 1.1。    有没有什么好方法可以将这些逻辑放在一个模式中?

    对于这种困惑感到抱歉,我只是重写了我的问题。

1 个答案:

答案 0 :(得分:0)

根据您的要求在下面设置: -

minOccurs =“0” - 对于零出现或超过

minOccurs =“1” - 至少一次出现或超过

maxOccurs =“unbounded”:如果您想使用无限次,请设置此项

maxOccurs =“1”:如果您只想一次设置此项

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="FULL">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="A" type="xs:int" minOccurs="0" maxOccurs="unbounded"/>
                <xs:element name="B" type="xs:int" minOccurs="0" maxOccurs="unbounded"/>
                <xs:element name="C" type="xs:int" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

更新:

假设您正在传递所有三个单独的XML,(不是作为一个完整的XML)

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="FULL">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="A" type="xs:int" minOccurs="1" maxOccurs="1"/>
                <xs:element name="B" type="xs:int" minOccurs="0" maxOccurs="1"/>
                <xs:element name="C" type="xs:int" minOccurs="0" maxOccurs="1"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

另一个更新:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="FULL">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="A" minOccurs="1" maxOccurs="1">
                    <xs:simpleType>
                        <xs:restriction base="xs:int">
                            <xs:pattern value="[1-2]"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:element>
                <xs:element name="B" minOccurs="0">
                    <xs:simpleType>
                        <xs:restriction base="xs:int">
                            <xs:pattern value="2"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:element>
                <xs:element name="C" type="xs:int" minOccurs="0"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>
相关问题