Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Namespaces XML associam nomes de elemento e atributo em um documento XML a URIs personalizadas e predefinidas. Para criar essas associações, defina prefixos para URIs de namespace e use esses prefixos para qualificar nomes de elementos e atributos em dados XML. Os namespaces impedem colisões de nome de elemento e atributo e permitem que elementos e atributos do mesmo nome sejam tratados e validados de forma diferente.
Declaração de namespaces
Para declarar um namespace em um elemento, use o xmlns: atributo:
xmlns:<name>=<"uri">
onde <name> está o prefixo do namespace e <"uri"> é o URI que identifica o namespace. Depois de declarar o prefixo, você pode usá-lo para qualificar elementos e atributos em um documento XML e associá-los ao URI do namespace. Como o prefixo do namespace é usado em um documento, ele deve ter um comprimento curto.
Este exemplo define dois BOOK elementos. O primeiro elemento é qualificado pelo prefixo mybooke o segundo elemento é qualificado pelo prefixo. bb Cada prefixo está associado a um URI de namespace diferente:
<mybook:BOOK xmlns:mybook="http://www.contoso.com/books.dtd">
<bb:BOOK xmlns:bb="urn:blueyonderairlines" />
</mybook:BOOK>
Para significar que um elemento faz parte de um namespace específico, adicione o prefixo de namespace a ele. Por exemplo, se um Author elemento pertencer ao mybook namespace, ele será declarado como <mybook:Author>.
Escopo da declaração
Um namespace é eficaz do ponto de declaração até o final do elemento em que foi declarado. Neste exemplo, o namespace definido no BOOK elemento não se aplica a elementos fora do BOOK elemento, como o Publisher elemento:
<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>
Um namespace deve ser declarado antes de ser usado, mas não precisa aparecer na parte superior do documento XML.
Ao usar vários namespaces em um documento XML, você pode definir um namespace como o namespace padrão para criar um documento de aparência mais limpa. O namespace padrão é declarado no elemento raiz e se aplica a todos os elementos não qualificados no documento. Namespaces padrão se aplicam somente a elementos, não a atributos.
Para usar o namespace padrão, omita o prefixo e os dois-pontos da declaração no elemento:
<BOOK xmlns="http://www.contoso.com/books.dtd">
...
</BOOK>
Gerenciando namespaces
A XmlNamespaceManager classe armazena uma coleção de URIs de namespace e seus prefixos e permite pesquisar, adicionar e remover namespaces dessa coleção. Em determinados contextos, essa classe é necessária para um melhor desempenho de processamento XML. Por exemplo, a XsltContext classe usa XmlNamespaceManager para suporte ao XPath.
O gerenciador de namespaces não executa nenhuma validação nos namespaces, mas pressupõe que prefixos e namespaces já foram verificados e estão em conformidade com a especificação de Namespaces do W3C .
Observação
LINQ TO XML em C# e Visual Basic não usa XmlNamespaceManager para gerenciar namespaces. Consulte Como trabalhar com namespaces XML (C#) e trabalhar com namespaces XML (Visual Basic) na documentação do LINQ para obter informações sobre como gerenciar namespaces ao usar LINQ to XML.
Aqui estão algumas das tarefas de gerenciamento e pesquisa que você pode executar com a XmlNamespaceManager classe. Para obter mais informações e exemplos, siga os links para a página de referência para cada método ou propriedade.
| Para | Utilização |
|---|---|
| Adicionar um namespace | método AddNamespace |
| Remover um namespace | método RemoveNamespace |
| Localizar o URI para o namespace padrão | Propriedade DefaultNamespace |
| Localizar o URI para um prefixo de namespace | método LookupNamespace |
| Localizar o prefixo de um URI de namespace | método LookupPrefix |
| Obter uma lista de namespaces do nó atual | método GetNamespacesInScope |
| Escopo de um namespace | Métodos PushScope e PopScope |
| Verificar se um prefixo está definido no escopo atual | método HasNamespace |
| Obter a tabela de nomes usada para pesquisar prefixos e URIs | Propriedade NameTable |