Проверка нескольких комбинаций элементов и значений в схеме XML - PullRequest
0 голосов
/ 01 ноября 2011

Я пытаюсь создать XML-схему 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-схему 1.1. Есть ли хороший способ поместить эту логику в одну схему?

Извините за путаницу, я просто переписал свою проблему снова.

1 Ответ

0 голосов
/ 01 ноября 2011

Здесь Установите ниже вещи, основанные на вашем требовании: -

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>
...