Тип XSD, который допускает только атрибут ИЛИ содержимое, но не оба - PullRequest
1 голос
/ 13 апреля 2011

Я пытаюсь создать XSD-тип контента, который допускает либо атрибут, либо контент, но не оба одновременно (или ни один).Например, будет разрешено следующее:

<data cid="my_id" />
<data>TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGh</data>

Но следующее не будет разрешено:

<data cid="my_id">TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGh</data>
<data />

Наилучшая попытка, которую я имею для этого, на данный момент допускает и то и другое, но также и /ни.

<xs:complexType name="data">
  <xs:simpleContent>
    <xs:extension base="xs:base64Binary">
      <xs:attribute name="cid" type="xs:string" use="optional" />
    </xs:extension>
  </xs:simpleContent>
</xs:complexType>

1 Ответ

1 голос
/ 17 апреля 2012

К сожалению, это невозможно с XSD 1.0.С этими требованиями вам в конечном итоге придется получить помощь от другого языка схем, помимо XSD, такого как Schematron.XSD 1.1 позволит вам утверждать правило на нужный вам эффект;К сожалению, в настоящее время поддержка XSD 1.1 довольно ограничена.

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