Você está na página 1de 37

XML

O que é XML?
• XML é a Linguagem de Marcação Extensível. É
chamado de extensível porque a natureza
modular de sua estrutura permite que você
faça modificações facilmente alterando ou
adicionando recursos de dados. Mais
importante, XML é na verdade uma "meta-
linguagem". Ou seja, XML é realmente uma
especificação que dita como descrever
linguagens e dados.
• O design do XML nos oferece os seguintes recursos poderosos:
• O XML simplifica a comunicação porque é autodescritivo.
Quando um documento XML é criado, a estrutura também foi
criada. É esta estrutura que descreve os dados nela contidos.
Isso permite que os programas consultem facilmente um
documento XML para dados específicos sem ter que realizar
uma análise difícil. A natureza autodescritiva do XML simplifica
o compartilhamento de dados XML entre pessoas e aplicativos.
XML permite que você crie marcação personalizada (suas
próprias tags). Isso permite que o XML represente um número
ilimitado de documentos.
• NOTA
• Documento é o termo usado para uma única
coleção de dados XML. Um documento pode
ser armazenado como um arquivo, como um
objeto ou em um banco de dados. Não é onde
o documento está armazenado, mas sim a
coleção de dados que constituem o
documento que é a característica definidora
de um documento XML.
• Os dados podem ser armazenados e organizados de maneira personalizável para suas
necessidades. Os documentos podem ser organizados exatamente como você deseja.
• Unicode (um padrão internacional para texto) é o conjunto de caracteres padrão para XML e,
portanto, um imenso número de idiomas e caracteres são suportados. Os documentos podem
ser criados em praticamente qualquer idioma.
• O XML é baseado em texto de caracteres simples, o que facilita o transporte de um documento
XML entre sistemas ou pela Internet.
• A estrutura e a qualidade do documento podem ser verificadas. Isso significa que é possível
validar o documento geral, a sintaxe e os tipos de dados antes que os dados sejam processados
por um aplicativo. Portanto, é possível adicionar uma detecção de erros mais robusta e completa
dentro de uma aplicação.
• XML pode ser facilmente misturado com folhas de estilo para criar praticamente qualquer saída
desejada. Um documento XML deve consistir apenas em dados. Você pode reutilizar os dados de
muitas maneiras diferentes. É fácil reutilizar um único conjunto de dados e reformatá-los para
exibi-los de forma diferente apenas trocando as folhas de estilo . Além disso, uma vez que uma
folha de estilo é construída, ela pode ser reutilizada em muitos documentos XML diferentes,
desde que tenham a mesma estrutura. Mais adiante neste livro, mostraremos todo o poder das
folhas de estilo à medida que construímos alguns relatórios.
• Praticamente qualquer tipo de dado pode ser expresso como um documento XML. XML apenas
fornece as regras que dizem como descrever os dados. Os dados em si geralmente são facilmente
expressos usando as regras do XML.

Quando combinados, esses recursos criam um meio de descrição de dados independente de


qualquer idioma ou sistema. Isso nos permite reutilizar dados XML em sistemas e empresas. Tudo se
resume a um conjunto de regras muito simples e bem pensadas.
Regras de XML
• Documento XML shows.xml
• <?xml version="1.0"?>
• <MOSTRA>
• <DESEMPENHO>
• <TITLE>Princesa das Fadas</TITLE>
• <AUTOR/>
• <DESCRIÇÃO> Som de arranhões com ênfase na cor, textura.
</DESCRIÇÃO>
• <DATE status="canceled">09/11/2001</DATE>
</PERFORMANCE>
• </SHOWS>
Tags e Elementos
• Toda marcação XML consiste em tags. Aqui está uma
tag de amostra:
• <DESEMPENHO>
• Tags são usadas para construir um elemento. Aqui está
um elemento de exemplo:
• <PERFORMANCE></PERFORMANCE>
• Um autor de arquivo XML cria tags para descrever os
dados que o arquivo contém. Essas tags são muito
semelhantes às tags HTML. Os elementos são a base
dos documentos XML.
Noções básicas de tags e elementos
• Primeiro, vamos abordar três termos comumente usados
em relação a tags. Os termos são tag de abertura, tag de
fechamento e tag vazia. Uma etiqueta de abertura é a
primeira etiqueta de um par; em nosso elemento de
exemplo na seção anterior, <PERFORMANCE> é uma tag
de abertura. A tag de fechamento é a tag final de um par;
em nosso elemento de exemplo, </PERFORMANCE> é a
tag de fechamento. Por fim, uma tag vazia é uma tag
independente que não possui dados e se parece com isso:
• <DESEMPENHO/>
• Um elemento consiste em uma tag de abertura,
uma tag de fechamento e tudo mais. Todos os
dados dentro de um documento XML são
expressos com tags. Os elementos podem
conter outros elementos, dados ou texto, ou
podem estar vazios e não conter nada entre as
tags. Os elementos também podem conter uma
combinação de dados e outros elementos.
• <PERFORMANCE> Teatro Marks Bros.
<TITLE>Princesa das Fadas</TITLE>
</PERFORMANCE>
• Aqui estão as regras básicas para usar tags:
• As tags diferenciam maiúsculas de minúsculas. Isso significa que <NAME> e <Name> são tags
diferentes. Tome cuidado para garantir que o caso de abertura e fechamento de tags
correspondam.
• Nenhum espaço em branco é permitido no início de uma tag. Um exemplo de espaço em branco
não permitido seria < NAME>. No entanto, espaços em branco no final das tags são permitidos,
como em <NAME>.
• O nome da tag deve começar com uma letra ou um sublinhado.
• O nome da tag pode conter qualquer um dos seguintes: letras, numerais, hifens (-), pontos (.) ou
sublinhados (_).
• Cada tag deve ser fechada. Isso significa que, onde uma tag de abertura é criada, eventualmente
deve haver uma de fechamento com o mesmo nome. Quando uma tag não contém dados, você
pode fechá-la imediatamente após abri-la (<AUTHOR></AUTHOR>, por exemplo) ou usar uma tag
vazia (por exemplo, <AUTHOR/>).
• Cada elemento deve ser aninhado adequadamente antes que outra tag seja aberta. Ao contrário
do HTML, que é tolerante a tags aninhadas inadequadamente, o XML possui regras de
aninhamento estritas. Em XML, se uma tag for aberta dentro de um elemento, ela deve ser
fechada dentro desse elemento também. Por exemplo, em HTML o seguinte funcionará:
• <B><FONT color="red">texto aqui</B></FONT> No entanto, em XML isso não é válido porque a
tag de fonte é aberta dentro da tag em negrito e é fechada após o final da tag em negrito. Isso
viola a regra de que uma tag deve ser fechada dentro do mesmo elemento em que foi aberta.
Nesse caso, a tag de fonte não foi fechada dentro do elemento em negrito. Uma versão correta
ficaria assim:
• <B><FONT color="red">texto aqui</FONT></B>
Elemento Raiz
• Todo documento XML deve ter um e apenas um elemento raiz,
também conhecido como elemento do documento. Este é um
elemento definido pelo autor que contém o restante do
documento XML. Apenas dois tipos de instruções podem residir
fora do elemento raiz: uma declaração de documento (que é
sempre a primeira linha do documento XML) e instruções de
processamento.
• No documento de exemplo shows.xml, o elemento raiz é
<SHOWS>. Observe que <SHOWS> é a primeira tag que não é uma
declaração XML no documento nem uma tag de processamento, e
a tag de fechamento </SHOWS> é a última. Por fim, observe que
todas as outras tags estão dentro do elemento SHOWS.
Atributos
• Os atributos são outra parte importante dos
documentos XML. Um atributo é um par
nome/valor que pode ser encontrado em uma
tag de abertura. Os atributos fornecem
informações adicionais a um elemento
específico. Incorporado em uma tag, um
atributo se parece com o seguinte:
• <DATE status="cancelado"
>09/11/2001</DATE>
• Os atributos são úteis para fornecer propriedades de
um elemento. No trecho de código anterior, observe
que o par nome/valor da propriedade é
status="canceled". Isso é relevante para a data da
apresentação - se as informações sobre essa
apresentação foram solicitadas, seria importante
observar que ela foi cancelada. Muitas vezes, atributos
e elementos podem ser intercambiáveis em sua
funcionalidade. Ou seja, os dados expressos como um
atributo também podem ser expressos como um
elemento. Em XML, isso simplesmente não faz diferença
porque dados são dados. No entanto, fará diferença
quando você estiver processando um documento XML.
Aqui está um conjunto simples de diretrizes:
• Quaisquer dados que precisem ser exibidos
devem ser armazenados como um elemento.
• Quaisquer dados destinados a modificar a
forma como um elemento é exibido devem
ser armazenados como um atributo.
Tenha em mente que estas são apenas
orientações. Com a experiência, você terá uma
noção se os dados seriam melhor armazenados
como um atributo ou um elemento.
Existem várias regras em relação aos atributos:
• Os atributos consistem em um nome de propriedade, um sinal de igual e
o valor da propriedade entre aspas (por exemplo, status="cancelado").
• O nome da propriedade diferencia maiúsculas de minúsculas. Um
atributo chamado Status não é o mesmo que um status nomeado.
• Nunca pode haver duas propriedades com o mesmo nome em qualquer
tag.
• Pode haver mais de um atributo por tag.
• Deve haver aspas em torno do valor de um atributo. Podem ser usadas
aspas simples ou aspas duplas. Se você precisar usar aspas simples ou
aspas duplas no valor real (por exemplo, owner="bill 'slim' jones"), use o
outro tipo de aspas para conter o valor.
A declaração XML
• veja shows.xml
• <?xml version="1.0"?> Esta linha existe para
informar ao processador XML que este é
realmente um arquivo XML. Ele nos diz que o
arquivo é baseado na versão 1.0 da
especificação XML. Observe que o par
nome/valor da propriedade da versão é um
atributo que segue as regras anteriores.
• Algumas das propriedades mais úteis da declaração de documento estão
listadas aqui:
• version— Configura a versão da especificação XML que está sendo usada pelo
documento XML. Atualmente existe apenas uma versão da especificação (versão
1.0). No entanto, ao declarar essa propriedade, você pode garantir que o
processador XML saberá qual versão da especificação o documento XML usará
quando a próxima versão for lançada e, assim, manterá a compatibilidade com
versões anteriores.
• codificação— Define a codificação de caracteres. O padrão é UTF-8. Este é o
conjunto de caracteres usado no documento XML. O conjunto de caracteres
define o valor numérico de cada caractere em um arquivo.
• standalone— Declara se o documento XML tem ou não outros arquivos que
devem ser processados, como uma folha de estilo externa ou definição de tipo
de documento (DTD). Ao trabalhar com um documento XML autônomo, você
verá um ganho de desempenho no processamento de documentos ao usar o
atributo autônomo.
• Aqui estão dois exemplos de declaração de documento:
• <?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0"
standalone="yes" ?>
Declaração de tipo de documento
• O início de um arquivo XML pode conter outras coisas após a declaração
XML. O documento pode especificar declarações de entidade, o elemento
raiz, instruções para analisadores XML ou a definição de tipo de
documento (DTD) que deve ser usada para validar o documento XML.
• A DTD descreve os requisitos estruturais de um documento XML. Isso
significa que um DTD pode definir o seguinte:
• Os elementos e atributos que podem aparecer em um documento
• Quais elementos são elementos filhos e qual número, ordem e
posicionamento eles devem ter
• Os valores padrão para elementos e atributos
• Ele é usado para garantir que cada documento XML siga um modelo de
documento específico e, portanto, esteja no formato exato necessário
para qualquer processamento que possa ocorrer.
Listagem 2.2 Arquivo DTD Externo
shows.dtd para shows.xml
• <?xml version="1.0" encoding="UTF-8"?> <!
ELEMENT SHOWS (PERFORMANCE*)> <!
ELEMENT PERFORMANCE (TITLE?, AUTHOR?,
DESCRIPTION?, DATE?)+ > <!ELEMENT TITLE
( #PCDATA)> <!ELEMENT AUTHOR (#PCDATA)>
<!ELEMENT DESCRIPTION (#PCDATA)> <!
ELEMENT DATE (#PCDATA)> <!ATTLIST DATE
status (cancelado) #IMPLIED>
• Um DTD começa com a declaração XML. Em seguida, ele começa
a definir a estrutura necessária do documento XML por meio do
uso de declarações de elementos como as seguintes:
• <!ELEMENT TITLE (#PCDATA)> O conteúdo de cada declaração de
elemento começa com o nome do elemento que está definindo.
Neste caso, é o elemento TITLE. Em seguida, descreve o
conteúdo que é permitido nele. Em nosso snippet de código de
exemplo, o elemento TITLE pode conter #PCDATA.
• Os valores possíveis para o conteúdo incluem
• Uma lista de outros elementos
• A palavra-chave EMPTY (sem conteúdo)
• A palavra-chave ALL (qualquer coisa possível)
• A palavra-chave #PCDATA (somente dados de caracteres
analisados)
• Qualquer combinação razoável dos itens acima
• Isso nos leva à questão de como combinar esses elementos de uma maneira que o
DTD entenda. Eles podem ser combinados usando os seguintes operadores:
• A vírgula (,) é usada como um operador e. Um exemplo é (TÍTULO, AUTOR). O
elemento que está sendo descrito deve ter um elemento TITLE e um elemento
AUTHOR como filhos.
• O pipe (|) é usado como um operador ou. Um exemplo é (TÍTULO | AUTOR). O
elemento que está sendo descrito deve ter um elemento filho TITLE ou AUTHOR.
• O ponto de interrogação (?) significa que o elemento é opcional. Um exemplo é
(AUTOR, TÍTULO?). O elemento que está sendo descrito deve ter um elemento filho
AUTHOR e também pode ter um elemento filho TITLE.
• O sinal de mais (+) é usado para significar um ou mais. Um exemplo é (TÍTULO+). O
elemento que está sendo descrito deve ter pelo menos um elemento filho TITLE.
• O asterisco (*) é usado para indicar que qualquer número pode existir. Um exemplo
é (TÍTULO*). O elemento que está sendo descrito pode ter qualquer número de
elementos filhos denominados TITLE.
• Os parênteses são uma forma de forçar o processamento. Por exemplo, (A | (B, C))
significa que o elemento que está sendo descrito deve ter um elemento filho A ou
elementos filho B e C.
• Atributos, como elementos, podem ser definidos dentro de uma DTD. A sintaxe é
semelhante, exceto que a tag se parece com isso:
• <!ATTLIST DATE status (cancelado) #IMPLIED> Novamente, o conteúdo começa com o
nome do elemento cujos atributos estamos descrevendo. Em seguida, listamos o
nome do atributo e, em seguida, definimos seu tipo de dados ou uma lista de valores
literais que ele pode ter. Por último, descrevemos o comportamento do atributo.
• Alguns tipos de dados e valores possíveis usados para descrever atributos são
• Uma lista enumerada de valores que podem estar no par nome/valor. Por exemplo,
( cancelado | onschedule ) indica que o valor do atributo que está sendo descrito é
cancelado ou onschedule .
• CDATA— Isso é regido pelas mesmas regras em relação ao conteúdo que os dados de
texto encontrados nos elementos.
• ID— Este tipo de atributo dá a um elemento um rótulo garantido como único no
documento.
• A seguir, temos vários valores que podem ser usados na DTD para descrever o
comportamento do atributo:
• Quando uma string entre aspas é fornecida, ela se torna o valor padrão. Se o usuário
não incluir o atributo, ele será criado com o valor padrão na estrutura do documento
quando for analisado.
• #IMPLIED— O atributo é opcional.
• #REQUIRED— O atributo é obrigatório e nenhum valor padrão é assumido.
shows.xml com referência de DTD adicionada

• <?xml version="1.0"?>
• <!DOCTYPE SHOWS SYSTEM "shows.dtd">
<SHOWS> <PERFORMANCE>
• <TITLE>Princesa das Fadas</TITLE>
• <AUTOR/>
• <DESCRIÇÃO> Som de arranhões com ênfase na
cor, textura. </DESCRIÇÃO>
• <DATE status="canceled">09/11/2001</DATE>
</PERFORMANCE> </SHOWS>
• O conteúdo desta referência começa com o elemento raiz ao
qual o DTD se aplica; neste caso é SHOWS. Em seguida, a
palavra-chave SYSTEM é usada para indicar que o DTD não foi
publicado e que o local do arquivo a seguir é o DTD para este
documento XML. A outra opção é usar a palavra-chave PUBLIC
no lugar de SYSTEM e o Uniform Resource Identifier (URI) . A
palavra-chave PUBLIC significa que a DTD está disponível ao
público para validação de documentos. Essa opção geralmente
é usada quando os documentos XML estão sendo transmitidos
entre empresas - ela permite que elas tenham certeza de que
seus documentos XML têm a estrutura esperada.
Esquemas
• Muitos programadores acham que os DTDs não são
flexíveis o suficiente para as necessidades atuais de
programação. Felizmente, os esquemas substituirão
os DTDs na maioria dos aplicativos da Web. Os
esquemas são muito parecidos com os DTDs, pois
definem os blocos de construção legais de um
documento XML. Ao contrário dos DTDs, no entanto,
os esquemas são escritos em XML e, portanto, são
extensíveis a futuras adições. Eles também podem
lidar com namespaces e tipos de dados.
• Os esquemas têm as seguintes vantagens sobre os DTDs:
• Os esquemas são os próprios documentos XML; eles
podem ser validados e estendidos programaticamente.
• Os esquemas têm a capacidade de descrever o tipo de
dados dos dados de texto do elemento.
• Ao contrário dos DTDs, que descrevem um documento
XML inteiro, um esquema descreve elementos e
atributos. Isso significa que adicionar elementos ao
documento XML validado não interromperá a validação,
desde que sejam de um namespace diferente.
Comentários
• Os comentários podem ser colocados em qualquer lugar do documento,
exceto na primeira linha, que é sempre reservada para a declaração do
documento, e dentro de tags. Os comentários XML têm o mesmo formato
dos comentários HTML. Aqui está um exemplo de um comentário XML:
• <!-- comment goes here --> As seguintes regras se aplicam a comentários
XML:
• <!-- inicia um comentário e --> termina um comentário.
• Os comentários não podem ser aninhados.
• Travessões duplos (--) não podem ser usados em um comentário porque
esse é o delimitador que informa ao processador que o comentário foi
concluído.
• O exemplo a seguir causará um erro:
• <!-- --os traços extras neste comentário causarão um erro-- -->
Documentos bem formados e validados
• O XML oferece a você um imenso poder para criar linguagens e elementos de marcação
personalizados. Essa flexibilidade pode causar estragos nos analisadores de XML se não
houver regras sintáticas suficientes em relação à marcação. Documentos XML que seguem
todas as regras de sintaxe XML são chamados de documentos "bem formados". Seguir
todas as regras descritas nas seções anteriores deste capítulo garantirá que seu XML
esteja bem formado. Em resumo, um documento bem formado
• Um único elemento raiz
• Tags aninhadas corretamente
• Tags devidamente fechadas
• Atribua valores entre aspas
• Apenas um valor por atributo
• Nenhum personagem ofensivo
• Todos os documentos XML processados devem ser bem formados, mas também podem
ser válidos. Um documento XML válido é aquele que está em conformidade com a DTD ou
esquema escrito para descrever sua estrutura. Ou seja, o documento XML válido atende a
todos os requisitos declarados na DTD ou esquema.
Introdução concluída
XSL
• XSL significa Linguagem de Folha de Estilo Extensível . Essa
linguagem é o que usaremos para transformar uma fonte XML
no que queremos. Com os dados, poderíamos produzir
qualquer formato: HTML, mais XML ou qualquer outra coisa. É
importante notar que o XSL é baseado em XML. Isso significa
que o XSL deve seguir as mesmas regras bem formadas que o
XML: há aspas em todos os valores de atributo, todas as tags
diferenciam maiúsculas de minúsculas e devem ser aninhadas
adequadamente e os dados não devem conter os caracteres
de marcação listados na Tabela 2.1 . Nos exemplos a seguir,
vamos formatar alguns XML como HTML usando
Transformações XSL (XSLT).
Vinculação de folha de estilo
• Primeiro, vamos adicionar outra instrução do
processador ao topo do arquivo XML que
criamos. Adicione a seguinte linha após a
declaração do documento no arquivo
shows.xml e salve-o como shows2.xml. Esta se
tornará a segunda linha do documento XML.
• <?xml- stylesheet type='text/ xsl ' href
='shows.xsl'?>
• Vejamos isso mais de perto. Esta instrução de
processamento de folha de estilo informa ao
processador XML onde encontrar a folha de estilo
associada ao documento XML. Ele contém o tipo da
folha de estilo associada através do par nome/valor do
tipo (ou atributo). Se, por exemplo, a folha de estilo
fosse uma folha de estilo em cascata ( CSS), esse valor
seria text/ css . Em seguida, esta instrução de
processamento indica onde encontrar a folha de estilo
correspondente usando o atributo href . No nosso
caso, ele pode ser encontrado no mesmo diretório
que o arquivo XML, e o nome do arquivo será
shows.xsl. Essa associação faz com que o XML seja
transformado em relação às instruções de shows.xsl.
• 1 < xsl:stylesheet version="1.0"
• 2 xmlns:xsl ="http://www.w3.org/1999/XSL/Transform">
• 3 < xsl:template match="/">
• 4 <HTML>
• 5 <CHEFE>
• 6 <TITLE>Folha de estilo da primeira apresentação < /TITLE>
• 7 </HEAD>
• 8 <CORPO>
• 9 < xsl:for-each select="SHOWS/PERFORMANCE">
• 10 <FONT color="red">
• 11 <B>< xsl:value-of select="TITLE" /></B> -
• 12 <I>< xsl:value-of select="AUTHOR" /></I>
• 13 </FONT>
• 14 < xsl:value-of select="DATA" />
• 15 < xsl:value-of select="DESCRIPTION" />
• 16 <BR/>
• 17 </ xsl:para-cada >
• 18 </BODY>
• 19 </HTML>
• 20 </ xsl:modelo >
• 21 </ xsl:folha de estilo >
Namespaces
• Um namespace é um grupo de elementos e
atributos que são reconhecíveis por seu
prefixo. Um namespace é declarado para que
todos os elementos e atributos desse
namespace sejam validados em relação ao
DTD correto e possam ser distinguidos de tags
com o mesmo nome de uma fonte diferente.
Os namespaces se tornam muito importantes
quando o conteúdo de um documento XML
vem de várias fontes.
• Por exemplo, vamos supor que a empresa A tenha
um elemento de autor que requer um nome,
sobrenome e data de nascimento, e a empresa B
tenha um elemento de autor que não requer nada.
Se essas empresas combinarem seus dados
usando XML, podem ocorrer colisões na validação
desses elementos. O uso de namespaces com os
DTDs permitiria que cada empresa validasse
adequadamente seus próprios elementos de autor.
• Na Listagem 2.5 , observe como as tags são
prefixadas com espaços reservados como
coA :. Os prefixos são vinculados aos nomes
completos usando os nomes de atributos que
começam com xmlns : encontrados no
elemento autores. Observe que os
namespaces completos são URLs. Os URLs na
verdade não apontam para nada — eles são
usados para garantir que os namespaces
sejam exclusivos.
Listagem 2.5 Documento XML com dois
namespaces definidos
• <?xml version="1.0"?>
• < coB:autores xmlns:coA ="http://www.companyA.com/books"
• xmlns:coB ="http://www.companyB.com/">
• < coA:autor >
• < coA:fname ></ coA:fname >
• < coA:lname ></ coA:lname >
• < coA:dob ></ coA:dob >
• </ coA:autor >
• < coB:autor >
• < coB:ssn />
• </ coB:autor >
• </ coB:autores >

Você também pode gostar