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