quarta-feira, 2 de novembro de 2016

O que significa o atributo xmlns em códigos XML?

Para uma introdução às características do XML, sugiro que leia a postagem "Quais as diferenças entre XML e HTML ?". Agora vamos ao entendimento do atributo 'xmlns'.
Veja esse código XML:

<table>
  <tr>
    <td>Melancia</td>
    <td>Carambola</td>
  </tr>
</table>


Agora veja esse outro código XML:

<table>
  <name>Mesa de Café Africana</name>
  <width>80</width>
  <length>120</length>
</table>


O primeiro código utiliza a tag <table> para se referir a uma tabela com suas linhas e colunas, enquanto que o segundo código utiliza a tag <table> para se referir às características de uma mesa. Dessa maneira, pode ser que ocorra conflito entre esses códigos por possuírem tags idênticas que se relacionam a conteúdos diversos. Por isso, faz-se necessário o uso de prefixos, como no código abaixo:

Primeiro código com prefixo:

<h:table>
  <h:tr>
    <h:td>Melancia</h:td>
    <h:td>Carambola</h:td>
  </h:tr>
</h:table>


Segundo código com prefixo:

<f:table>
  <f:name>Mesa de Café Africana</f:name>
  <f:width>80</f:width>
  <f:length>120</f:length>
</f:table>


Após o uso dos prefixos 'h' e 'f' os códigos acima ficam livres de sofrer conflitos. Entretanto, faz-se necessário o uso do atributo 'xmlns' para identificar os atribuitos usados. Quando um 'xmlns' é definido para um prefixo, todos os elementos filhos com o mesmo prefixo terão o mesmo identificador (namespace). Usa-se como identificador uma Uniform Resource Identifier (URI) que é um conjunto de caracteres que representa uma fonte na internet. O propósito da URI é dar um nome único ao identificador. Uma URI pode ser uma URL (Uniform Resource Locator) por exemplo. Veja o próximo exemplo:

<root
xmlns:h="http://www.w3.org/TR/html4/"
xmlns:f="http://www.w3schools.com/furniture">

<h:table>
  <h:tr>
    <h:td>Melancia</h:td>
    <h:td>Carambola</h:td>
  </h:tr>
</h:table>

<f:table>
  <f:name>Mesa de Café Africana</f:name>
  <f:width>80</f:width>
  <f:length>120</f:length>
</f:table>
</root>


Para não ter que usar o prefixo em todos os elementos filhos, é possível criar um xmlns padrão. Assim, todas as tags que não estiverem prefixas assumirão automaticamente o identificar padrão. Como no código abaixo:

<table xmlns="http://www.w3.org/TR/html4/">
  <tr>
    <td>Melancia</td>
    <td>Carambola</td>
  </tr>
</table> 

Nenhum comentário:

Postar um comentário