Пример
В следующем фрагменте
>
> xmlns:xslt="http://www.w3.org/1999/XSL/Transform"
> version="1.0">
>
> ...
>
элементы >stylesheet
и >template
имеют различные префиксы, но, несмотря на это, принадлежат одной и той же схеме.
В одном элементе можно определять несколько префиксов пространств имен. Как правило, при использовании множества префиксов, все они определяются в корневом элементе, а затем используются по всему документу.
Пример
>
> xmlns:aaa="http://www.ааа.com"
> xmlns:bbb="http://www.bbb.com"
> xmlns:ccc="http://www.ccc.com">
>
>
>
> ...
>
Весьма удобной является возможность использования пространства имен по умолчанию. Определение пространства имен в виде
><элемент xmlns="URI">
> ...
>элемент>
позволяет опускать префиксы в именах элементов.
Пример
Документ в предыдущем примере может быть переписан следующим образом:
>
>
> <ссс:element xmlns:ccc="http://www.ccc.com"/>
>
> ...
>
Обратим внимание, что пространство имен по умолчанию может быть изменено повторным использованием атрибута >xmlns
в дочерних элементах.
Пример
Документ
>
>
>
>
>
>
>
эквивалентен документу
>
> xmlns:aaa="http://www.aaa.com"
> xmlns:bbb="http://www.bbb.com"
> xmlns:ccc="http://www.ccc.com">
>
>
>
>
>
>
Таким образом, пространства имен — это механизм выделения в тексте XML-документа элементов и атрибутов, принадлежащих различным логическим схемам документов. Более того, термин "пространство имен" часто используется как эквивалент логической схеме документа, например, когда говорят "элемент >template
принадлежит пространству имен XSLT", подразумевается, что элемент >template
определен в языке XSLT и описывается в соответствующей схеме.
Синтаксические правила, которые описывают определения пространств имен, задаются не в спецификации XML, а в другом документе — в технической рекомендации "Namespaces in XML" (пространства имен в XML), которая доступна по адресу http://www.w3.org/TR/REC-xml-names. Для того чтобы отличать эти продукции от продукций языка XML, мы будет давать им номера вида >[NS1]
, >[NS2]
и так далее.
Продукция >NSAttName