ограничение элемента xml xsd с использованием другого элемента - PullRequest
2 голосов
/ 16 сентября 2010

Мне интересно, есть ли способ ограничить то, что проверяет, используя один элемент для проверки другого элемента.В приведенном ниже примере, можно ли проверить ограничение, что если OptionOne выбран как «B», то RefIssue должен быть выбран как «XXXX-B-XXX» и наоборот?в ключ / refkey, но я не смог выяснить, может ли он сделать это ограничение.Любая помощь приветствуется.

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:element name="CustomIssueSchema">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="CustomIssue" maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="CustomArgs" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="OptionOne">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:enumeration value="A"/>
                          <xs:enumeration value="B"/>
                          <xs:enumeration value="C"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="CustomRef" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="RefIssue">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:enumeration value="XXXX-A-XXX"/>
                          <xs:enumeration value="XXXX-B-XXX"/>
                          <xs:enumeration value="XXXX-C-XXX"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

Ответы [ 2 ]

1 голос
/ 16 сентября 2010

Это невозможно в схеме XML.Вы не можете иметь межэлементные ограничения такого рода, вам придется использовать другой язык (Schematron, XQuery и т. Д.) Или написать код.

0 голосов
/ 20 сентября 2010

похоже, что вы можете сделать это с XSD 1.1, но он не выпущен, и я не могу его реализовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...