Tutorial de XML

XML INÍCIO Introdução ao XML XML Como usar Árvore XML Sintaxe XML Elementos XML Atributos XML Namespaces XML Exibição XML XML HttpRequest Analisador de XML XML DOM XML XPath XML XSLT XML XQuery XML XLink Validador de XML XML DTD Esquema XML Servidor XML Exemplos XML Teste de XML Certificado XML

XML AJAX

Introdução AJAX AJAX XML Http Solicitação AJAX Resposta AJAX Arquivo XML AJAX PHP AJAX ASP AJAX Banco de dados AJAX Aplicativos AJAX Exemplos AJAX

XML DOM

Introdução ao DOM Nós DOM Acesso ao DOM Informações do nó DOM Lista de nós DOM Travessia do DOM Navegação DOM Valores de obtenção do DOM Nós de alteração do DOM Remoção de nós do DOM Substituir nós DOM DOM Criar nós DOM Adicionar nós Nós clones DOM Exemplos de DOM

Tutorial XPath

Introdução ao XPath Nós XPath Sintaxe XPath Eixos XPath Operadores XPath Exemplos de XPath

Tutorial XSLT

Introdução ao XSLT Idiomas XSL Transformação XSLT XSLT <modelo> XSLT <valor-de> XSLT <para-cada> XSLT <classificar> XSLT <if> XSLT <escolha> Aplicar XSLT XSLT no cliente XSLT no servidor XSLT Editar XML Exemplos de XSLT

Tutorial XQuery

Introdução ao XQuery Exemplo de XQuery XQuery FLWOR XQuery HTML Termos de XQuery Sintaxe XQuery Adicionar XQuery Seleção de XQuery Funções XQuery

XML DTD

Introdução DTD Blocos de construção de DTD Elementos DTD Atributos DTD Elementos DTD vs Attr Entidades DTD Exemplos de DTD

Esquema XSD

Introdução ao XSD XSD Como fazer XSD <esquema> Elementos XSD Atributos XSD Restrições XSD

Complexo XSD

Elementos XSD XSD vazio Apenas elementos XSD Somente texto XSD XSD Misto Indicadores XSD XSD <qualquer> XSD <qualquer atributo> Substituição XSD Exemplo de XSD

Dados XSD

Cadeia XSD Data XSD XSD Numérico XSD Misc Referência XSD

Serviços da Web

Serviços XML XML WSDL XML SOAP XML RDF XML RSS

Referências

Tipos de nós DOM Nó DOM Lista de nós DOM DOM NamedNodeMap Documento DOM Elemento DOM Atributo DOM Texto DOM DOM CDATA Comentário DOM DOM XMLHttpRequest Analisador de DOM Elementos XSLT Funções XSLT/XPath

Namespaces XML


Os namespaces XML fornecem um método para evitar conflitos de nome de elemento.


Conflitos de nomes

Em XML, os nomes dos elementos são definidos pelo desenvolvedor. Isso geralmente resulta em um conflito ao tentar misturar documentos XML de diferentes aplicativos XML.

Este XML carrega informações da tabela HTML:

<table>
  <tr>
    <td>Apples</td>
    <td>Bananas</td>
  </tr>
</table>

Este XML carrega informações sobre uma mesa (um móvel):

<table>
  <name>African Coffee Table</name>
  <width>80</width>
  <length>120</length>
</table>

Se esses fragmentos XML fossem adicionados, haveria um conflito de nomes. Ambos contêm um elemento <table>, mas os elementos têm conteúdo e significado diferentes.

Um usuário ou um aplicativo XML não saberá como lidar com essas diferenças.


Resolvendo o conflito de nomes usando um prefixo

Conflitos de nome em XML podem ser facilmente evitados usando um prefixo de nome.

Este XML carrega informações sobre uma tabela HTML e um móvel:

<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>

No exemplo acima, não haverá conflito porque os dois elementos <table> têm nomes diferentes.



Namespaces XML - O atributo xmlns

Ao usar prefixos em XML, um namespace para o prefixo deve ser definido.

O namespace pode ser definido por um atributo xmlns na tag de início de um elemento.

A declaração de namespace tem a seguinte sintaxe. xmlns: prefix =" URI ".

<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="https://www.w3schools.com/furniture">
  <f:name>African Coffee Table</f:name>
  <f:width>80</f:width>
  <f:length>120</f:length>
</f:table>

</root>

No exemplo acima:

O atributo xmlns no primeiro elemento <table> fornece ao prefixo h: um namespace qualificado.

O atributo xmlns no segundo elemento <table> fornece ao prefixo f: um namespace qualificado.

Quando um namespace é definido para um elemento, todos os elementos filho com o mesmo prefixo são associados ao mesmo namespace.

Os namespaces também podem ser declarados no elemento raiz XML:

<root xmlns:h="http://www.w3.org/TR/html4/"
xmlns:f="https://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>

Nota: O URI do namespace não é usado pelo analisador para pesquisar informações.

A finalidade de usar um URI é dar ao namespace um nome exclusivo.

No entanto, as empresas costumam usar o namespace como um ponteiro para uma página da Web que contém informações de namespace.


Identificador Uniforme de Recursos (URI)

Um Identificador Uniforme de Recursos (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 de URI não tão comum é o Uniform Resource Name (URN).


Namespaces padrão

Definir um namespace padrão para um elemento evita o uso de prefixos em todos os elementos filhos. Tem a seguinte sintaxe:

xmlns="namespaceURI"

Este XML carrega informações da tabela HTML:

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

Este XML contém informações sobre um móvel:

<table xmlns="https://www.w3schools.com/furniture">
  <name>African Coffee Table</name>
  <width>80</width>
  <length>120</length>
</table>

Namespaces em uso real

XSLT é uma linguagem que pode ser usada para transformar documentos XML em outros formatos.

O documento XML abaixo, é um documento usado para transformar XML em HTML.

O namespace "http://www.w3.org/1999/XSL/Transform" identifica elementos XSLT dentro de um documento HTML:

<?xml version="1.0" encoding="UTF-8"?>

<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 style="text-align:left">Title</th>
      <th style="text-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>

Se você quiser saber mais sobre XSLT, leia nosso Tutorial XSLT .