Язык XML

       

Узлы атрибутов


С каждым узлом элемента связан набор узлов атрибутов. При этом, хотя сам элемент является каждого из этих узлов атрибутов, узел атрибута непосредственным потомком своего родительского элемента не является. Замечание: В этом заключается отличие от модели DOM, где элемент, владеющий атрибутом, родителем этого атрибута не считается (см. ).

Элементы не могут совместно использовать узлы атрибутов: Если один узел элемента отличается от другого, то ни один из узлов атрибутов, относящихся к первому узлу элемента, не может совпасть ни с одним узлом атрибута, относящимся ко второму узлу элемента. Замечание: Оператор = проверяет, имеют ли два узла одно и то же значение, однако не проверяет, являются ли они одним и тем же узлом. Таким образом, атрибуты двух различных элементов можно сравнивать с помощью оператора =, даже несмотря на то, что они представлены различными узлами.

Атрибут, подставляемый по умолчанию, обрабатывается точно так же, как атрибут, указанный явно. Если для данного типа элемента в DTD атрибут был декларирован со значением по умолчанию #IMPLIED, однако в элементе этот атрибут представлен не был, считается, что в наборе атрибутов указанного элемента нет узла для этого атрибута.

Некоторые атрибуты, такие как xml:lang и xml:space, имеют семантику, которая распространяется на все элементы, являющиеся потомками элемента с этим атрибутом (если затем семантика не была переопределена таким же атрибутом в другом элементе, являющемся его потомком). Однако это не накладывает ограничений на местоположение узлов атрибутов в дереве документа: любой элемент имеет узлы только тех атрибутов, которые либо были явно указаны в начальном тэге или тэге пустого элемента, относящихся в этому элементу, либо были явно декларированы в DTD со значением по умолчанию.

Узел атрибута имеет и . получается при обработке , указанного в соответствующем тэге XML документа согласно Рекомендации XML Namespaces . Если атрибута не имеет префикса, URI пространства имен для имени атрибута будет нулевым. Замечание: Согласно нотации в Приложении A.3 документа , локальная часть расширенного имени соответствует атрибуту name элемента ExpAName, URI пространства имен расширенного имени соответствует атрибуту ns элемента ExpAName и будет нулевым, если атрибут ns в элементе ExpAName опущен.

Узел атрибута имеет . нормализовано в соответствии с Рекомендацией XML . Не предусмотрено специальной обработки для атрибута, чье нормализованное значение становится строкой нулевой длины - результатом будет узел атрибута, чьим становится строка нулевой длины. Замечание: во внешнем DTD или внешней сущности параметра могут декларироваться атрибуты по умолчанию. Согласно рекомендации XML, если процессор XML не является проверяющим, он не обязан читать внешние DTD и внешние параметры. Соответственно, с некоторыми непроверяющими XML процессорами могут не работать стили и другой функционал, предполагающий, что дерево XPath содержит значения атрибутов по умолчанию, декларированные во внешнем DTD или сущности параметра.

Для атрибутов, декларирующих пространства имен, соответствующих узлов атрибутов не предусмотрено (см. ).



Содержание раздела