XSD жалуется: «В группе моделей появляются несколько элементов с именем« B »разных типов». - PullRequest
0 голосов
/ 07 мая 2009

У меня есть следующий XSD:

<xs:complexType name="typeBroken">
  <xs:choice>
    <xs:element name="B">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="FOO|BAR" />
        </xs:restriction>
      </xs:simpleType>
    </xs:element>
    <xs:sequence>
      <xs:element name="A">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:maxLength value="5" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="B">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:maxLength value="3" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:sequence>
  </xs:choice>
</xs:complexType>

Итак, я хотел бы, чтобы присутствие «А» сделало «В» другим подтверждением. Это возможно? Например:

<test><B>FOO</B></test>
<test><A>HELLO</A><B>BAZ</B><test>

Должны оба подтвердить. В то время как:

<test><B>BAZ</B></test>

НЕ ДОЛЖЕН проверяться. Тем не менее, я получаю от xsd:

cos-element-consistent: Error for type 'typeBroken'. Multiple elements with name 'B', with different types, appear in the model group.

1 Ответ

0 голосов
/ 07 мая 2009

Правильно ли я понимаю ваши требования? Вы хотите иметь <B>...</B> и, возможно, <A>....</A> до этого (но не обязательно)?

Как насчет этой схемы тогда?

<xs:complexType name="typeBroken">
  <xs:sequence>
    <xs:element name="A" minOccurs="0">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="5" />
        </xs:restriction>
      </xs:simpleType>
    </xs:element>
    <xs:element name="B">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="FOO|BAR" />
        </xs:restriction>
      </xs:simpleType>
    </xs:element>
    </xs:sequence>
  </xs:choice>
</xs:complexType>

Определите последовательность, в которой первый элемент <A> является необязательным (minOccurs="0"), а второй - необязательным.

Это решает ваше требование?

Марк

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