XML Schema 1.1 Ограничения на группировку атрибутов - PullRequest
0 голосов
/ 30 июня 2011

При использовании XML Schema 1.1 я хотел бы определить группу атрибутов, которая встречается полностью вместе, то есть все атрибуты в attributeGroup либо присутствуют, либо отсутствуют. В следующем примере я бы хотел, чтобы в <anelement> присутствовали оба атрибута (attr_one и attr_two) или не было ни одного атрибута, а не только один атрибут.

<attributeGroup name="attrgroup">
  <attribute name="attr_one" />
  <attribute name="attr_one" />
</attributeGroup>

<element name="anelement">
  <complexType>
    <attributeGroup ref="attrgroup" />
  </complexType>
</element>

Насколько я понимаю, XML Schema 1.0 не может задавать эти отношения атрибутов (правильно?). Как лучше всего указать их в XSD 1.1? Я полагаю, что могу использовать assert для указания отношения, что-то вроде следующего:

<element name="anelement">
  <complexType>
    <attributeGroup ref="attrgroup" />
    <assert test="(@attr_one and @attr_two) or not(@attr_one or @attr_two)" />
  </complexType>
</element>

Но я надеялся, что в 1.1 было добавлено что-то, что позволило бы мне определить отношения, используя существующий язык, например атрибут use для attributeGroup с. Каков наилучший способ указать это отношение в XML-схеме 1.1?

1 Ответ

1 голос
/ 01 июля 2011

Утверждения - способ сделать это. Более простая формулировка:

test="exists(@attr_one) = exists(@attr_two)"

или вы могли бы сделать

test="count(@attr_one|@attr_two) != 1"
...