XSD элемент any

Элемент any позволяет расширять XML документ элементами, не определенными схемой.

  • Родительские элементы: choice, sequence

Синтаксис


<any
 id=идентификатор
 maxOccurs=целоеЧисло | unbounded
 minOccurs=целоеЧисло
 namespace=пространствоИмен
 processContents=lax | skip | strict
 любые атрибуты
 >

 (annotation?)

</any>

(Знак ? указывает на то, что элемент может появляться ноль или один раз внутри элемента any.)

Атрибуты

Атрибут Описание
id Не обязательный. Определяет уникальный идентификатор для элемента
maxOccurs Не обязательный. Определяет, сколько раз максимально может появляться элемент в родительском элементе. Значением может быть любое целое число >= 0, если же нужно снять лимит на использование, то следует указать ключевое слово "unbounded". Значение по умолчанию 1
minOccurs Не обязательный. Определяет, сколько раз минимально может появляться элемент в родительском элементе. Значением может быть любое целое число >= 0. Значение по умолчанию 1
namespace

Не обязательный. Определяет пространство имен, содержащее элементы, которые можно использовать. Может принимать следующие значения:

  • ##any — допустимы элементы из любого пространства имен (значение по умолчанию)
  • ##other — могут присутствовать элементы из любого пространства имен, не относящегося к пространству имен родительского элемента
  • ##local — элементы не должны принадлежать к какому-либо пространству имен
  • ##targetNamespace — могут присутствовать элементы из пространства имен родительского элемента
  • Список из {URI ссылки на пространства имен, ##targetNamespace, ##local} — могут присутствовать элементы из пространств имен, приведенных в данном списке. Пространства имен в списке разделяются пробелами
processContents

Не обязательный. Определяет, как XML процессор должен обрабатывать валидацию по отношению к элементам, определенным данным элементом any. Может принимать следующие значения:

  • strict — XML процессор должен получать схему для требуемых пространств имен и проводить валидацию этих элементов (значение по умолчанию)
  • lax — то же, что и strict, но, если получить схему не получиться, то ошибки не возникнет
  • skip — XML процессор не будет пытаться проводить валидацию элементов из заданного пространства имен
любые атрибуты Не обязательный. Любые другие атрибуты вне пространства имен схемы

Примеры использования элемента

Следующий пример демонстрирует декларацию элемента "person". Благодаря использованию элемента <any>, можно расширять (после <lastname>) содержимое элемента "person" любыми элементам:


<xs:element name="person">
   <xs:complexType>
     <xs:sequence>
       <xs:element name="firstname" type="xs:string"/>
       <xs:element name="lastname" type="xs:string"/>
       <xs:any minOccurs="0"/>
     </xs:sequence>
   </xs:complexType>
</xs:element>