Introduo ao XML - by Loiane

Post on 19-Oct-2015

8 views

Category:

Documents

0 download

TRANSCRIPT

  • Introduo ao XML 22/02/2009 | By Loiane | 19 Comments Este post tem como objetivo apresentar as noes bsicas de XML, e tambm o primeiro de uma srie de posts sobre como manipular arquivos XML utilizando a linguagem java. Ao final desta srie de posts, disponibilizarei um tutorial em pdf, com todo o contedo postado aqui, assim como suas respectivas referncias. Afinal, o que XML? Extensible Markup Language (XML) linguagem de marcao de dados (meta-markup language) que prov um formato para descrever dados estruturados. Isso facilita declaraes mais precisas do contedo e resultados mais significativos de busca atravs de mltiplas plataformas. O XML permite a definio de um nmero infinito de tags, que so usadas para criar dados estruturados. Estes dados podem ser os dados de uma pessoa, tais como nome, endereo, telefone, nome dos filhos, etc. XML x HTML HTML e XML so primos. Eles derivam da mesma inspirao, o SGML. Ambos identificam elementos em uma pgina e ambos utilizam sintaxes similares. Se voc familiar com HTML, tambm o ser com o XML. A grande diferena entre HTML e XML que o HTML descreve a aparncia e a aes em uma pgina na rede enquanto o XML no descreve nem aparncia e aes, mas sim o que cada trecho de dados ou representa ! Em outras palavras, o XML descreve o contedo do documento.

    Estrutura de um XML Existem alguns termos que so usados para descrever partes de um XM: tags, elementos e atributos. Uma tag o texto que se encontra entre . Existem tags que indicam o incio () e tags que indicam o fim (). Um elemento a tag de incio, a tag de fim e tudo o que est entre estas tags. No exemplo da figura abaixo, o elemento possui os elementos filhos e . Um atributo o par nome-valor que se encontra dentro da tag de incio de um elemento. No exemplo da figura abaixo, tipo um atributo do elemento . Todo documento XML deve contrar apenas um nico elemento. Este nico elemento chamado de elemento raiz, que contm todos os valores e/ou outros elementos.

  • Estrutura de uma rvore XML Geralmente, uma rvore XML possui um n raiz especial (/) acima do elemento raiz. A figura abaixo representa a rvore XML do documento XML da figura acima.

    Aplicaes do XML Aqui est uma lista completa de aplicaes para o XML. Concluso Por XML deve-se entender meramente uma notao de texto hierarquicamente estruturado. A partir desta breve introduo, voc est apto a criar e configurar arquivos XML. At a prxima!

    XML: como posso usar, vantagens e desvantagens Introduo ao XML: Parte II

  • 26/02/2009 | By Loiane | 7 Comments

    Agora que voc j sabe o que um XML e como ele se parece (que pode ser visto aqui), vamos ao prximo passo: como que posso usar o XML, suas vantagens e desvantagens. Para que devo usar XML? O propsito principal do XML a facilidade de compartilhamento de informaes atravs da Internet. Mas o XML no serve apenas para web. Dentre as vrias aplicaes, pode-se incluir:

    Identificao da informao: voc pode definir suas prprias tags; Armazenamento de informao: XML portvel e no proprietrio, pode ser

    usado para armazenamento de informao em qualquer plataforma, por ter um padro internacional;

    Estruturar informao: XML pode ser usado para identificar qualquer tipo (hierrquico) de estrutura, seja esta longa ou com complexos tipos de dados;

    Publicao: combinando os ltimos trs tpicos (identificao, armazenamento e estruturao) significa que podemos utilizar o XML para public-lo na Web, assim como tambm outros formatos, como PDF, audio, etc, utilizando as folhas e estilos apropriadas para cada um dos casos;

    Mensagens e tranferncia de dados: XML tambm extremamente usado para juntar ou encapsular informao para ser trocada entre diferentes sistemas computacionais que seriam incapazes de se comunicar, sem precisar se preocupar com tipo de dado;

    Simplificao da mudana de plataforma: os dados de um XML so armazenados no formato texto. Isto torna muito mais fcil fazer a expanso ou atualizao de um sistema operacional ou de uma aplicao sem perder informaes;

    Web Services: o XML usado para gesto da informao e transmisso. Por que devo usar XML? Os tpicos abaixo exemplificam algumas razes:

    recomendado pelo W3C (World Wide Web Consortium); padro aberto, voc no precisa pagar nada para usar; Existem vrias ferramentas e editores bons no mercado, e o melhor: free; Simplicidade e Legibilidade, tanto para humanos quanto para computadores; Separao do contedo da formatao; Concentrao na estrutura da informao, e no na sua aparncia; Possibilidade de criar sua prpria sintaxe de dados, ou seja, estruturar os dados

    da forma que achar melhor, atravs da criao ilimitada de tags; Possui suporte a Unicode, permitindo que praticamente qualquer informao

    escrita em lngua humana possa ser transmitida; Permite validao, o que torna os teste unitrios mais efetivos, e a construo de

    aplicaes bem mais fcil; Quando no devo usar XML? Tudo tem um lado positivo e um lado negativo. No poderia ser diferente com o XML. Vamos ver ento alguns pontos negativos:

    A sintaxe do XML redundante ou torna-se grande em relao a representaes de dados semelhantes;

    A redundncia pode afetar a eficincia quando utiliza-se o XML para armazenamento, afetando tambm transmisso e processamento, os custos ficam muito mais elevados;

    Resumindo o que foi dito neste dois pontos: em muitas situaes, o XML pode ser substitudo por documentos com formatos mais simples, como os arquivos properties ou

  • texto. A grande quantidade de informao repetida pode prejudicar a velocidade de transferncia real da informao (se estiver em formato XML). Por exemplo: suponha que exista a necessidade de se transmitir o valor de determinados items, e cada item possui um indentificador. Poderamos criar um XML como o da figura abaixo para transmitir essas informaes:

    Suponha ainda que o XML contenha milhares de itens. A quantidade de informao real (somente dos dados) que est sendo fornecida bem menor comparada quantidade de informaes extras (tags) contidos no arquivo. Observe tambm que as informaes que sero transmitidas pelo arquivo no possuem quase nenhuma complexidade, ou seja, so muito simples. Outro fato a se observar que no h a real necesssidade da informao ser representada de forma hierrquica. As informaes do XML da figura acima poderiam simplesmente ser armazenadas em um arquivo txt simples, como o exemplo da figura abaixo:

    Repare que o tamanho do arquivo a ser transmitido ficou bem menor (quantidade de informaes caracteres; e consequentemente, o tamanho do arquivo em Kbytes). Concluso O uso do XML deve ser analisado antes de ser implementado. Algumas vezes pode ser mais vantajoso, em outras, pode ser necessrio utilizar algum outro padro. importante analisar o objetivo do uso do XML alm do tipo de aplicao e/ou sistema que vai gerar e/ou fazer o consumo do arquivo (se este for usado para armazenamento de informao). O prximo post da srie XML ser sobre como criar documentos bem formados.

    Como criar um documento XML Introduo ao XML: Parte III 02/03/2009 | By Loiane | 15 Comments

  • O objetivo deste post apresentar os elementos/partes de um documento XML. At agora, os XMLs apresentados como exemplos tinham uma estrutura parecida com essa:

    Ol! O XML acima possui apenas uma declarao e os elementos que compem a rvore XML. Porm, um XML tambm pode conter outros elementos. Segue a listagem das partes de um XML:

    Declarao XML Prlogo Instrues de processamento Elementos e atributos Comentrios Entidades Sees CDATA

    Declaraes do XML A maiora dos documentos XML comeam com uma declarao XML que fornece informaes bsicas sobre o documento para o parser. recomendado que um XML comece com uma declarao, mas no obrigatrio. Caso a declarao exista, deve ser a primeira coisa do documento. Eis um exemplo de declarao xml: A declarao XML utiliza o elemento . Se utilizar ter um erro de validao. Existem trs atributos que podem ser usados na declarao:

    Version a verso do XML, que pode ser 1.0 ou 1.1. Este atributo obrigatrio se voc usar a declarao XML;

    Enconding a linguagem de codificao do documento. O padro UTF-8. Este atributo opcional.

    Standalone os valores possveis so yes ou no. Use yes se o documento no faz referncia a documentos externos ou entidades. Use no caso contrrio. Este atributo opcional.

    Comentrios Voc pode incluir comentrios em um documento XML para incluir notas explicatrias e/ou descritivas. Os comentrios so ignorados por um parser, assim como tambm so ignorados por um compilador. possvel incluir um comentrio em qualquer lugar do XML, exceto nas tags (dentro das tags) e antes da declarao XML.

    algum outra pessoa

    abcdefghijk Instrues de Processamento O XML permite que voc utilize instrues especiais para passar informao para os programas que possam ler o documento XML. Uma instruo de processamento comena com . A nica restrio que voc no pode usar ou (que tambm reservado). No exemplo abaixo, a instruo de processamento para o Cocoon, um framework da Apache que focado em publicao XML. Quando o Cocoon est processando um XML, procura por instrues que comecem com cocoon-process, ento processa o

  • XML de acordo com esta instruo. O atributo type=sql indica que o documento XML contm uma instruo SQL. Prlogo O prlogo aparece no incio de um documetno XML, e contm informaes sobre o restante do documento. Um prlogo pode conter uma declarao XML, comentrios (que descreve o documento), instrues de processamento, e declaraes de tipo de documento (DTD). O XML abaixo exemplifica um prlogo contendo uma declarao XML, comentrio, uma instruo de processamento e um DTD (no elemento ).

    mensagem Entidades As entidades so constantes associadas a um valor de texto. So substitudas durante o processamento do documento XML. Por exemplo, se o texto XML legal for aparecer em vrias partes do documento podemos criar uma entidade assim: Aps a criao desta entidade, se quiser usar essa frase no documento XML, basta substituir por &legal. Tambm existem algumas entidades pr-definidas. O XML possui alguns caracteres especiais, que podem at gerar conflito com o contedo do documento. Por exemplo, suponha que voc queria utilizar a frmula x < y. No XML, a frmula ficaria assim: x < y Observe que a leitura no ficou muito legvel. O que est confundindo a leitura o carcter & que corresponde a & " que corresponde a ' que corresponde a

    Alguns documentos XML possuem caracteres no usuais, especialmente os documentos que possuem contedo cientfico ou matemtico. Se quisermos inserir o smbolo (pi), devemos fazer referncia ao seu cdigo no Unicode, como abaixo: CDATA A seo CDATA serve para prevenir o processamento de uma poro de contedo. Tudo o que est nessa seo no ser processado pelo parser. Exemplo:

    Este o contedo do XML de exemplo

    Maria 99999999

    ]]>

  • Se visualizarmos o XML acima, teremos:

    Note que as tags , e no foram reconhecidas como tags do documento, mas sim como contedo da tag . Definindo Tags e Atributos No XML, voc quem define o nome das tags e dos elementos que o documento XML vai ter. A pesar de voc poder escolher o nome que quiser para suas tags, existem algumas regras para a formao dos nomes. A especificao XML bem especfica em relao ao nome das tags. Voc pode comear uma tag com uma letra, underscore (_) ou dois pontos (:). Os prximos caracteres podem ser letras, dgitos, underscore, hfen, e dois pontos. Espao no permitido. Exemplo de tags que so permitidas:

    Algumas tags que so ilegais:

    < 2009> Os nomes de atributos seguem as mesmas regras que as tags. Obs.: Embora seja permitido o uso de dois pontos (:), no aconselhvel usar. O caracter : utilizado por prefixos do namespace (um dos assuntos do prximo post). Concluso Este post abordou as partes de um XML. Sabendo agora o que podemos ter em um XML, vamos falar sobre como criar um documento XML bem formado no prximo post. O assunto de DTD vai ser abordado em um post futuro.

    Documento XML Bem Formado Introduo ao XML: Parte IV 05/03/2009 | By Loiane | 3 Comments J sabemos como escrever um documento XML. Agora falata saber como criar um documento XML bem formado, ou seja, um documento que obedece algumas regras de formao. Antes de apresentar algumas regras bsicas, precisamos saber o que exatamente um documento XML bem formado. Os documentos XML bem formados seguem as regras

  • de sintaxe do XML, mas no possuem um DTD ou Schema, ou seja, no possuem um documento de validao (assunto do prximo post, aguardem!). Algumas regras sero listadas agora. O documento XML deve comear com uma declarao XML A pesar da declarao no ser obrigatria, o W3C recomenda que voc deve ter uma declarao no documento, e que esta deve ser ser a primeira coisa a aparecer no XML (comentrios antes da declarao no so vlidos). Exemplo de XML invlido:

    O Elemento Raiz deve conter todos os outros elementos Um documento XML deve conter apenas um nico elemento raiz. (root), que contm todo o texto e outros elementos do documento. Exemplo de XML bem formado:

    O XML abaixo no contm apenas um nico elemento raiz, portanto, no um documento bem formado:

    O documento XML deve ter pelo menos 1 elemento Para ser um documento vlido, o XML deve conter pelo menos 1 elemento. O primeiro elemento deve ser o elemento raiz. O exemplo abaixo mostra o menor XML bem formado possvel:

    Elementos devem ter tags inicial e final No pode existir um elemento sem a tag final. A tag final indicada por uma barra /, antes do nome da tag. O XML abaixo no bem formado porque o elemento no possui a tag final ().

    Se um elemento no possui informao (n de texto), chamado de elemento vazio. O elemento vazio indicado por ter uma barra / no final da tag inicil, como exemplificado no elemento no XML abaixo:

    As tags so case-sensitive No XML a tag diferente da tag . O XML abaixo mostra um exemplo que no bem formado:

  • Elementos no podem se sobrepor Se a tag inicial est dentro de um elemento, a tag final tambm deve estar dentro do mesmo elemento. Simplificando: os elementos, delimitados pelas tags inicial e final, devem estar aninhados. Exemplo de XML mal formado:

    Exemplo de XML bem formado:

    Os atributos devem estar entre aspas Existem duas regras para atributos nos documentos XML:

    1. Atributos devem ser valorados 2. Os valores devem estar entre aspas

    O XML abaixo um exemplo de XML mal formado:

    Voc pode usar aspas simples ( ) ou aspas duplas ( ). O exemplo abaixo um exemplo de documento bem formado:

    Os atributos devem ser nicos Os atributos no devem aparecer mais de uma vez em uma mesma tag de abertura.

    A pesar de terem a mesma grafia, os atributos abaixo so diferentes (lembre-se que o XML case-sensitive). Mesmo assim, no uma boa prtica.

    Utilize < e & apenas para iniciar uma tag e entidade Os processadores XML sempre assumem que o carcter < inicia uma tag e que o carcter & inicia uma referncia a uma entidade. Por este motivo, utilize as entidades pr-definidas. Se por algum motivo o valor de um atributo ou elemento utilizar algum dos caracteres < > e &, utilize as entidades pr-definidas, pois os processadores do importncia a esses caracteres.

  • NAMESPACES O XML muito poderoso porque d muita flexibilidade. Voc e outras milhares de pessoas podem criar suas prprias tags para descrever uma informao. Com o passar do tempo, os autores do XML perceberam que os primeiros criadores do XML no tinham antecipado: conflito entre tags. Por exemplo: em uma empresa de TI, o departamento de recursos humanos utiliza um XML que contm as informaes de um funcionrio:

    Agora, suponha que o chefe dessa empresa tambm tenha um controle sobre os funcionrios, e, alm dos dados de cada empregado, ele tambm adiciona um comentrio () sobre a conduta de cada um. Se ele usar o mesmo XML do exemplo acima, haver um conflito de tags. O recurso utilizado para resolver esse conflito chama-se namespace. Os namespaces fornecem uma maneira para garantir que um conjunto de tags no ir conflitar com outro conjunto. Basta definir um prefixo para as tags e seus atributos. Ento vamos recriar o XML do exemplo para que no exista mais conflitos. O primeiro passo criar um namespace e prefixo para indicar o conjunto de tags que faz parte do XML utilizado pelo departamento de recursos humanos. Aps definir o namespace rh, deve-se colocar o rh: como prefixo de todas as tags e respectivos atributos. Agora que j est claro que as tags pertencem ao XML utilizado pelo RH, o chefe pode adicionar o seu prprio namespace ao documento XML (cf). Aps a adio do prprio namespace, s adicionar as tags que deseja. O resultado final o XML abaixo:

  • Tambm possvel definir um namespace padro (default). Quando isso acontecer, os elementos e atributos que no possuem prefixo pertencem ao namespace padro.

    Para o caso do XML do RH e do chefe, tambm seria possvel definir um namespace padro para o XML do RH e utilizar um namespace com prefixo para o elemento do chefe. Assim, todos os elementos do namespace padro no precisaria de prefixo, apenas o elemento do chefe . O XML resultante seria o XML acima, acrescentanto as linhas verdes destacadas no XML com 2 namespaces.

  • Resumindo: xmlns=identificador (namespace default) => associa o identificador com

    todos os elementos que no possuem prefixo. Ex: xmlns:prefixo=identificador => associa o identificador com os elementos e

    atributos cujo nome local precedido do prefixo. Ex Os nomes indentificadores de um namespace parecem com uma URL, mas no so (algumas vezes pode acontecer da URL conter alguma informao sobre o documento). Voc pode definir um namespace comoxmlns=loiane que vai funcionar da mesma maneira. A nica coisa que importante sobre os namespaces que cada um tem que ser nico, por isso que muitas vezes so utilizadas URLs. Concluso Este post abordou algumas regras para criao de documentos XML vlidos. Alm das regras citadas no post, existem vrias outras. Caso deseje conferir todas as regras definidas pelo W3C, voc pode ver a especificao neste link: http://www.w3.org/TR/REC-xml (em ingls). A especificao completa sobre namespaces pode ser encontrada neste link: http://www.w3.org/TR/REC-xml-names/. Ainda existe debate sobre este assunto (em sua maioria, porque o uso de namespaces pode tornar a criao de DTDs mais difcil), porm, uma recomendao oficial da W3C. A W3C possui um validador XML online. Muito bom pra quem quiser testar se o seu XML est bem formado. Link:http://www.w3schools.com/dom/dom_validate.asp At a prxima! O prximo post da srie ser sobre como criar documentos XML vlidos atravs de DTD e Schema.

    Validao de documentos XML Introduo ao XML Parte V 13/03/2009 | By Loiane | 3 Comments

  • Este post tem como objetivo mostrar o que e por qual motivos devemos utilizar a validao de documentos XML. At agora, os posts mostraram como construir um documento XML bem formado. Com essas regras, voc pode construir o XML que desejar, j que voc quem define suas prprias tags. Apesar de toda a liberdade, ainda falta uma maneira para restringir o vocabulrio dos elementos e atributos que configuram um conjunto de documentos. O processo de definir formalmente a linguagem de um XML denomina-se modelagem de documento. Mas o que exatamente modelar um documento XML? Um modelo de documento determina quais documentos XML esto de acordo com a linguagem definida. Um modelo de documento responde algumas perguntas, tais como: Um contato precisa ter um telefone celular?, Um contato pode ter mais de um endereo?. Um modelo um tipo especial de documento, escrito numa sintaxe prpria para descrever uma linguagem de XML. Essa linguagem de XML tambm pode ser chamada de tipo de documento. Com esse modelo de documento, possvel dizer se um documento XML est escrito conforme seu tipo de documento. Em outras palavras, um XML vlido um documento XML que segue as regras de formao definidas em seu tipo de documento. A figura abaixo ilustra essa situao:

    Como saber se eu preciso criar um documento que especifica o modelo do meu XML? Os documentos XML so escritos por pessoas (ou uma aplicao) e so usados

    como dados para outros aplicativos. As aplicaes so exigentes em relao ao formato dos dados, pois pode ser difcil desenvolver uma aplicao que entenda inmeras variaes de formatos de dados. Quando voc restringe, cria uma padro, escrever um programar= que vai consumir aquele XML fica muito mais fcil e reduz bastante a possibilidade de erros.

    Seu documento XML deve ter alguns campos obrigatrios. Por exemplo, um email precisa ter um destinatrio, se no tiver, como voc vai enviar a mensagem? Utilizando um documento modelo, voc garante que todos os campos obrigatrios estaro presentes no XML, ou seja, voc garante a validao.

    Voc solicita um XML a pessoas que no esto familiarizadas com a estrutura do XML. Como o modelo um documento, voc pode torn-lo pblico, e essas

  • pessoas podero fazer o download. Um modelo de documento XML tambm pode ser utilizado em editores de XML (serve de guia, pois contm a lista dos elementos apropriados, e que podem ser usados para construir o XML).

    Voc quem decide se vai usar um modelo de documento ou no. O XML foi projetado para funcionar das duas maneiras. E se eu no quiser usar um documento que especifique o contedo do meu XML? Se voc decidir no usar um modelo de documento XML, voc precisa saber como os elementos e os atributos se comportam:

    Vocabulrio ilimitado: voc pode utilizar qualquer nome para seus elementos. Sem regras de gramtica: um elemento pode conter qualquer coisa: contedo

    misto, elementos, texto, ou pode ser vazio. Sem restries aos atributos: qualquer elemento pode conter qualquer atributo.

    Existem duas formas de criar esses documentos de definio de contedo do XML (linguagem XML): A primeira forma utilizando um DTD (Document Type Definition). Um DTD define os elementos que podem aparecer no XML, como este elementos devem estar relacionados e outros detalhes bsicos da estrutura de um documento XML. Os DTDs fazem parte da especificao original do XML. A segunda forma utilizando um XML Schema. Um schema pode definir todas as estruturas do documento que voc pode colocar em um DTD, e tambm pode definir tipos de dados e outras regras mais complicadas do que um DTD. O W3C desenvolveu a especificao do XML Schema apenas um pouco depois da especificao original do XML. Concluso Um documento XML no vlido (sem DTD ou Schema associado) individualista. Quando um DTD ou Schema so definidos, representam um conjunto de documentos XML que podero existir. Com apenas um documento no vlido, possvel fazer muitas coisas, mas fica muito difcil automatizar os processos sem considerar uma classe de documentos. Mas se voc estiver trabalhando com poucos documentos, e estes no tiverem restries, voc no precisa criar um modelo de documento XML. O seu conjunto pequeno, e se voc parar para especificar o documento, pode perder um tempo precioso. Tudo depende do ambiente em que o contexto est inserido. Voc quem decide se deve usar a validao.

    Construindo um DTD Introduo ao XML Parte VI 06/04/2009 | By Loiane | 3 Comments

  • Este post tem como objetivo mostrar como fazer a validao de um documento XML utilizando DTD. Os tpicos abordados so: introduzir a teoria bsica do DTD. Um DTD (Document Type Definition) especifica um conjunto de regras que define a estrutura de um documento. O DTD pode aparecer no topo do XML (no prlogo) ou em um documento separado. Ter o DTD no topo do documento XML no tem nenhum problema se apenas um XML utilizar este DTD. Voc vai ter um problema se vrios documentos XML utilizarem o mesmo DTD, pois voc vai precisar atualizar cada XML sempre que o DTD sofrer alteraes. Uma soluo criar um arquivo externo ao XML que contm o DTD, e em cada XML fazer uma referncia ao DTD. Sintaxe de um DTD Um DTD defini um documento XML da seguinte maneira:

    Declarao de um conjunto de elementos. Voc no pode utilizar outros elementos que no estejam definidos neste conjunto. Imagine como se fosse o vocabulrio do XML.

    Definio do contedo para cada elemento. A definio de contedo um padro que nos diz quais os elementos ou dados que aquele determinado elemento XML pode conter, em qual ordem, quantidade e se opcional ou obrigatrio. Imagine como se fosse a gramtica do XML.

    Declarao de um conjunto de atributos para cada elemento. Cada declarao de atributo define o nome, tipo (datatype), valores padres (se aplicvel), e comportamento (obrigatrio ou opcional).

    O DTD pode ter uma declarao na primeira linha (assim como no XML se for um documento externo). Nesta declarao, voc pode definir a verso do XML e a codificao (ver introduo XML aqui). Quando voc indica a codificao no DTD, no significa que o XML ir importar essa configurao. Voc deve especificar a codificao no XML tambm (e esta pode ser diferente do DTD). Estrutura de um DTD Como j foi dito acima, o DTD um conjunto de regras, tambm chamadas de declaraes. Cada declarao especifica um elemento, seus atributos, entidades e contedo. A figura abaixo exemplifica a estrutura de um DTD:

    A ordem da declarao dos elementos importante em duas situaes: A primeira, se houver declaraes redundantes (ateno na hora de declarar o mesmo tipo de elemento duas vezes), o primeiro elemento declarado toma a precedncia e todos os outros so ignorados. Essa informao importante caso voc v sobrescrever declaraes. A segunda, se entidades de parmetro so utilizadas nas declaraes, precisam ser declaradas antes de serem usadas como referncias. Declarao dos elementos do XML A primeira e mais importante considerao na linguagem XML o conjunto de elementos. Cada elemento que voc for usar no documento XML deve ser declarado no DTD. Uma declarao de elemento faz duas coisas: adiciona um novo nome de elemento ao vocabulrio da linguagem e documenta qual o contedo desse elemento.

  • Juntos (novo elemento + contedo), criam uma gramtica para a linguagem, um padro para determinar quais elementos so vlidos. A figura abaixo ilustra a estrutura de uma declarao, que composta da String (fechamento/fim da declarao).

    O nome do elemento case-sensitive (o XML case-sensitive, lembra?). O elemento Casa diferente do elemento CASA ou casa. Por conveno, nome de elementos so sempre lowercase (letras minsculas). Um elemento XML pode conter cinco tipos diferentes de contedo: 1- Elementos vazios: a maneira mais simples de declarar um elemento vazio atravs da palavra-chave EMPTY. Exemplo: 2- Elementos que no contm restries de contedo: neste tipo de declarao, o elemento XML pode conter qualquer outro elemento. Neste caso, utilizada a palavra-chave ALL. Exemplo: claro que um elemento pode conter qualquer contedo limitado ao valor declarado no DTD, e neste tipo de modelo, no h controle da estrutura que um DTD mais rigoroso tem. Para rpida prototipao de documentos, este tipo pode ser interessante temporariamente. 3- Elementos que podem conter apenas dados do tipo texto (informao): Para elementos que apenas podem conter informao, mas no outros elementos, utiliza-se (#PCDATA), que significa parsed-character data. Isso significa que os caracteres sero verificados por um parser XML procura de referncias de entidades, e caso houver alguma, ento esta entidade ser substituda por seu valor correspondente. 4- Elementos que podem contem apenas outros elementos: para declarar elementos dentro de um outro elemento, utiliza-se uma notao especial, descrita na lista abaixo:

    , -> Descreve uma sentena obrigatria de elementos. Tambm funciona como operador E (AND). Exemplo: A,B significa que B deve vir depois de A. B seguido de A no permitido.

    | -> Descreve uma alternativa, funciona como o operador OU (OR). Exemplo: A|B|C significa que qualquer elemento aceitvel. Apenas uma opo permitida, voc deve escolher entre um dos trs elementos.

    () -> Agrupa o contedo. Voc pode usar a quantidade e parnteses que for preciso. Exemplo: (A|B), C significa que voc deve escolher entre A ou B, e este deve ser seguido por um C. Portanto, tanto A C e B C so permitidos.

    ? -> Descreve uma sentena opcional. Exemplo: A ? significa que voc pode escolher se vai usar ou no o elemento A.

    + -> Requere que pelo menos uma vez o elemento seja declarado, e no limite de quantas vezes este se repete. Exemplo: (A|B)+ significa que deve haver um nmero positivo e diferente de zero de As ou Bs. A sequncia ABBBAAA vlida.

    * -> Significa que o elemento pode aparecer vrias vezes, no tendo limite, e tambm opcional. Exemplo: (A|B)* significa que a sequncia pode ter tamanho zero e pode ter inmeros elementos A ou B.

    Exemplos:

  • 5- Elementos com contedo misto: contedo misto quando um elemento pode conter tanto elementos quanto informao. Um elemento desse tipo deve ser declarado como no exemplo abaixo:

    A palavra chave ELEMENT deve vir primeiro, seguido do nome do elemento, e aps este, a lista dos elementos permitidos e #PCDATA, separados por uma barra vertical ( | ), limitados por parnteses e finalmente, um asterisco ( * ). Declarao dos atributos Aps declarar os elementos, voc pode declarar os atributos. Para cada elemento, voc geralmente declara todos os seus atributos em apenas um lugar. A estrutura pode ser conferida na estrutura abaixo:

    A declarao dos atributos comeam com a string (7). Cada declarao de atributo consiste: no nome do atributo (4), seu repectivo valor (5), e a descrio do comportamento do atributo (6). A declarao de um atributo faz trs coisas: Primeiro, d um nome ao atributo. Segundo, especifica o tipo do atributo, ou uma possvel lista de valores que o atributo pode receber. E terceiro, descreve o comportamento do atributo: se existe um valor padro, ou se necessrio (obrigatrio) dar ao atributo um valor. Tipos de atributos: 1- CDATA (character data) Qualquer caracter pode ser usado, incluindo caracteres de entidades. Declarao: Exemplos: dimensoes=35x12x9 mm | expressao= 5 + 7 = 3 * 4 2- NMTOKEN (name token) Um name token uma sequncia de caracteres que comeam com uma letra e pode conter nmeros, letras e alguns caracteres de pontuao. Exemplo: Obs.: qualquer espao em branco (whitespace) removido pelo processador XML. 3- ID (unique identifier) Este tipo de atributo especial, pois fornece ao atributo a garantia de ser nico no documento. Dois elementos do XML no podem ter o mesmo valor de um atributo do tipo ID. Exemplo: 4- IDREF (identifier reference) Este tipo de atributo similar ao tipo ID, mas em vez do valor do atributo se referir ao elemento em questo, refere-se ao ID de outro elemento. Se no existir nenhum elemento com o ID referenciado, o parser mostrar um erro. Este tipo usado para fazer referncia a relacionamentos. Exemplo: 5- IDREFS (identifier reference list) Uma lista separada por um espao de valores de IDREF. Se no existir nenhum elemento com o ID referenciado, o parser mostrar um erro. Exemplo:

  • 6- ENTITY (nome de entidade) Este tipo aceita um nome de entidade como valor. Voc pode us-lo aps declarar uma entidade no DTD. Exemplo: E assim seria o uso: 7- ENTITIES (lista de nomes de entidades) O valor do atributo uma lista de nomes de entidades separados por um espao. Exemplo: 8- Lista de valores Enumerados Uma lista de valores enumerados uma lista com palavras-chave que voc define. Esse tipo de atributo util quando se tem um conjunto pequeno de possibilidades de valores. Na declarao, voc especifica a lista de valores cercada por parnteses, separados por barras verticais (|). Exemplo: Um atributo s pode ter um valor: 9- NOTATION (lista de notaes) O valor de um atributo do tipo notao consiste em uma sequncia de name tokens. Uma notao pode ser definida para preservar espaos em um elemento que normalmente seriam removidos pelo parser. Alm dos tipos descritos acima, os atributos tambm podem ter os seguintes comportamentos: - Valor padro (default) Se o usurio no colocar nenhum valor para determinado atributo, o processador XML assume o valor padro indicado no DTD. Especificar um valor padro para o atributo pode ser uma boa ideia se este valor o mais comum. - Atributo opcional Quando voc declara que um atributo pode ser opcional, o processador XML no atribui nenhum valor padro, o atributo fica ausente. - Atributo com valor obrigatrio O usurio deve fornecer um valor ao atributo, ou seja, o atributo no pode ser deixado em branco. - Atributo de valor fixo O usurio no pode modificar o valor desse atributo, esse tipo utilizado para momentos em que voc quer que o atributo sempre tenha o mesmo valor. Como visto, os atributos podem conter vrias particularidades e possuem bem mais detalhes que a declarao dos elementos. Por isso, voc no precisa fazer todas as declaraes de atributos para um elemento num s lugar. O XML permite que voc faa vrias declaraes para um mesmo elemento, e na hora da execuo feito um merge. Isso nos d certa flexibilidade na hora de customizar o DTD. Se voc quer adicionar declaraes de atributos para um elemento que j exista no DTD, voc pode criar uma nova declarao. Concluso Neste post apenas a teoria foi apresentada. No se preocupe, o prximo post ser um exemplo prtico de como construir um DTD.

  • Validao de documentos XML com DTD Introduo ao XML Parte VII 13/04/2009 | By Loiane | 2 Comments Agora que j sabemos como construir um DTD, vamos construir um, ou seja, mo na massa! O primeiro passo definir como vai ser nosso XML. Suponha que voc queira criar um XML que tenha as informaes de um cliente. Entre essas informaes, voc quer incluir o nome do cliente e os dados para contato. Ainda quebramos o nome do cliente em primeiro, meio e ltimo nome; e o contato em endereo e telefone. Ainda, quebramos o endereo em rua, numero, complemento, bairro, cidade, estado e cep. Tambm quebramos o telefone em residencial, comercial e celular. A figura abaixo representa o nosso modelo:

    Vamos ento declarar os elementos desse XML conforme foi visto neste post.

    O primeiro passo foi feito! Declaramos toda a rvore de elementos. Agora precisamos especificar o tipo dos elementos que no possuem outros elementos contidos nestes:

  • Pronto, j temos um DTD bsico formado. Vamos ento acrescentar alguns atributos aos elementos. O cliente ter um atributo id que ser sua identificao nica, alm da situao, que indica se um cliente ativo ou inativo (no mais cliente) e tambm tem como valor padro o valor ativo. O cliente tambm ter um atributo que indica em qual loja realizou a compra (So Paulo, Rio de Janeiro, Belo Horizonte, Vitria), mas como nossa aplicao apenas tratar cliente de So Paulo, o atributo sempre ter esse valor. O endereo ter um atributo que indica o tipo do endereo: residencial ou comercial. E ter tambm, um atributo que indica se aquele endereo o endereo para correspondncia. Observao: se um cliente tiver mais de um endereo, no necessrio indicar o atributo de correspondncia em todos, apenas no que for afirmativo. Acrescentando os atributos ao DTD:

    Vamos adicionar novas restries aos elementos agora: - O elemento meio opcional, afinal, uma pessoa pode no ter nome do meio; - Como j foi dito, um cliente pode possuir um ou mais endereos; - No necessrio preencher o campo complemento; - O cliente pode ter nenhum ou vrios nmeros de celular; - O cliente pode no ter um telefone comercial; Fazemos ento as alteraes e teremos o seguinte DTD, que o nosso DTD completo!

  • Prontinho! Agora vamos criar um XML que seja compatvel com nosso DTD. Abaixo, o XML mais simples que podemos gerar a partir do DTD criado:

    Ah, lembra que no post passado foi dito que um XML poderia ter um DTD embutido? Eis um exemplo bem simples:

    Concluso Vimos neste post como construir um DTD na prtica. No prximo post, vamos ver uma alternativa ao DTD, o XML Schema.

  • Validao de documentos XML com Schema Introduo ao XML Parte VIII 17/04/2009 | By Loiane | 11 Comments Vimos no post anterior como criar um DTD. Como a linguagem do DTD diferente do XML, algumas pessoas tm dificuldade de compreend-la. O XML Schema uma linguagem baseada na linguagem XML, e muito mais poderosa e muito mais precisa que o DTD. Com o XML Schema voc pode, alm de especificar a sintaxe (como no DTD), voc pode: especificar o tipo de dado de qualquer elemento, utilizar vrios namespaces, criar tipos de dados simples e complexos, especificar o nmero mnimo e o nmero mximo de vezes que um elemento pode aparecer no documento, criar tipo de listas, restringir os valores de um elemento, e muito mais. O objetivo deste post mostrar um overview dessa poderosa linguagem, que bem utilizada para validao de documentos XML. Bem, vamos considerar o XML abaixo como exemplo para o post:

    Existem diferentes maneiras de se ecrever um XML Schema. Vamos considerar a maneira que mais similar para quem j conhece a linguagem utilizada no DTD. Vamos comear com a declarao dos elementos e atributos que encontramos no XML acima. Os elementos que existem no XML de exemplo so:biblioteca, livro, isbn, titulo, autor, dataNascimento, falecimento, personagem, nome, caracteristica. E os atributos so: id, disponivel e ling. Antes de comearmos a definir o Schema, precisamos entender quais so os tipos de elementos que existem: empty (vazio) quando nenhum elemento filho ou texto so esperado, simple (simples) quando so aceitos apenas texto, complex (complexo) quando apenas subelementos so aceitos e mixed (misto) quando tanto texto quanto subelementos so aceitos. O XML Schema considera os elementos que tem apenas texto e nenhum atributo como tipo simples, enquanto todos os outros elementos so tipos complexos. Para definir um elemento, utilizamos um xs:element (definio), incluindo diretamente no elemento xs:schema do documento XML Schema:

  • O valor usado para referenciar o tipo do elemento (xs:string) possui como prefixo xs, que o prefixo associado com o W3C XML Schema. Vamos agora definir todos os tipos simples do XML utilizado como exemplo:

    Vamos agora definir o elemento titulo. Como este possui um atributo, um tipo complexo:

    Traduzindo o que foi escrito acima: o elementos titulo um tipo complexo que possui contedo simples obtido pela extenso do tipo pr-definido xs:string, e um atributo lang que j foi declarado no schema. Os outros elementos (biblioteca, livro, autor e personagem) so tipos complexos com contedos de tipos complexos. Estes elementos so definidos pela sequncia de elementos e atributos que os compe. O elemento biblioteca definido como:

    A definio acima pode ser lida como: o elemento biblioteca um tipo complexo composto por uma sequncia de 1 ou mais (maxOccurs) elementos livro. Agora vamos declarar o elemento autor, que possui um atributo que podemos considerar como uma data e opcional:

  • Isso significa que o elemento autor um tipo complexo composto de uma sequncia de trs elementos (nome, DataNascimnento e falecimento), alm do atributo id. O elemento falecimento opcional, pode ocorrer nenhuma vez (minOccurs=0). Os atributos precisam ser definidos ps a sequncia. Os outros elementos, como livro e personagem, podem ser definidos da mesma maneira. O nosso schema completo pode ser visto abaixo:

  • Concluso: Esse foi apenas um overview de como construir um XML Schema. Como o assunto muito extenso, se voc tiver curiosidade, pode acessar a especificao completa neste link:http://www.w3.org/XML/Schema Este foi o ltimo post sobre a introduo sobre XML. Os prximos post sero sobre como manipular um arquivo XML com Java e alguns frameworks.