XSD элемент anyAttribute

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

  • Родительские элементы: complexType, restriction (simpleContent и complexContent), extension (simpleContent и complexContent), attributeGroup

Синтаксис элемента


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

 (annotation?)

</anyAttribute>

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

Атрибуты элемента

АтрибутОписание
idНе обязательный. Определяет уникальный идентификатор для элемента
namespace

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

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

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

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

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

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


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