Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Пространства имен XML связывают имена элементов и атрибутов в XML-документе с пользовательскими и предопределенными URI. Чтобы создать эти связи, необходимо определить префиксы для URI пространства имен и использовать эти префиксы для определения имен элементов и атрибутов в XML-данных. Пространства имен препятствуют конфликтам имен элементов и атрибутов, а также позволяют обрабатывать и проверять элементы и атрибуты одного и того же имени по-разному.
Объявление пространств имен
Чтобы объявить пространство имен в элементе, используйте xmlns:
атрибут:
xmlns:<name>=<"uri">
где <name>
префикс пространства имен и <"uri">
является универсальным кодом ресурса (URI), определяющим пространство имен. После объявления префикса его можно использовать для квалификации элементов и атрибутов в XML-документе и связать их с URI пространства имен. Так как префикс пространства имен используется во всем документе, он должен быть коротким.
В этом примере определяются два BOOK
элемента. Первый элемент квалифицируется префиксом mybook
, а второй — префиксом bb
. Каждый префикс связан с URI другого пространства имен:
<mybook:BOOK xmlns:mybook="http://www.contoso.com/books.dtd">
<bb:BOOK xmlns:bb="urn:blueyonderairlines" />
</mybook:BOOK>
Чтобы указать, что элемент является частью определенного пространства имен, добавьте в него префикс пространства имен. Например, если Author
элемент принадлежит пространству mybook
имен, он объявляется как <mybook:Author>
.
Область действия объявления
Пространство имен действует с момента своего объявления до конца элемента, в котором оно объявлено. В этом примере пространство имен, определенное в BOOK
элементе, не применяется к элементам за пределами BOOK
элемента, например к элементу Publisher
:
<Author>Joe Smith</Author>
<BOOK xmlns:book="http://www.contoso.com">
<title>My Wonderful Day</title>
<price>$3.95</price>
</BOOK>
<Publisher>
<Name>MSPress</Name>
</Publisher>
Пространство имен должно быть объявлено до его использования, но оно не должно отображаться в верхней части XML-документа.
При использовании нескольких пространств имен в XML-документе можно определить одно пространство имен в качестве пространства имен по умолчанию для создания более чистого документа. Пространство имен по умолчанию объявляется в корневом элементе и применяется ко всем неквалифицированным элементам документа. Пространства имен по умолчанию применяются только к элементам, а не к атрибутам.
Чтобы использовать пространство имен по умолчанию, опустите префикс и двоеточие из объявления элемента:
<BOOK xmlns="http://www.contoso.com/books.dtd">
...
</BOOK>
Управление пространствами имен
Класс XmlNamespaceManager хранит коллекцию URI пространства имен и их префиксов, а также позволяет искать, добавлять и удалять пространства имен из этой коллекции. В определенных контекстах этот класс необходим для повышения производительности обработки XML. Например, класс XsltContext используется для поддержки XPath с помощью XmlNamespaceManager.
Диспетчер пространств имен не выполняет проверку в пространствах имен, но предполагает, что префиксы и пространства имен уже проверены и соответствуют спецификации пространств имен W3C .
Замечание
LINQ TO XML в C# и Visual Basic не используют XmlNamespaceManager, чтобы управлять пространствами имен. См. работу с пространствами имен XML (C#) и работу с пространствами имен XML (Visual Basic) в документации по LINQ для получения сведений об управлении пространствами имен при использовании LINQ to XML.
Ниже приведены некоторые задачи управления и поиска, которые можно выполнить с XmlNamespaceManager помощью класса. Дополнительные сведения и примеры см. по ссылкам на эталонную страницу для каждого метода или свойства.
Кому | Использование |
---|---|
Добавление пространства имен | AddNamespaceМетод |
Удалить пространство имен | RemoveNamespaceМетод |
Найдите URI для пространства имен по умолчанию | Свойство DefaultNamespace |
Найти URI для префикса пространства имен | LookupNamespaceМетод |
Найдите префикс для URI пространства имен | LookupPrefixМетод |
Получите список пространств имен в текущем узле | GetNamespacesInScopeМетод |
Определение области пространства имен | методы PushScope и PopScope |
Проверьте, определен ли префикс в текущей области | HasNamespaceМетод |
Получение таблицы имен, используемой для поиска префиксов и URI | Свойство NameTable |