Как ограничить xs: выбор, содержащий xs: any? - PullRequest
2 голосов
/ 16 мая 2011

Если у меня есть xs: complexType, который содержит это:

<xs:choice minOccurs='0' maxOccurs='unbounded'>
   <xs:any/>
</xs:choice>

Я понимаю, что xs: любой значащий любой действительный элемент, но обычно мне не нужен мой rootэлемент, который будет использоваться где угодно, кроме как root, так что я могу предотвратить это, сказав «любой кроме корневой (или любой другой конкретный) элемент»?

1 Ответ

2 голосов
/ 24 июня 2011

Я думаю, что идеальным решением было бы реорганизовать схему так, чтобы у вас был один тип, который не включает <xs:any/>, а другой с ним <xs:any/>, то есть если вам действительно нужно использовать if по какой-то причине. В общем, <xs:any/> является очень сильным утверждением, которое выбрасывает проверку из окна, поскольку оно в значительной степени допускает что-либо из любого пространства имен, сказав, что то, что вы, вероятно, ищете здесь, это атрибут processContents="strict" or processContents="lax", поэтому:

<xsd:any processContents="strict"/>

означает, что для любого пространства имен оно должно будет проверяться по схеме, даже если схема не существует или (вероятно, лучше для вашего случая):

Это потребует проверки, только если схема существует.

Поскольку вы определяете схему для своего собственного пространства имен, это сработает, т. Е. Если вы попытаетесь использовать корневой элемент из вашего собственного / по умолчанию пространства имен - он проверит его по этому пространству имен и скажет, что это запрещено.

Подробнее см. W3C Spec .

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