Можно ли определить атрибут как строку или известную строку? - PullRequest
0 голосов
/ 10 октября 2018

Например, я хотел бы иметь несколько зарезервированных строк, которые имеют пользовательское поведение в моей программе.Я хотел бы сообщить людям, использующим Схему, какие значения будут иметь запрограммированное поведение.

Скажите, что "a" "b" "c" "d" зарезервированы.

, есликто-то указывает «customOperation1», тогда он будет обрабатываться в коде как пользовательское значение.

Где, если кто-то использует «a», то вызывается предварительно запрограммированное поведение для «a».

В настоящее время у меня просто есть строковое поле, но есть ли способ передать «строку с дополнительным значением и ключевыми словами» в XML?

например,

  <xs:simpleType name="operation" final="restriction">
    <xs:restriction base="xs:string">
      <xs:enumeration value="a"/>
      <xs:enumeration value="b"/>
    </xs:restriction>
  </xs:simpleType>

Позволит мне указатьперечисление, называемое операцией, со значениями "a" и "b"

Как сделать то же самое, но также разрешить пользовательские записи?

1 Ответ

0 голосов
/ 18 октября 2018

Вы можете использовать объединение перечисления и строки, например:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:simpleType name="SpecialOp" final="restriction">
    <xs:restriction base="xs:string">
      <xs:enumeration value="a"/>
      <xs:enumeration value="b"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="CustomOp">
    <xs:restriction base="xs:string"/>
  </xs:simpleType>

  <xs:simpleType name="Operation">
    <xs:union memberTypes="SpecialOp CustomOp"/>
  </xs:simpleType>

  <xs:element name="op" type="Operation"/>

</xs:schema>

Это будет принимать любое строковое значение для op, но все равно будет передавать значение специальных значений.

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