Элемент <xsd:attribute>
Объявляет атрибут.
<attribute
default = string
fixed = string
form = (qualified | unqualified)
id = ID
name = NCName
ref = QName
type = QName
use = (optional | prohibited | required): optional
{any attributes with non-schema Namespace...}>
Content: (annotation?, (simpleType?))
</attribute>
Атрибуты
default
Атрибут со значением по умолчанию. Если атрибут не указан в экземпляре внутри XML-документа, атрибуту присваивается заданное значение. Если атрибут не присутствует в экземпляре документа, то он должен отобразиться в модуле проверки после обработки схемы. Обработчики схемы должны действовать таким образом, будто атрибуту задано значение по умолчанию и он фактически не находится в документе экземпляра. Атрибуты Default и fixed не могут присутствовать одновременно.Необязательно.
fixed
Атрибут с фиксированным значением. Если атрибут присутствует в экземпляре документа, его значение должно быть равным заданному фиксированному значению. Если атрибут не присутствует, то атрибут получает указанное значение. Атрибуты Default и fixed не могут присутствовать одновременно.Необязательно.
form
Форма для атрибута. Значением по умолчанию является значение атрибута attributeFormDefault элемента schema, содержащего атрибут. Значение должно быть одной из следующих строк: «qualified» или «unqualified».Если значение равно «unqualified», то этот атрибут не требует уточнения с префиксом пространства имен и сопоставляется с не содержащим двоеточий именем (NCName) атрибута (локальное имя).
Если значение равно «qualified», то этот атрибут должен быть уточнен путем совмещения его имени NCName и атрибута targetNamespace.
Необязательно.
id
Идентификатор данного элемента. Значение id должно иметь тип ID и быть уникальным в пределах документа, содержащего этот элемент.Необязательно.
имя
Имя атрибута. Имя не должно содержать двоеточий (NCName), как определено в спецификации пространств имен XML. Обязательный атрибут, если содержащим является элемент schema. Атрибуты Name и ref не могут присутствовать одновременно.Если XML-документ проверяется по схеме, то каждый атрибут в документе проверяется по элементу attribute в схеме.
Необязательно.
ref
Имя атрибута, объявленного в этой схеме (или другой схеме, указанной конкретным пространством имен). Значение ref должно быть полным именем (QName). Этот тип может включать префикс пространства имен. Атрибуты Name и ref не могут присутствовать одновременно. Если присутствует атрибут ref, то элементы simpleType, form и type не могут присутствовать одновременно.Чтобы объявить атрибут с помощью существующего определения атрибута внутри сложного типа, используйте атрибут ref для указания существующего определения атрибута.
<xs:attribute name="mybaseattribute"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:maxInclusive value="1000"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:complexType name="myComplexType"> <xs:attribute ref="mybaseattribute"/> </xs:complexType>
Необязательно.
тип
Имя встроенного типа данных или простого типа данных, определенного в этой схеме (или другой схеме, указанной конкретным пространством имен). Тип должен быть именем QName. Этот тип может включать префикс пространства имен. Атрибут type может присутствовать, только если в содержимом не содержится элемент simpleType.Необязательно.
use
Указывает, как используется атрибут.Если этот атрибут указан, то он должен принять одно из следующих значений.
необязательные
Атрибут является необязательным и может принимать любое значение. Это значение по умолчанию. Следующие примеры эквивалентны.
<xs:attribute name="myattr" type="xs:string"/> <xs:attribute name="myattr" type="xs:string" use="optional"/>
prohibited
Атрибут нельзя использовать. Этот атрибут используется в ограничении другого сложного типа, чтобы запретить использование существующих атрибутов.
<xs:complexType name="A"> <xs:attribute name="x" type="xs:NCName"/> <xs:attribute name="y" type="xs:QName"/> </xs:complexType>
<xs:complexType name="B"> <xs:complexContent> <xs:restriction base="xs:A"> <xs:attribute name="x" use="required" /> <xs:attribute name="y" use="prohibited"/> </xs:restriction> </xs:complexContent> </xs:complexType>
required
Атрибут должен отобразиться один раз.
Атрибут необходим и может принимать любое значение, допускаемое определением типа этого атрибута.
<xs:attribute name="myattr" type="xs:string" use="required"/>
Атрибут используется в ограничении или расширении другого сложного типа, он требует существования конкретного атрибута или атрибутов.
<xs:complexType name="A"> <xs:attribute name="x" type="xs:NCName"/> <xs:attribute name="y" type="xs:QName"/> </xs:complexType>
<xs:complexType name="B"> <xs:complexContent> <xs:restriction base="xs:A"> <xs:attribute name="x" use="required" /> <xs:attribute name="y" use="prohibited"/> </xs:restriction> </xs:complexContent> </xs:complexType>
Если атрибут объявлен как глобальный (его родителем является элемент schema), то он необходим во всех элементах схемы.
Необязательно.
Сведения об элементе
Количество вхождений |
Определяется один раз в элементе schema. На него несколько раз ссылаются в сложных типах или группах атрибутов. |
Родительские элементы |
attributeGroup, schema, complexType, restriction (simpleContent), extension (simpleContent), restriction (complexContent), extension (complexContent) |
Описание |
Заметки
Объявление атрибута связывает имя с типом определения, которое может быть встроенным типом данных или простым типом.
Объявления атрибутов могут присутствовать в качестве элементов, дочерних по отношению к элементам schema, complexType и attributeGroup (имеющих глобальную область), или внутри определений сложных типов. Для сложных типов объявления атрибутов могут присутствовать в качестве локальных объявлений или ссылок на атрибуты с глобальной областью.
Кроме того, атрибуты могут отображаться с помощью ссылки внутри элементов attributeGroup и complexType.
Примеры
В следующем примере атрибут объявляется с помощью ссылки на встроенный тип со значением по умолчанию test и используется в элементе complexType.
<xs:attribute name="mybaseattribute" type="xs:string" default="test" />
<xs:complexType name="myComplexType">
<xs:attribute ref="mybaseattribute"/>
</xs:complexType>
В следующем примере атрибут required объявляется напрямую внутри элемента complexType.
<xs:complexType name="myComplexType">
<xs:attribute name="mybaseattribute" type="xs:string" use="required"/>
</xs:complexType>
В следующем примере атрибут объявляется путем создания производной от встроенного целочисленного типа (в соответствии с ограничением). Значения атрибута ограничены диапазоном между "60" и "95" включительно.
<xs:attribute name="myHolidayLocationTemperature">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="60"/>
<xs:maxInclusive value="95"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
В следующем примере атрибут объявляется в качестве списка, содержащего десятичные значения. (Таким образом, допускается атрибут shoeSizes="10.5 9 8 11", содержащий список значений 10.5, 9, 8 и 11.)
<xs:simpleType name="Sizes">
<xs:restriction base="xs:decimal">
<xs:enumeration value="10.5"/>
<xs:enumeration value="9"/>
<xs:enumeration value="8"/>
<xs:enumeration value="11"/>
</xs:restriction>
</xs:simpleType>
<xs:attribute name="shoeSizes">
<xs:simpleType>
<xs:list itemType="Sizes"/>
</xs:simpleType>
</xs:attribute>
Другие ресурсы
Дополнительные сведения см. в документе «Рекомендация W3C по схемам XML, часть 1: структуры» по адресу www.w3.org/TR/2001/REC-xmlschema-1-20010502/\#element-all.