Конструкция XML-схемы для типа с перечислениями и атрибутами - PullRequest
1 голос
/ 05 декабря 2008

Я пытаюсь создать тип в схеме XML для принудительного применения элемента с обоими:

  • один атрибут; и
  • Простой контент, соответствующий перечислению.

В документе XML элемент может выглядеть следующим образом:

<Operator Permutation="true">
  Equals
</Operator>

Где "Равно" будет одним из перечислений.

Возможно ли это? Если да, то как?

Я пытался использовать XMLSpy безуспешно. Если я делаю простой тип, он допускает только перечисления содержимого без атрибутов. Если я создаю сложный тип, он допускает только атрибуты без перечислений содержимого.

Edit: Спасибо, Дэвид. Это прекрасно работает, но я только добавил это в ограничение, чтобы проверка игнорировала разрывы строк:

<xs:whiteSpace value="collapse"/>

1 Ответ

2 голосов
/ 05 декабря 2008

Как насчет

  <xs:element name="Operator" type="MixedElement" />

  <xs:complexType name="MixedElement">
    <xs:simpleContent>
      <xs:extension base="EnumType">
        <xs:attribute name="Permutation" type="xs:boolean">
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="EnumType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Equals"/>
      <xs:enumeration value="NotEquals"/>
    </xs:restriction>
  </xs:simpleType>
...