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