GERÊNCIA DE
DADOS SEMIESTRUTURADOS
- XML NAMESPACES
Prof. Angelo Augusto Frozza, M.Sc.
http://about.me/TilFrozza
XML NAMESPACES

Introdução

XML Namespaces fornecem um método para evitar conflitos
de nomes de elementos

Em XML, os nomes dos elementos são definidos pelo
desenvolvedor

Isso geralmente resulta em um conflito ao tentar misturar
documentos XML a partir de diferentes aplicações XML
XML NAMESPACES

Introdução
XML referente tabela HTML
<table>
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>
XML referente uma mesa (table)
<table>
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>
XML NAMESPACES

Introdução
XML referente tabela HTML
<table>
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>
XML referente uma mesa (table)
<table>
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>
XML NAMESPACES

Introdução

Se estes fragmentos XML fossem adicionados em conjunto,
haveria um conflito de nomes

Ambos contêm um elemento <table>, mas os elementos têm
conteúdo e significado diferente

Um parser XML não vai saber como lidar com essas
diferenças
XML NAMESPACES

Namespace = prefixo

Conflitos de nomes em XML pode ser facilmente evitado
com um prefixo do nome
XML com informações sobre uma tabela HTML e uma mesa
<h:table>
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
<f:table>
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
XML NAMESPACES

O atributo xmlns

Ao utilizar prefixos em XML, um namespace para o prefixo
deve ser definido

O namespace é definido pelo atributo xmlns na tag inicial
de um elemento ou no elemento raiz

A declaração de namespace tem a seguinte sintaxe
xmlns:prefix = "URI "

URI - Uniform Resource Identifier
XML NAMESPACES

O atributo xmlns
XML com informações sobre uma tabela HTML e uma mesa
<root>
<h:table xmlns:h="http://www.w3.org/TR/html4/">
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
<f:table xmlns:f="http://www.w3schools.com/furniture">
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
</root>
XML NAMESPACES

O atributo xmlns
XML com informações sobre uma tabela HTML e uma mesa
<root
xmlns:h="http://www.w3.org/TR/html4/"
xmlns:f="http://www.w3schools.com/furniture">
<h:table>
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
<f:table>
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
</root>
XML NAMESPACES

O atributo xmlns

No exemplo, o atributo xmlns na tag <table> atribui um
namespace qualificado aos prefixos h: e f:.

Quando um namespace é definido por um elemento, todos os
elementos filho com o mesmo prefixo são associados com o
mesmo namespace
XML NAMESPACES

O atributo xmlns

A URI do namespace não é usada pelo parser para
procurar informações

O objetivo é dar ao namespace um nome único

No entanto, muitas empresas usam o namespace como um
ponteiro para uma página web contendo informações sobre o
namespace

Por exemplo: http://www.w3.org/TR/html4/
XML NAMESPACES

URI - Uniform Resource Identifier

A Uniform Resource Identifier (URI) é uma sequência de
caracteres que identifica um recurso da Internet

O URI mais comum é o Uniform Resource Locator
(URL) que identifica um endereço de domínio da Internet
Outro tipo, não tão comum de URI, é a Universal Resource
Name (URN)
 http://pt.wikipedia.org/wiki/URN

XML NAMESPACES

Namespace padrão

Definir um namespace padrão para um elemento elimina a
necessidade de se usar prefixos em todos os elementos filho
xmlns="namespaceURI"
XML NAMESPACES

Namespace padrão
XML com informações sobre uma tabela HTML e uma mesa
<root>
<table xmlns:h="http://www.w3.org/TR/html4/">
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>
<table xmlns:f="http://www.w3schools.com/furniture">
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>
</root>
XML NAMESPACES

Exemplo real de uso de namespace
XML NAMESPACES
version="1.0"
<?xml
Exemplo
realencoding="ISO-8859-1"?>
de uso de namespace
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr>
<th align="left">Title</th>
<th align="left">Artist</th>
</tr>
<xsl:for-each select="catalog/cd">
<tr>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="artist"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
REFERÊNCIA

BIBLIOGRÁFICA
XML Namespaces
http://www.w3schools.com/xml/xml_namespaces.asp
Download

GDSE-Aula003-XML Namespaces