Схема XML - ограничить элемент перечислением или ключевой ссылкой - PullRequest
1 голос
/ 17 августа 2011

Я пытаюсь написать схему и хочу ограничить значение или элемент перечисляемым списком или ссылкой на ключ.Это возможно?т.е. у меня есть моя схема

   <xsd:simpleType name="TypeEnum">
      <xsd:restriction base="xsd:string">
         <xsd:enumeration value="uint8" />
         <xsd:enumeration value="uint16" />
         <xsd:enumeration value="uint32" />
         <xsd:enumeration value="uint64" />
      </xsd:restriction>
   </xsd:simpleType>

и в моем XML у меня есть

<root>
   <a>anEnum<a> <!-- This value should be restricted to either anEnum, anotherEnum or anything in TypeEnum -->
   <AdditionalTypes>
      <Enum Name="anEnum" />
      <Enum Name="anotherEnum" />
   </AdditionalTypes>
</root>

Мой вопрос заключается в том, как мне структурировать определение элемента схемы для <a>

Заранее спасибо за любую помощь.

1 Ответ

1 голос
/ 19 октября 2011

Создайте еще один именованный простой тип, который допускает остальные перечисляемые значения («anEnum» и «anotherEnum») так же, как вы создали тип «TypeEnum».Затем используйте <xsd:union> для объединения этих типов и установите <a> для использования этого комбинированного типа.

Пример кода

<xsd:simpleType name="TypeEnum">
    <xsd:restriction base="xsd:string">
        <xsd:enumeration value="uint8" />
        <xsd:enumeration value="uint16" />
        <xsd:enumeration value="uint32" />
        <xsd:enumeration value="uint64" />
    </xsd:restriction>
</xsd:simpleType>

<xsd:simpleType name="TypeAdditionalEnum">
    <xsd:restriction base="xsd:string">
        <xsd:enumeration value="anEnum" />
        <xsd:enumeration value="anotherEnum" />
    </xsd:restriction>
</xsd:simpleType>

<xsd:simpleType name="TypeUnionEnum">
    <xsd:union memberTypes="TypeAdditionalEnum TypeEnum" />
</xsd:simpleType>

<xsd:element name="a" type="TypeUnionEnum" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...