0

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

例如,

是否可以在模式中创建可能的元素 - 值组合列表?像,仅在以下情况下有效

  1. A=1 && B=2

  2. A=2 && B=4

通过示例

<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。有没有什么好方法可以将这些逻辑放在一个模式中?

对不起,我只是再次重写我的问题。

4

1 回答 1

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>
于 2011-11-01T16:54:38.153 回答