Suporte a namespace no DOM
O DOM (Document Object Model) XML reconhece completamente namespace. Somente documentos XML com reconhecimento de namespace são suportados. O W3C (World Wide Web Consortium) especifica que os aplicativos DOM que implementam o Nível 1 podem não reconhecer namespace e os recursos do DOM Nível 2 reconhecem namespace. No entanto, todos os recursos no DOM XML reconhecem namespace, independentemente se o método é da Recomendação DOM de Nível 1 ou Nível 2.
Por exemplo, em uma configuração sem reconhecimento de namespace, chamar setAttribute("A:b", "123")
, conforme especificado na Recomendação de Nível 1 do DOM, não resulta em um atributo com um prefixo de A
e um nome local de b
. Isso resultaria em um atributo com o valor A:b
.
Em um ambiente com reconhecimento de namespace, a chamada para o DOM Nível 2 setAttribute("A:b", "123")
resulta em um atributo com um prefixo de A
e um nome local de b
. É assim que o Microsoft .NET Framework DOM funciona.
Portanto, para todos os métodos que usam um parâmetro name, esses métodos também usam um prefixo para qualificar o nome. O parâmetro name, como o A:b
no método setAttribute DOM Nível 1, é analisado da seguinte forma:
Se não houver dois pontos (:) caracteres, o nome local será definido como o
name
parâmetro e o prefixo e NamespaceURI serão cadeias de caracteres vazias.Se dois pontos forem encontrados, o nome será dividido em duas partes com base na posição do primeiro caractere de dois pontos. O prefixo é definido como a cadeia de caracteres encontrada antes dos dois pontos, e o nome local é definido como a cadeia de caracteres encontrada após os dois pontos. Para métodos que não usam um valor NamespaceURI, o NamespaceURI não é resolvido e permanece definido como cadeia de caracteres vazia. Caso contrário, o NamespaceURI é definido como a cadeia de caracteres passada para o método. Se o prefixo for indefinido, o método Save e as propriedades InnerXml e OuterXml falharão.