элемент anyAttribute в XML Schema

определение и использование

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

информация о элементе

элемент объяснение
количество出现的次数 без ограничений
родительский элемент complexType, restriction (simpleContent), extension (simpleContent), restriction (complexContent), extension (complexContent), attributeGroup
содержимое аннотация

Грамматика

<anyAttribute
id=ID
namespace=namespace
processContents=lax|skip|strict
любые атрибуты
>
(аннотация?)
</anyAttribute>

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

Свойства

id

Опционально. Определяет уникальный ID этого элемента.

namespace

Опционально. Определяет пространство имен, содержащее элементы, которые можно использовать. Если пространство имен не указано, то по умолчанию используется ##any. Если указано пространство имен, то оно должно быть одним из следующих значений.

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

processContents

Опционально. Индикатор, указывающий, как приложение или XML-обработчик должно проверять валидность XML-документа на основе элементов, указанных этим any-элементом. Если свойство processContents не указано, то по умолчанию используется strict. Если указано processContents, то оно должно быть одним из следующих значений.

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

любые атрибуты

Опционально. Определяет любые другие свойства с non-schema именем пространства.

Пример

Примеры показывают, как声明针对 "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>