XML

XML lembra muito HTML: é uma linguagem que usa tags para definir conteúdo. O trecho abaixo mostra um exemplo de arquivo XML.

<?xml version="1.0" encoding="iso-8859-1"?>
<meudocumento>
<titulo>meu titulo</titulo>
<conteudo>Conteudo 1</conteudo>
<conteudo>Conteudo 2
<conteudo>Conteudo 2.1</conteudo>
<conteudo>Conteudo 2.2</conteudo>
</conteudo>
<conteudo>Conteudo 3</conteudo>
</meudocumento>

Diferente do HTML, as tags XML podem ser criadas para expressar com precisão o conteúdo de um documento. Já o HTML define tags para dizer como mostrar graficamente esse conteúdo (informação de layout).

Outras diferenças do XML em relação ao HTML são:

<titulo/> é diferente de <TITULO/>

No HTML

<br>

<p><b>texto</p><b> é permitido

No XML

<br />

<p><b>texto</b></p> é obrigatório

 

XML permite que uma marcação específica seja criada para especificar idéias e compartilhá-las na rede.

Pontos fortes da XML

Documentos

Se você já está acostumado com a HTML ou a SGML, os documentos XML parecer-lhe-ão familiar. Um documento XML simples é apresentado a seguir:
Exemplo 1: um documento XML simples
<?xml version="1.0" ecoding="iso-8859-1" ?>

<piada>

<João>Diga <citação>boa noite</citação>, Maria.</João>

<José><citação>Boa noite, Maria.</citação></José>

<aplausos/>

</piada>

Algumas coisas podem sobressair-se para você:

Os documento XML são compostos de marcas e conteúdos. Existem seis tipos de marcações que podem ocorrer em um documento XML: porém 3 são os mais importantes.

Elementos

Elementos são a mais comum forma de marcação. Delimitados pelos sinais de menor e maior, a maioria dos elementos identificam a natureza do conteúdo que envolvem. Alguns elementos podem ser vazios, como visto acima; neste caso eles não têm conteúdo. Se um elemento não é vazio, ele inicia com uma marca de início , <element>, e termina com uma marca de término, </element>.

Atributos

Atributos são pares de valores nomeados que ocorrem dentro dasmarcas de início após o nome do elemento. Por exremplo:
<div classe="prefácio">

é um elemento div cujo atributo class possui o valor prefácio. Em XML, todos os valores de atributos devem estar entre aspas.

Comentários

Comentários iniciam com <!-- e terminam com -->. Os comentários podem conter qualquer dado, exceto a literal "--". Você pode colocar comentários entre marcas em qualquer lugar em seu documento.
Comentários não fazem parte de um conteúdo textual de um documento XML. Um processador XML não é preciso para reconhecê-los na aplicação.

Instruções de Processamento

Instruções de processamento (PIs) são formas de fornecer informações a uma aplicação. Assim como os comentários, elas não são textualmente parte de um documento XML, mas o processador XML é necessário para reconhecê-las na aplicação.
As instruções de processamento têm a forma: <?nome dadospi?>. O nome, chamado de alvo PI, identifica a PI na aplicação. As aplicações processariam somente os alvos que eles reconhecem e ignoram todas as outras PIs. Qualquer dado que segue oalvo PI é opcional; é para a aplicação que reconhece o alvo. Os nomes usados em PIs podem ser declarados como notações a fim de identificá-los formalmente.
Os nomes de PI que iniciam com xml são reservados para a padronização da XML.

Seções CDATA

Em um documento, uma seção CDATA instrui o analisador para ignorar a maioria dos caracteres de marcação.
Considere um código-fonte em um documento XML. Ele pode conter caracteres que o analisador XML iria normalmente reconhecer como marcação (< e &, por exemplo). Para prevenir isto, uma seção CDATA pode ser usada.
<![CDATA[

*p = &q;
b = (i <= 3);

]]>

Entre o início da seção, <![CDATA[, e o fim da seção, ]]>, todos os dados de caracteres são passados diretamente para a aplicação, sem interpretação. Elementos, referências a entidades, comentários e instruções de processamento são todos irreconhecíveis e os caracteres que os compõem são passados literalmente para a aplicação.
A única cadeia de caracteres que não pode ocorrer em uma seção CDATA é "]]>".

XML no Javascript

O código-fonte abaixo mostra como o XML é usado no Javascript.

A 1ª função tem a função de carregar o documento XML para o Javascript.
A 2ª função manipula o documento XML. Se o programador estiver familiarizado com Javascript e Dhtml, poderá fazer infinitas experiências com este código.

Arquivo noticias.xml

<?xml version="1.0" encoding="iso-8859-1" ?>
<etc>

   <!--
      Comentários
   -->

   <assunto>
      <texto>Noticias1</texto>
   </assunto>

   <assunto>
      <texto>Noticias2</texto>
   </assunto>

   <assunto>
      <texto>Noticias3</texto>
   </assunto>

   <assunto>
      <texto>Noticias4</texto>
   </assunto>

   <assunto>
      <texto>Noticias5</texto>
   </assunto>

   <assunto> 
      <texto><![CDATA[
         Texto normal<br>
         <b>Texto em negrito</b><br>
         <i>Texto em itálico</i><br>
         <u>Texto sublinhado</u><br>
      ]]></texto>
   </assunto>

</etc>

Arquivo teste.html

<html>
<head>
<title>Untitled Document</title>
</head>
<script language="javascript">
// 1º passo: Função para carregar o arquivo XML:

function carregarDococumentoXml(pagina){

   if(window.ActiveXObject){ // verifica qual browser o usuario esta usando
      documentoXml = new ActiveXObject("Microsoft.XMLDOM"); // Internet Explorer
   } else {
      documentoXml = document.implementation.createDocument("","",null); 
      // Mozilla, Safari...
   }

   documentoXml.async = false;
   documentoXml.load(pagina); // carrega a página enviada como parametro
   return(documentoXml); // retorna o documento XML carregado
}

// 2º passo: função para capturar e exibir o conteúdo 

function carregarConteudo(elemento, pagina) {
   documentoXml = carregarDococumentoXml(pagina); 
   // chama uma função para carregar o documento XML
   elementoXml = documentoXml.getElementsByTagName(elemento); 
   // seleciona todas as tags contendo tal elemento dentro do documento XML
   for (i=0;i<elementoXml.length;i++){ 
   // faz um loop contando a quantidade de elementos tag texto dentro do arquivo XML
   // elementoXml.length - conta a quantidade de elementos da tag dentro do arquvo xml. 
      document.write(elementoXml[i].childNodes[0].nodeValue+"<br>"); 
      // captura os valores dentros das tags visitadas pelo loop
   }
}

// Parametro - elemento: Exibe o elemento da página XML.
// Parametro - pagina: O nome do arquivo XML que será carregado. 

</script>

<body>
<script language="javascript">
   carregarConteudo("texto","noticias.xml");
</script>
</body>
</html>
Resultado:

Transformando PHP em XML

Se você usa PHP e precisa gerar um código XML para o Javascript, o exemplo abaixo simplifica, veja:

Arquivo: exemplo.php
<;?php

// Escreve estrutura do XML

$xml = "<;?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n";
$xml .= "<;itempai>\n";
$xml .= "<;itemfilho>conteudo<;/itemfilho>\n";
$xml .= "<;/itempai>\n";

// Abre arquivo e salva

$file = fopen("imageData.xml", "w");
fwrite($file, $xml);

?>