Espaços de nomes XML

O espaço de nome XML oferece um método para evitar conflitos de nomes de elementos.

Conflito de nomes

No XML, os nomes dos elementos são definidos pelo desenvolvedor. Quando dois documentos diferentes usam o mesmo nome de elemento, ocorre um conflito de nomes.

Este documento XML carrega informações de uma tabela:

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

Este documento XML contém informações sobre a mesa (um móvel):

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

Se esses dois documentos XML forem usados juntos, ocorrerá um conflito de nomes, pois ambos contêm elementos <table> com conteúdo e definições diferentes.

O usuário ou o aplicativo XML não saberá como lidar com esse tipo de conflito.

Uso de prefixos para resolver conflitos de nomes

O uso de prefixos pode evitar facilmente conflitos de nomes no XML.

Este XML contém informações sobre a tabela HTML e um móvel:

<h:table>
  <h:tr>
    <h:td> maçãs</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>

Agora, não há conflito de nomes, pois dois documentos usaram nomes diferentes para nomear seus elementos <table> (<h:table> e <f:table>)。

Ao usar prefixos, criamos dois tipos diferentes de elementos <table>.

Espaço de nome XML - atributo xmlns

no XML.No XML, ao usar o prefixo, deve ser definido o prefixo do(Namespaces)。

Na marcação de início do elemento, xmlns Os namespaces podem ser definidos pelo

Atributo para definir.URIA declaração de namespace usa essa sintaxe: xmlns:prefix="

"。
<root>
  <h:tr>
    <h:td> maçãs</h:td>
    <h:td>Bananas</h:td>
  </h:tr>
</h:table>
<h:table xmlns:h="http://www.w3.org/TR/html4/">
  <f:name>African Coffee Table</f:name>
  <f:width>80</f:width>
  <f:length>120</f:length>
</f:table>
</root>

<f:table xmlns:f="https://www.codew3c.com/furniture">

No exemplo acima: xmlns O atributo é O primeiro elemento <table> O prefixo fornece um namespace delimitado。

O segundo elemento <table> xmlns O atributo é f: O prefixo fornece um namespace delimitado。

Se um namespace for definido para um elemento, todos os subelementos com o mesmo prefixo estão associados ao mesmo namespace。

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

<root xmlns:h="http://www.w3.org/TR/html4/"
xmlns:f="https://www.codew3c.com/furniture">
<h:table>
  <h:tr>
    <h:td> maçãs</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>

Atenção:O analisador não usará o URI do namespace para buscar informações。

O objetivo de usar URI é apenas fornecer um nome único para o namespace。

No entanto, muitas empresas frequentemente usam namespaces como ponteiros para apontar para páginas da web existentes que contêm informações sobre o namespace。

Identificador de Recursos Uniforme (URI)

Identificador de Recursos Uniforme (Identificador de Recursos Uniforme,URI) é uma string que identifica recursos da Internet。

O URI mais comum éLocalizador de Recursos Uniforme (Localizador de Recursos Uniforme,URL),que identifica endereços de domínio da Internet。

Outro tipo de URI menos comum éNome de Recursos Uniforme (Nome de Recursos Uniforme,URN)。

Namespace padrão (Default Namespaces)

Definir um espaço de nomes padrão para um elemento nos poupa de usar o prefixo em todos os sub-elementos.

Use a seguinte sintaxe:

xmlns="namespaceURI"

Este documento XML contém informações sobre uma 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.codew3c.com/furniture">
  <name>African Coffee Table</name>
  <width>80</width>
  <length>120</length>
</table>

Aplicação real do espaço de nomes

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

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

Se você observar atentamente o documento XSL abaixo, verá que a maioria das tags são tags HTML.

As tags não HTML têm prefixo xsl, indicado pelo espaço de nomes: "http://www.w3.org/1999/XSL/Transform":

O espaço de nomes "http://www.w3.org/1999/XSL/Transform" identifica os elementos XSLT do 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 aprender mais sobre o XSLT, leia nosso Tutorial do XSLT.