SlideShare une entreprise Scribd logo
1  sur  66
Télécharger pour lire hors ligne
Mini Curso XML - FAESA




                XML Básico
Loiane Groner
Java Developer/IT Specialist
loianeg@br.ibm.com



 IBM Academic Initiative   16 Outubro 2009   © 2009 IBM
                                             Corporation
Mini Curso XML


Quem sou eu na IBM?




    IBM – Março de 2009
    IBM Hortolândia – Campinas - SP
    Analista de Sistemas + Desenvolvedora Java
    Projeto Internacional : Medco Account
    Team: USA + Brasil
    Tecnologias:J2EE, WebSphere, Spring, iBatis, ExtJS,
    JQuery, Oracle, Rational Application Developer (RAD).
    Academic Initiative Ambassador - Abril/2008

2          XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML


Agenda

    Fundamentos XML
    Documentos XML bem formados
    Validação de documentos XML com DTD e
    Schema
    Java e XML
    Manipulação com a API DOM
    Manipulação com a API SAX
    Frameworks para leitura e
    manipulação de arquivos XML


3        XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML - FAESA




  Fundamentos XML




IBM Academic Initiative   16 Outubro 2009   © 2009 IBM
                                            Corporation
Mini Curso XML



O que é XML?
    Extensible Markup Language (XML)
    –Linguagem de marcação de dados
    Descreve dados estruturados
    Definição Infinita de tags
    –Exemplo: pessoa, nome, endereço, telefone, etc




5        XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML



XML x HTML
    HTML: descreve aparência e ações
    XML: descreve o que representa




6        XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML



Estrutura de um documento XML (1/2)
    Tags, elementos, atributos
    Tag: “<“ + texto + “>”
    –Início: <nome> ; Fim: </nome>
    Elemento: <inicio> conteúdo </inicio>
    Atributos: par nome+valor na tag <inicio>
    –<inicio atributo=“valor”> conteúdo </inicio>
    Elemento: <inicio> conteúdo </inicio>
    Apenas um único elemento: elemento raiz


7        XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML



Estrutura de um documento XML (2/2)




8     XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML



Estrutura Árvore XML




9     XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML



Para que usar XML?
     Principal: compartilhamento de informações através da Internet
     Identificação da informação: você pode definir suas próprias tags
     Armazenamento de informação: XML é portável e não é proprietário
     Padrão internacional
     Estruturar informação: XML pode ser usado para identificar qualquer tipo
     (hierárquico) de estrutura
     Publicação: combinando os últimos três tópicos (identificação,
     armazenamento e estruturação) significa que podemos utilizar o XML para
     publicá-lo na Web
     Mensagens e tranferência de dados
     Simplificação da mudança de plataforma
     Web Services: o XML é usado para gestão da informação e transmissão

10            XML Básico – FAESA – 16-out-2009 | Confidencial       © 2009 IBM Corporation
Mini Curso XML



Por que usar XML?
     É recomendado pelo W3C (World Wide Web Consortium);
     É padrão aberto, você não precisa pagar nada para usar
     Existem várias ferramentas e editores bons no mercado, e o melhor: free
     Simplicidade e Legibilidade, tanto para humanos quanto para
     computadores
     Separação do conteúdo da formatação
     Concentração na estrutura da informação, e não na sua aparência
     Possibilidade de criar sua própria sintaxe de dados
     Possui suporte a Unicode, permitindo que praticamente qualquer
     informação escrita em língua humana possa ser transmitida
     Permite validação, o que torna os teste unitários mais efetivos, e a
     construção de aplicações bem mais fácil

11            XML Básico – FAESA – 16-out-2009 | Confidencial        © 2009 IBM Corporation
Mini Curso XML



Quando não usar XML? (1/2)
     A sintaxe do XML é redundante ou torna-se grande em
     relação a representações de dados semelhantes
     A redundância pode afetar a eficiência quando utiliza-se o
     XML para armazenamento, afetando também transmissão e
     processamento, os custos ficam muito mais elevados
     Resumindo: em muitas situações, o XML pode ser
     substituído por documentos com formatos mais simples,
     como os arquivos properties ou texto. A grande quantidade
     de informação repetida pode prejudicar a velocidade de
     transferência real da informação (se estiver em formato
     XML)



12          XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML




     Criando um documento XML




13    XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML


Partes de um XML

     Declaração XML
     Prólogo
     Instruções de processamento
     Elementos e atributos
     Comentários
     Entidades
     Seções CDATA




14      XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML


Declaração XML
       A declaração XML utiliza o elemento <?xml?>. Se utilizar
       <?XML?> terá um erro de validação.
     <?xml version="1.0" encoding="UTF-8" standalone="yes"?>

       Existem três atributos que podem ser usados na declaração:

       - Version – é a versão do XML, que pode ser 1.0 ou 1.1. Este
       atributo é obrigatório se você usar a declaração XML;
       - Enconding – é a linguagem de codificação do documento. O
       padrão é UTF-8. Este atributo é opcional.
       - Standalone – os valores possíveis são “yes” ou “no”. Use “yes”
       se o documento não faz referência a documentos externos ou
       entidades. Use “no” caso contrário. Este atributo é opcional.



15          XML Básico – FAESA – 16-out-2009 | Confidencial       © 2009 IBM Corporation
Mini Curso XML


Comentários


     <?xml version="1.0" encoding="UTF-8"?>
     <!-- Aqui começa o email -->
     <mensagem>
       <!-- quem enviou a mensagem -->
       <de>alguém</de>
       <para>outra pessoa</para>
       <!-- tag assunto foi comentada -->
       <!--
       <assunto>digite o assunto</assunto>
       -->
       <texto>abcdefghijk</texto>
     </mensagem>




16       XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML


Instruções de Processamento
     O XML permite que você utilize instruções especiais para passar
     informação para os programas que possam ler o documento
     XML. Uma instrução de processamento comença com “<?” e
     termina com “?>“. A única restrição é que você não pode usar
     <?xml?> ou <?XML?> (que também é reservado).

     No exemplo abaixo, a instrução de processamento é para o
     Cocoon, um framework da Apache que é focado em publicação
     XML. Quando o Cocoon está processando um XML, procura por
     instruções que comecem com cocoon-process, então processa o
     XML de acordo com esta instrução. O atributo type=”sql” indica
     que o documento XML contém uma instrução SQL.

      <?cocoon-process type="sql"?>


17        XML Básico – FAESA – 16-out-2009 | Confidencial     © 2009 IBM Corporation
Mini Curso XML


Prólogo
     O prólogo aparece no início de um documetno XML, e contém
     informações sobre o restante do documento. Um prólogo pode
     conter uma declaração XML, comentários (que descreve o
     documento), instruções de processamento, e declarações de tipo
     de documento (DTD).

     O XML abaixo exemplifica um prólogo contendo uma declaração
     XML, comentário, uma instrução de processamento e um DTD
     (no elemento <!DOCTYPE>).

     <?xml version="1.0" encoding="UTF-8"?>
     <!-- comentário -->
     <?comando tipo="simples" ?>
     <!DOCTYPE mensagem SYSTEM "prologo.dtd">
     <mensagem>mensagem</mensagem>



18        XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML


Entidades (1/2)
     As entidades são constantes associadas a um valor de texto. São
     substituídas durante o processamento do documento XML. Por
     exemplo, se o texto “XML é legal” for aparecer em várias partes
     do documento podemos criar uma entidade assim:
     <!ENTITY legal " XML é legal ">

     Após a criação desta entidade, se quiser usar essa frase no
     documento XML, basta substituir por &legal.
     Também existem algumas entidades pré-definidas. O XML
     possui alguns caracteres especiais, que podem até gerar conflito
     com o conteúdo do documento. Por exemplo, suponha que você
     queria utilizar a fórmula “x < y”. No XML, a fórmula ficaria assim:

     <formula>x < y</formula>


19        XML Básico – FAESA – 16-out-2009 | Confidencial        © 2009 IBM Corporation
Mini Curso XML


Entidade (2/2)
      Observe que a leitura não ficou muito legível. O que está confundindo a
      leitura é o carácter “<”, já que as tags são identificadas por este
      também. Para evitar essa confusão, podemos utilizar uma entidade pré-
      definida. O XML escrito corretamente com a entidade fica assim:
     <formula>x &lt y</formula>
      A listagem abaixo contém as entidades pré-definidas:

        * &lt; que corresponde a <
        * &gt; que corresponde a >
        * &amp; que corresponde a &
        * &quot; que corresponde a “
        * &apos; que corresponde a ‘

      Alguns documentos XML possuem caracteres não usuais,
      especialmente os documentos que possuem conteúdo científico ou
      matemático. Se quisermos inserir o símbolo Π (pi), devemos fazer
      referência ao seu código no Unicode, como abaixo:
     <PI>&#227;</PI>

20         XML Básico – FAESA – 16-out-2009 | Confidencial           © 2009 IBM Corporation
Mini Curso XML


CDATA (1/2)
     A seção CDATA serve para prevenir o processamento de uma
     porção de conteúdo. Tudo o que está nessa seção não será
     processado pelo parser.

     <?xml version="1.0" encoding="UTF-8"?>
     <documentoXML>
        <titulo>Este é o conteúdo do XML de exemplo</titulo>
        <conteudo>
            <![CDATA[<contato>
                <nome>Maria</nome>
                <telefone>99999999</telefone>
            </contato>
            ]]>
        </conteudo>
     </documentoXML>




21       XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML


CDATA (2/2)
     <?xml version="1.0" encoding="UTF-8"?>
     <documentoXML>
        <titulo>Este é o conteúdo do XML de exemplo</titulo>
        <conteudo>
            <![CDATA[<contato>
                <nome>Maria</nome>
                <telefone>99999999</telefone>
            </contato>
            ]]>
        </conteudo>
     </documentoXML>




22          XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML


Tags e Atributos
     A especificação XML é bem específica em relação ao nome das
     tags. Você pode começar uma tag com uma letra, underscore (_)
     ou dois pontos (:). Os próximos caracteres podem ser letras,
     dígitos, underscore, hífen, e dois pontos. Espaço não é permitido.
     Exemplo de tags que são permitidas:

     <documento>
     <_documento>
     <documento01>
     <documento-01>

     <2documento>
     <.documento>
     <numero documento>
     <numero*documento>
     <DOCUMENTO(ID)>
     < 2009>



23        XML Básico – FAESA – 16-out-2009 | Confidencial       © 2009 IBM Corporation
Mini Curso XML




     Documento XML bem formado




24    XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML


O documento XML deve começar com uma declaração
XML



     <!-- Não é permitido! -->
     <?xml version="1.0" encoding="UTF-8"?>




25      XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML


O Elemento Raiz deve conter todos os outros elementos




                <mensagem>Olá!</mensagem>
                <mensagem>Hello!</mensagem>




26      XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML


O documento XML deve ter pelo menos 1 elemento




             <mensagem>Olá!</mensagem
             >




27      XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML


Elementos devem ter tags inicial e final


     <mensagem>
       <frase>Olá Mundo!
     </mensagem>



     <mensagem>
       <frase>Olá Mundo!</frase>
       <frase/>
     </mensagem>




28      XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML


As tags são case-sensitive




     <b>As tags são case sensitive!</B>




29     XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML


Elementos não podem se sobrepor


     <mensagem>
       Mensagem de
       <saudacao>Saudacao
     </mensagem>
     </saudacao>




     <mensagem>
       Mensagem de
       <saudacao>Saudacao</saudacao>
     </mensagem>



30      XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML


Os atributos devem estar entre aspas



     <mensagem id>Olá!</mensagem>



     <documento>
       <mensagem id="01">Olá</mensagem>
       <mensagem id='02'>Mundo!</mensagem>
     </documento>




31      XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML


Os atributos devem ser únicos



     <mensagem id="01"
     id="txt">Olá</mensagem>


     <mensagem id="01" ID="02" iD="03"
     Id="04">
       Olá
     </mensagem>




32       XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML


Utilize < e & apenas para iniciar uma tag e entidade

     Os processadores XML sempre assumem que o carácter < inicia
     uma tag e que o carácter & inicia uma referência 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 dão importância a esses
     caracteres.




33        XML Básico – FAESA – 16-out-2009 | Confidencial     © 2009 IBM Corporation
Mini Curso XML




     Validação de documentos XML




34     XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML


O que é modelar um documento XML?




35    XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML


Como saber se eu preciso criar um documento que
especifica o modelo do meu XML?
     Os documentos XML são escritos por pessoas (ou uma
     aplicação) e são usados como dados para outros aplicativos.
     Quando você restringe, cria uma padrão, escrever um programa
     que vai consumir aquele XML fica muito mais fácil e reduz
     bastante a possibilidade de erros.
     Seu documento XML deve ter alguns campos obrigatórios. Por
     exemplo, um email precisa ter um destinatário, se não tiver, como
     você vai enviar a mensagem?
     Você solicita um XML a pessoas que não estão familiarizadas
     com a estrutura do XML. Como o modelo é um documento, você
     pode torná-lo público, e essas pessoas poderão fazer o
     download. Um modelo de documento XML também pode ser
     utilizado em editores de XML (serve de guia, pois contém a lista
     dos elementos apropriados, e que podem ser usados para
     construir o XML).


36        XML Básico – FAESA – 16-out-2009 | Confidencial      © 2009 IBM Corporation
Mini Curso XML


E se eu não quiser usar um documento que especifique o
conteúdo do meu XML?
     Vocabulário ilimitado: você pode utilizar qualquer nome para seus
     elementos.
     Sem regras de gramática: um elemento pode conter qualquer
     coisa: conteúdo misto, elementos, texto, ou pode ser vazio.
     Sem restrições aos atributos: qualquer elemento pode conter
     qualquer atributo.




37        XML Básico – FAESA – 16-out-2009 | Confidencial      © 2009 IBM Corporation
Mini Curso XML


Como criar o modelo?

     DTD
     Schema




38     XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML




     Validação de documentos XML
                  DTD




39     XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML


Sintaxe
     Declaração de um conjunto de elementos. Você não pode utilizar
     outros elementos que não estejam definidos neste conjunto.
     Imagine como se fosse o vocabulário do XML.
     Definição do conteúdo para cada elemento. A definição de
     conteúdo é um padrão que nos diz quais os elementos ou dados
     que aquele determinado elemento XML pode conter, em qual
     ordem, quantidade e se é opcional ou obrigatório. Imagine como
     se fosse a gramática do XML.
     Declaração de um conjunto de atributos para cada elemento.
     Cada declaração de atributo define o nome, tipo (datatype),
     valores padrões (se aplicável), e comportamento (obrigatório ou
     opcional).




40        XML Básico – FAESA – 16-out-2009 | Confidencial    © 2009 IBM Corporation
Mini Curso XML


Estrutura




41      XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML


Elementos do DTD (1/2)
     1- Elementos vazios: a maneira mais simples de declarar um
     elemento vazio é através da palavra-chave EMPTY. Exemplo:
     <!ELEMENT grafico EMPTY>
     2- Elementos que não contém restrições de conteúdo: neste tipo
     de declaração, o elemento XML pode conter qualquer outro
     elemento. Exemplo: <!ELEMENT contem_qualquer_coisa ALL>
     3- Elementos que podem conter apenas dados do tipo texto
     (informação): Para elementos que apenas podem conter
     informação, mas não outros elementos, utiliza-se (#PCDATA),
     que significa “parsed-character data”. Isso significa que os
     caracteres serão verificados por um parser XML à procura de
     referências de entidades, e caso houver alguma, então esta
     entidade será substituída por seu valor correspondente.



42        XML Básico – FAESA – 16-out-2009 | Confidencial    © 2009 IBM Corporation
Mini Curso XML


Elementos do DTD (2/2)
       4- Elementos que podem contem apenas outros elementos:

      - , -> Descreve uma sentença obrigatória de elementos. Também funciona como
         operador E (AND). Exemplo: A,B significa que B deve vir depois de A. B
         seguido de A não é permitido.
     - | -> Descreve uma alternativa, funciona como o operador OU (OR). Exemplo:
         A|B|C significa que qualquer elemento é aceitável. Apenas uma opção é
         permitida, você deve escolher entre um dos três elementos.
     - (…) -> Agrupa o conteúdo. Você pode usar a quantidade e parênteses 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 são permitidos.
     - ? -> Descreve uma sentença opcional. Exemplo: A ? significa que você pode
         escolher se vai usar ou não o elemento A.
     - + -> Requere que pelo menos uma vez o elemento seja declarado, e não limite
         de quantas vezes este se repete. Exemplo: (A|B)+ significa que deve haver um
         número positivo e diferente de zero de As ou Bs. A sequência ABBBAAA é
         válida.
     - * -> Significa que o elemento pode aparecer várias vezes, não tendo limite, e
         também é opcional. Exemplo: (A|B)* significa que a sequência pode ter tamanho
         zero e pode ter inúmeros elementos A ou B.

43            XML Básico – FAESA – 16-out-2009 | Confidencial                   © 2009 IBM Corporation
Mini Curso XML


Atributos DTD (1/3)
     1- CDATA (character data)
     Qualquer caracter pode ser usado, incluindo caracteres de entidades.
     Declaração: <!ATTLIST circulo raio CDATA “12 cm”>
     Exemplos: dimensoes=”35×12x9 mm” | expressao=” 5 + 7 = 3 * 4 “
     2- NMTOKEN (name token)
     Um name token é uma sequência de caracteres que começam com
     uma letra e pode conter números, letras e alguns caracteres de
     pontuação.
     Exemplo: <!ATTLIST parte numero NMTOKEN #REQUIRED>
     Obs.: qualquer espaço 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 não podem ter o
     mesmo valor de um atributo do tipo ID.
     Exemplo: <!ATTLIST nome_id ID #REQUIRED>


44         XML Básico – FAESA – 16-out-2009 | Confidencial              © 2009 IBM Corporation
Mini Curso XML


Atributos DTD (2/3)
     4- IDREF (identifier reference)
     Este tipo de atributo é similar ao tipo ID, mas em vez do valor do
     atributo se referir ao elemento em questão, refere-se ao ID de outro
     elemento. Se não existir nenhum elemento com o ID referenciado, o
     parser mostrará um erro. Este tipo é usado para fazer referência a
     relacionamentos.
     Exemplo: <!ATTLIST relacionamento cliente ref IDREF #REQUIRED>
     5- IDREFS (identifier reference list)
     Uma lista separada por um espaço de valores de IDREF. Se não existir
     nenhum elemento com o ID referenciado, o parser mostrará um erro.
     Exemplo: <!ATTLIST boxdvd refs IDREFS #REQUIRED>
     6- ENTITY (nome de entidade)
     Este tipo aceita um nome de entidade como valor. Você pode usá-lo
     após declarar uma entidade no DTD.
     Exemplo: <!ATTLIST bulletlist icon ENTITY #IMPLIED>
     <!ENTITY bluedot SYSTEM “icons/bluedot.png”>


45        XML Básico – FAESA – 16-out-2009 | Confidencial         © 2009 IBM Corporation
Mini Curso XML


Atributos DTD (3/3)
     7- ENTITIES (lista de nomes de entidades)
     O valor do atributo é uma lista de nomes de entidades separados por
     um espaço.
     Exemplo: <!ATTLIST album filelist ENTITIES #REQUIRED>
     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 declaração, você especifica a
     lista de valores cercada por parênteses, separados por barras verticais
     (|).
     Exemplo: <!ATTLIST cliente genero ( F | M ) #IMPLIED>
     Um atributo só pode ter um valor: <cliente genero=”F”>
     9- NOTATION (lista de notações)
     O valor de um atributo do tipo notação consiste em uma sequência de
     name tokens.
     Uma notação pode ser definida para preservar espaços em um
     elemento que normalmente seriam removidos pelo parser.


46        XML Básico – FAESA – 16-out-2009 | Confidencial           © 2009 IBM Corporation
Mini Curso XML


Hands On




47    XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML




     Validação de documentos XML
                Schema




48     XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML


Hands On




49    XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML




                             Java e XML




50   XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML




51   XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML




                                         DOM




52   XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML


Mapa DOM




53   XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML


Interfaces Principais




54      XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML


Exemplo




55    XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML


Hands On
     Vamos ver código!




56       XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML




                                          SAX




57   XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML


Eventos
     startDocument() -Indica que o parser achou o início do
     documento XML. Este evento não lhe passa qualquer
     informação, apenas indica que o parser vai começar a escanear
     o arquivo XML.
     endDocument() – Indica que o parser achou e fim do documento
     XML.
     startElement(…) – Indica que o parser achou o início de uma tag
     (tag de abertura/início). Este evento fornece o nome do
     elemento, o nome e valor dos atributos deste elemento, e
     também pode fornecer as informações sobre o namespace.
     characters(…) – Indica que o parser achou algum Texto
     (Informação).
     endElement(…) -Indica que o parser achou o fim de uma
     tag/elemento. Este evento fornece o nome do elemento


58        XML Básico – FAESA – 16-out-2009 | Confidencial     © 2009 IBM Corporation
Mini Curso XML


Exemplo
     statDocument()
     startElement chamado com name=”exemplo” e attrib contendo
     um único valor para id
     startElement chamado com name=”no_de_texto”
     characters chamado uma ou mais vezes com o conteúdo “Olá
     mundo”
     endElement chamado com name=”no_de_texto”
     endElement chamado com name=”exemplo”
     endDocument()




59      XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML


Hands On




60    XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML




                            Frameworks




61   XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML


Alguns Frameworks
     XStream
     Xml Beans
     Digester
     Xerces/Xalan
     DOM4J
     Castor Project
     JiBX

     Abstraem toda a parte “manual” da leitura DOM/SAX




62        XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML




                                  E agora?




63   XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML


Referência dos projetos/arquivos
     Os arquivos apresentados neste mini-curso estão hospedados no GitHub:

       Validação de documentos XML com DTD – http://github.com/loiane/DTD

       Validaçao de documentos XML com Schema –
       http://github.com/loiane/Xml-Schema

       Leitura arquivos XML em Java com a API DOM –
       http://github.com/loiane/ManipulacaoXMLComDOM

       Manipulação arquivos XML em Java com a API DOM –
       http://github.com/loiane/ModificacaoXMLComDOM

       Leitura arquivos XML em Java com a API SAX –
       http://github.com/loiane/ManipulacaoXMLComSAX



64          XML Básico – FAESA – 16-out-2009 | Confidencial        © 2009 IBM Corporation
Mini Curso XML




                              OBRIGADO!!


65   XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation
Mini Curso XML


Contato

     Email: loianeg@gmail.com
     Office: loianeg@br.ibm.com
     Msn/Gtalk (raro): loianeg@gmail.com
     Twitter: @loiane
     Wave: loianeg@googlewave.com
     Blog: http://www.loiane.com




66        XML Básico – FAESA – 16-out-2009 | Confidencial   © 2009 IBM Corporation

Contenu connexe

Tendances

Tendances (19)

Xml Ws
Xml WsXml Ws
Xml Ws
 
Aula Introdução a Linguagem XML
Aula Introdução a Linguagem XMLAula Introdução a Linguagem XML
Aula Introdução a Linguagem XML
 
XML, Webservice e RSS
XML, Webservice e RSSXML, Webservice e RSS
XML, Webservice e RSS
 
Posxml especification 2.0
Posxml especification 2.0Posxml especification 2.0
Posxml especification 2.0
 
02 - Apresentação de dados em XML com XSL e HTML
02 - Apresentação de dados em XML com XSL e HTML02 - Apresentação de dados em XML com XSL e HTML
02 - Apresentação de dados em XML com XSL e HTML
 
Apostila XML, DTD, XSD e XSLT
Apostila XML, DTD, XSD e XSLTApostila XML, DTD, XSD e XSLT
Apostila XML, DTD, XSD e XSLT
 
Introdução ao XML
Introdução ao XMLIntrodução ao XML
Introdução ao XML
 
Tp 4 xml
Tp 4   xmlTp 4   xml
Tp 4 xml
 
Html5 & CSS3
Html5 & CSS3Html5 & CSS3
Html5 & CSS3
 
XML: Uma Introdução Prática (2001)
XML: Uma Introdução Prática (2001)XML: Uma Introdução Prática (2001)
XML: Uma Introdução Prática (2001)
 
XML e Banco de Dados XML Nativo
XML e Banco de Dados XML NativoXML e Banco de Dados XML Nativo
XML e Banco de Dados XML Nativo
 
XML - Parte 1
XML - Parte 1XML - Parte 1
XML - Parte 1
 
XML - Introdução
XML - IntroduçãoXML - Introdução
XML - Introdução
 
Intro xml file
Intro xml fileIntro xml file
Intro xml file
 
A e xtensible markup language (xml)
A e xtensible markup language (xml)A e xtensible markup language (xml)
A e xtensible markup language (xml)
 
Curso html basico_aula-001
Curso html basico_aula-001Curso html basico_aula-001
Curso html basico_aula-001
 
Aplicando Transformação em XML usando XSLT e XSL-FO - 4
Aplicando Transformação em XML usando XSLT e XSL-FO - 4Aplicando Transformação em XML usando XSLT e XSL-FO - 4
Aplicando Transformação em XML usando XSLT e XSL-FO - 4
 
Codificações basicas em HTML e XML
Codificações basicas em HTML e XMLCodificações basicas em HTML e XML
Codificações basicas em HTML e XML
 
Html5 aula 02
Html5 aula 02Html5 aula 02
Html5 aula 02
 

En vedette

Javaone Brazil 2012: Integrando Ext JS 4 com Java EE
Javaone Brazil 2012: Integrando Ext JS 4 com Java EEJavaone Brazil 2012: Integrando Ext JS 4 com Java EE
Javaone Brazil 2012: Integrando Ext JS 4 com Java EELoiane Groner
 
MNT2014: Mobile Hibrido com Phonegap
MNT2014: Mobile Hibrido com PhonegapMNT2014: Mobile Hibrido com Phonegap
MNT2014: Mobile Hibrido com PhonegapLoiane Groner
 
DevInCachu 2012 LT: Ext Gwt 3: GXT 3
DevInCachu 2012 LT: Ext Gwt 3: GXT 3DevInCachu 2012 LT: Ext Gwt 3: GXT 3
DevInCachu 2012 LT: Ext Gwt 3: GXT 3Loiane Groner
 
QConSP 2012: CSS3 com Sass e Compass
QConSP 2012: CSS3 com Sass e CompassQConSP 2012: CSS3 com Sass e Compass
QConSP 2012: CSS3 com Sass e CompassLoiane Groner
 
School of Net Webinar: ExtJS 4
School of Net Webinar: ExtJS 4School of Net Webinar: ExtJS 4
School of Net Webinar: ExtJS 4Loiane Groner
 
Conexao Java 2012: Desenvolvendo RIA com Java e Ext GWT (GXT)
Conexao Java 2012: Desenvolvendo RIA com Java e Ext GWT (GXT) Conexao Java 2012: Desenvolvendo RIA com Java e Ext GWT (GXT)
Conexao Java 2012: Desenvolvendo RIA com Java e Ext GWT (GXT) Loiane Groner
 
Linguagil 2012: Desenvolvendo Aplicações RIA com Ext JS 4 e Touch 2
Linguagil 2012: Desenvolvendo Aplicações RIA com  Ext JS 4 e Touch 2Linguagil 2012: Desenvolvendo Aplicações RIA com  Ext JS 4 e Touch 2
Linguagil 2012: Desenvolvendo Aplicações RIA com Ext JS 4 e Touch 2Loiane Groner
 
JavaCE Conference 2012: ExtJS 4 + VRaptor
JavaCE Conference 2012: ExtJS 4 + VRaptorJavaCE Conference 2012: ExtJS 4 + VRaptor
JavaCE Conference 2012: ExtJS 4 + VRaptorLoiane Groner
 
Justjava 2012: REST Com Jax-RS e ExtJS 4
Justjava 2012: REST Com Jax-RS e ExtJS 4Justjava 2012: REST Com Jax-RS e ExtJS 4
Justjava 2012: REST Com Jax-RS e ExtJS 4Loiane Groner
 
Ext JS 4 em 5 Minutos - QCONSP 2011
Ext JS 4 em 5 Minutos - QCONSP 2011Ext JS 4 em 5 Minutos - QCONSP 2011
Ext JS 4 em 5 Minutos - QCONSP 2011Loiane Groner
 
Cafe com Tom - ExtJS 4
Cafe com Tom - ExtJS 4Cafe com Tom - ExtJS 4
Cafe com Tom - ExtJS 4Loiane Groner
 
JavaCE Conference - Ext GWT - GXT 3
JavaCE Conference - Ext GWT - GXT 3JavaCE Conference - Ext GWT - GXT 3
JavaCE Conference - Ext GWT - GXT 3Loiane Groner
 
DevInCachu 2012: Desenvolvendo Aplicacoes RIA com ExtJS 4 e Sencha Touch 2
DevInCachu 2012: Desenvolvendo Aplicacoes RIA com ExtJS 4 e Sencha Touch 2DevInCachu 2012: Desenvolvendo Aplicacoes RIA com ExtJS 4 e Sencha Touch 2
DevInCachu 2012: Desenvolvendo Aplicacoes RIA com ExtJS 4 e Sencha Touch 2Loiane Groner
 
TDC2013: ExtJS 4: Dicas e Melhores Practicas
TDC2013: ExtJS 4: Dicas e Melhores PracticasTDC2013: ExtJS 4: Dicas e Melhores Practicas
TDC2013: ExtJS 4: Dicas e Melhores PracticasLoiane Groner
 
FAESA Computação Móvel: Introducao a Phonegap e Cordova
FAESA Computação Móvel: Introducao a Phonegap e CordovaFAESA Computação Móvel: Introducao a Phonegap e Cordova
FAESA Computação Móvel: Introducao a Phonegap e CordovaLoiane Groner
 
FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas
FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridasFrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas
FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridasLoiane Groner
 
JavaOne Brazil 2011: Jax-RS e Ext JS 4
JavaOne Brazil 2011: Jax-RS e Ext JS 4JavaOne Brazil 2011: Jax-RS e Ext JS 4
JavaOne Brazil 2011: Jax-RS e Ext JS 4Loiane Groner
 
TDC2013: Arquitetura de apps com Sencha Touch 2
TDC2013: Arquitetura de apps com Sencha Touch 2TDC2013: Arquitetura de apps com Sencha Touch 2
TDC2013: Arquitetura de apps com Sencha Touch 2Loiane Groner
 
MobileConf 2015: Desmistificando o Phonegap (Cordova)
MobileConf 2015: Desmistificando o Phonegap (Cordova)MobileConf 2015: Desmistificando o Phonegap (Cordova)
MobileConf 2015: Desmistificando o Phonegap (Cordova)Loiane Groner
 

En vedette (20)

Javaone Brazil 2012: Integrando Ext JS 4 com Java EE
Javaone Brazil 2012: Integrando Ext JS 4 com Java EEJavaone Brazil 2012: Integrando Ext JS 4 com Java EE
Javaone Brazil 2012: Integrando Ext JS 4 com Java EE
 
MNT2014: Mobile Hibrido com Phonegap
MNT2014: Mobile Hibrido com PhonegapMNT2014: Mobile Hibrido com Phonegap
MNT2014: Mobile Hibrido com Phonegap
 
TDC 2011 - Ext JS 4
TDC 2011 - Ext JS 4TDC 2011 - Ext JS 4
TDC 2011 - Ext JS 4
 
DevInCachu 2012 LT: Ext Gwt 3: GXT 3
DevInCachu 2012 LT: Ext Gwt 3: GXT 3DevInCachu 2012 LT: Ext Gwt 3: GXT 3
DevInCachu 2012 LT: Ext Gwt 3: GXT 3
 
QConSP 2012: CSS3 com Sass e Compass
QConSP 2012: CSS3 com Sass e CompassQConSP 2012: CSS3 com Sass e Compass
QConSP 2012: CSS3 com Sass e Compass
 
School of Net Webinar: ExtJS 4
School of Net Webinar: ExtJS 4School of Net Webinar: ExtJS 4
School of Net Webinar: ExtJS 4
 
Conexao Java 2012: Desenvolvendo RIA com Java e Ext GWT (GXT)
Conexao Java 2012: Desenvolvendo RIA com Java e Ext GWT (GXT) Conexao Java 2012: Desenvolvendo RIA com Java e Ext GWT (GXT)
Conexao Java 2012: Desenvolvendo RIA com Java e Ext GWT (GXT)
 
Linguagil 2012: Desenvolvendo Aplicações RIA com Ext JS 4 e Touch 2
Linguagil 2012: Desenvolvendo Aplicações RIA com  Ext JS 4 e Touch 2Linguagil 2012: Desenvolvendo Aplicações RIA com  Ext JS 4 e Touch 2
Linguagil 2012: Desenvolvendo Aplicações RIA com Ext JS 4 e Touch 2
 
JavaCE Conference 2012: ExtJS 4 + VRaptor
JavaCE Conference 2012: ExtJS 4 + VRaptorJavaCE Conference 2012: ExtJS 4 + VRaptor
JavaCE Conference 2012: ExtJS 4 + VRaptor
 
Justjava 2012: REST Com Jax-RS e ExtJS 4
Justjava 2012: REST Com Jax-RS e ExtJS 4Justjava 2012: REST Com Jax-RS e ExtJS 4
Justjava 2012: REST Com Jax-RS e ExtJS 4
 
Ext JS 4 em 5 Minutos - QCONSP 2011
Ext JS 4 em 5 Minutos - QCONSP 2011Ext JS 4 em 5 Minutos - QCONSP 2011
Ext JS 4 em 5 Minutos - QCONSP 2011
 
Cafe com Tom - ExtJS 4
Cafe com Tom - ExtJS 4Cafe com Tom - ExtJS 4
Cafe com Tom - ExtJS 4
 
JavaCE Conference - Ext GWT - GXT 3
JavaCE Conference - Ext GWT - GXT 3JavaCE Conference - Ext GWT - GXT 3
JavaCE Conference - Ext GWT - GXT 3
 
DevInCachu 2012: Desenvolvendo Aplicacoes RIA com ExtJS 4 e Sencha Touch 2
DevInCachu 2012: Desenvolvendo Aplicacoes RIA com ExtJS 4 e Sencha Touch 2DevInCachu 2012: Desenvolvendo Aplicacoes RIA com ExtJS 4 e Sencha Touch 2
DevInCachu 2012: Desenvolvendo Aplicacoes RIA com ExtJS 4 e Sencha Touch 2
 
TDC2013: ExtJS 4: Dicas e Melhores Practicas
TDC2013: ExtJS 4: Dicas e Melhores PracticasTDC2013: ExtJS 4: Dicas e Melhores Practicas
TDC2013: ExtJS 4: Dicas e Melhores Practicas
 
FAESA Computação Móvel: Introducao a Phonegap e Cordova
FAESA Computação Móvel: Introducao a Phonegap e CordovaFAESA Computação Móvel: Introducao a Phonegap e Cordova
FAESA Computação Móvel: Introducao a Phonegap e Cordova
 
FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas
FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridasFrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas
FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas
 
JavaOne Brazil 2011: Jax-RS e Ext JS 4
JavaOne Brazil 2011: Jax-RS e Ext JS 4JavaOne Brazil 2011: Jax-RS e Ext JS 4
JavaOne Brazil 2011: Jax-RS e Ext JS 4
 
TDC2013: Arquitetura de apps com Sencha Touch 2
TDC2013: Arquitetura de apps com Sencha Touch 2TDC2013: Arquitetura de apps com Sencha Touch 2
TDC2013: Arquitetura de apps com Sencha Touch 2
 
MobileConf 2015: Desmistificando o Phonegap (Cordova)
MobileConf 2015: Desmistificando o Phonegap (Cordova)MobileConf 2015: Desmistificando o Phonegap (Cordova)
MobileConf 2015: Desmistificando o Phonegap (Cordova)
 

Similaire à Curso XML - IBM Academic Initiative

Similaire à Curso XML - IBM Academic Initiative (20)

XML
XMLXML
XML
 
Java e XML
Java e XMLJava e XML
Java e XML
 
Apostila xml
Apostila xmlApostila xml
Apostila xml
 
Parte5 xml
Parte5 xmlParte5 xml
Parte5 xml
 
Community Launch 2010 RJ
Community Launch 2010 RJCommunity Launch 2010 RJ
Community Launch 2010 RJ
 
HTML HardCore Parte 2 - XHTML
HTML HardCore Parte 2 - XHTMLHTML HardCore Parte 2 - XHTML
HTML HardCore Parte 2 - XHTML
 
Overview Office Business Application
Overview Office Business ApplicationOverview Office Business Application
Overview Office Business Application
 
Oracle XML DB
Oracle XML DBOracle XML DB
Oracle XML DB
 
XML_WS.pdf
XML_WS.pdfXML_WS.pdf
XML_WS.pdf
 
Qual integration framework você deve usar parte 1
Qual integration framework você deve usar parte 1Qual integration framework você deve usar parte 1
Qual integration framework você deve usar parte 1
 
Webservices
WebservicesWebservices
Webservices
 
15
1515
15
 
Xml
XmlXml
Xml
 
Banco de Dados XML
Banco de Dados XMLBanco de Dados XML
Banco de Dados XML
 
Xhtml
XhtmlXhtml
Xhtml
 
Introdução ao Desenvolvimento front-end (2019)
Introdução ao Desenvolvimento front-end (2019)Introdução ao Desenvolvimento front-end (2019)
Introdução ao Desenvolvimento front-end (2019)
 
Monografia CEI-ES0326-T14-2008-1 - Wellington Gomes de Vasconcelos
Monografia CEI-ES0326-T14-2008-1 - Wellington Gomes de VasconcelosMonografia CEI-ES0326-T14-2008-1 - Wellington Gomes de Vasconcelos
Monografia CEI-ES0326-T14-2008-1 - Wellington Gomes de Vasconcelos
 
Aplicando Transformação em XML usando XSLT e XSL-FO - 3
Aplicando Transformação em XML usando XSLT e XSL-FO - 3Aplicando Transformação em XML usando XSLT e XSL-FO - 3
Aplicando Transformação em XML usando XSLT e XSL-FO - 3
 
Entendendo Frameworks web com Python
Entendendo Frameworks web com PythonEntendendo Frameworks web com Python
Entendendo Frameworks web com Python
 
Entendendo Framework Web com Python
Entendendo Framework Web com PythonEntendendo Framework Web com Python
Entendendo Framework Web com Python
 

Curso XML - IBM Academic Initiative

  • 1. Mini Curso XML - FAESA XML Básico Loiane Groner Java Developer/IT Specialist loianeg@br.ibm.com IBM Academic Initiative 16 Outubro 2009 © 2009 IBM Corporation
  • 2. Mini Curso XML Quem sou eu na IBM? IBM – Março de 2009 IBM Hortolândia – Campinas - SP Analista de Sistemas + Desenvolvedora Java Projeto Internacional : Medco Account Team: USA + Brasil Tecnologias:J2EE, WebSphere, Spring, iBatis, ExtJS, JQuery, Oracle, Rational Application Developer (RAD). Academic Initiative Ambassador - Abril/2008 2 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 3. Mini Curso XML Agenda Fundamentos XML Documentos XML bem formados Validação de documentos XML com DTD e Schema Java e XML Manipulação com a API DOM Manipulação com a API SAX Frameworks para leitura e manipulação de arquivos XML 3 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 4. Mini Curso XML - FAESA Fundamentos XML IBM Academic Initiative 16 Outubro 2009 © 2009 IBM Corporation
  • 5. Mini Curso XML O que é XML? Extensible Markup Language (XML) –Linguagem de marcação de dados Descreve dados estruturados Definição Infinita de tags –Exemplo: pessoa, nome, endereço, telefone, etc 5 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 6. Mini Curso XML XML x HTML HTML: descreve aparência e ações XML: descreve o que representa 6 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 7. Mini Curso XML Estrutura de um documento XML (1/2) Tags, elementos, atributos Tag: “<“ + texto + “>” –Início: <nome> ; Fim: </nome> Elemento: <inicio> conteúdo </inicio> Atributos: par nome+valor na tag <inicio> –<inicio atributo=“valor”> conteúdo </inicio> Elemento: <inicio> conteúdo </inicio> Apenas um único elemento: elemento raiz 7 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 8. Mini Curso XML Estrutura de um documento XML (2/2) 8 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 9. Mini Curso XML Estrutura Árvore XML 9 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 10. Mini Curso XML Para que usar XML? Principal: compartilhamento de informações através da Internet Identificação da informação: você pode definir suas próprias tags Armazenamento de informação: XML é portável e não é proprietário Padrão internacional Estruturar informação: XML pode ser usado para identificar qualquer tipo (hierárquico) de estrutura Publicação: combinando os últimos três tópicos (identificação, armazenamento e estruturação) significa que podemos utilizar o XML para publicá-lo na Web Mensagens e tranferência de dados Simplificação da mudança de plataforma Web Services: o XML é usado para gestão da informação e transmissão 10 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 11. Mini Curso XML Por que usar XML? É recomendado pelo W3C (World Wide Web Consortium); É padrão aberto, você não precisa pagar nada para usar Existem várias ferramentas e editores bons no mercado, e o melhor: free Simplicidade e Legibilidade, tanto para humanos quanto para computadores Separação do conteúdo da formatação Concentração na estrutura da informação, e não na sua aparência Possibilidade de criar sua própria sintaxe de dados Possui suporte a Unicode, permitindo que praticamente qualquer informação escrita em língua humana possa ser transmitida Permite validação, o que torna os teste unitários mais efetivos, e a construção de aplicações bem mais fácil 11 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 12. Mini Curso XML Quando não usar XML? (1/2) A sintaxe do XML é redundante ou torna-se grande em relação a representações de dados semelhantes A redundância pode afetar a eficiência quando utiliza-se o XML para armazenamento, afetando também transmissão e processamento, os custos ficam muito mais elevados Resumindo: em muitas situações, o XML pode ser substituído por documentos com formatos mais simples, como os arquivos properties ou texto. A grande quantidade de informação repetida pode prejudicar a velocidade de transferência real da informação (se estiver em formato XML) 12 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 13. Mini Curso XML Criando um documento XML 13 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 14. Mini Curso XML Partes de um XML Declaração XML Prólogo Instruções de processamento Elementos e atributos Comentários Entidades Seções CDATA 14 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 15. Mini Curso XML Declaração XML A declaração XML utiliza o elemento <?xml?>. Se utilizar <?XML?> terá um erro de validação. <?xml version="1.0" encoding="UTF-8" standalone="yes"?> Existem três atributos que podem ser usados na declaração: - Version – é a versão do XML, que pode ser 1.0 ou 1.1. Este atributo é obrigatório se você usar a declaração XML; - Enconding – é a linguagem de codificação do documento. O padrão é UTF-8. Este atributo é opcional. - Standalone – os valores possíveis são “yes” ou “no”. Use “yes” se o documento não faz referência a documentos externos ou entidades. Use “no” caso contrário. Este atributo é opcional. 15 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 16. Mini Curso XML Comentários <?xml version="1.0" encoding="UTF-8"?> <!-- Aqui começa o email --> <mensagem> <!-- quem enviou a mensagem --> <de>alguém</de> <para>outra pessoa</para> <!-- tag assunto foi comentada --> <!-- <assunto>digite o assunto</assunto> --> <texto>abcdefghijk</texto> </mensagem> 16 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 17. Mini Curso XML Instruções de Processamento O XML permite que você utilize instruções especiais para passar informação para os programas que possam ler o documento XML. Uma instrução de processamento comença com “<?” e termina com “?>“. A única restrição é que você não pode usar <?xml?> ou <?XML?> (que também é reservado). No exemplo abaixo, a instrução de processamento é para o Cocoon, um framework da Apache que é focado em publicação XML. Quando o Cocoon está processando um XML, procura por instruções que comecem com cocoon-process, então processa o XML de acordo com esta instrução. O atributo type=”sql” indica que o documento XML contém uma instrução SQL. <?cocoon-process type="sql"?> 17 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 18. Mini Curso XML Prólogo O prólogo aparece no início de um documetno XML, e contém informações sobre o restante do documento. Um prólogo pode conter uma declaração XML, comentários (que descreve o documento), instruções de processamento, e declarações de tipo de documento (DTD). O XML abaixo exemplifica um prólogo contendo uma declaração XML, comentário, uma instrução de processamento e um DTD (no elemento <!DOCTYPE>). <?xml version="1.0" encoding="UTF-8"?> <!-- comentário --> <?comando tipo="simples" ?> <!DOCTYPE mensagem SYSTEM "prologo.dtd"> <mensagem>mensagem</mensagem> 18 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 19. Mini Curso XML Entidades (1/2) As entidades são constantes associadas a um valor de texto. São substituídas durante o processamento do documento XML. Por exemplo, se o texto “XML é legal” for aparecer em várias partes do documento podemos criar uma entidade assim: <!ENTITY legal " XML é legal "> Após a criação desta entidade, se quiser usar essa frase no documento XML, basta substituir por &legal. Também existem algumas entidades pré-definidas. O XML possui alguns caracteres especiais, que podem até gerar conflito com o conteúdo do documento. Por exemplo, suponha que você queria utilizar a fórmula “x < y”. No XML, a fórmula ficaria assim: <formula>x < y</formula> 19 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 20. Mini Curso XML Entidade (2/2) Observe que a leitura não ficou muito legível. O que está confundindo a leitura é o carácter “<”, já que as tags são identificadas por este também. Para evitar essa confusão, podemos utilizar uma entidade pré- definida. O XML escrito corretamente com a entidade fica assim: <formula>x &lt y</formula> A listagem abaixo contém as entidades pré-definidas: * &lt; que corresponde a < * &gt; que corresponde a > * &amp; que corresponde a & * &quot; que corresponde a “ * &apos; que corresponde a ‘ Alguns documentos XML possuem caracteres não usuais, especialmente os documentos que possuem conteúdo científico ou matemático. Se quisermos inserir o símbolo Π (pi), devemos fazer referência ao seu código no Unicode, como abaixo: <PI>&#227;</PI> 20 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 21. Mini Curso XML CDATA (1/2) A seção CDATA serve para prevenir o processamento de uma porção de conteúdo. Tudo o que está nessa seção não será processado pelo parser. <?xml version="1.0" encoding="UTF-8"?> <documentoXML> <titulo>Este é o conteúdo do XML de exemplo</titulo> <conteudo> <![CDATA[<contato> <nome>Maria</nome> <telefone>99999999</telefone> </contato> ]]> </conteudo> </documentoXML> 21 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 22. Mini Curso XML CDATA (2/2) <?xml version="1.0" encoding="UTF-8"?> <documentoXML> <titulo>Este é o conteúdo do XML de exemplo</titulo> <conteudo> <![CDATA[<contato> <nome>Maria</nome> <telefone>99999999</telefone> </contato> ]]> </conteudo> </documentoXML> 22 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 23. Mini Curso XML Tags e Atributos A especificação XML é bem específica em relação ao nome das tags. Você pode começar uma tag com uma letra, underscore (_) ou dois pontos (:). Os próximos caracteres podem ser letras, dígitos, underscore, hífen, e dois pontos. Espaço não é permitido. Exemplo de tags que são permitidas: <documento> <_documento> <documento01> <documento-01> <2documento> <.documento> <numero documento> <numero*documento> <DOCUMENTO(ID)> < 2009> 23 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 24. Mini Curso XML Documento XML bem formado 24 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 25. Mini Curso XML O documento XML deve começar com uma declaração XML <!-- Não é permitido! --> <?xml version="1.0" encoding="UTF-8"?> 25 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 26. Mini Curso XML O Elemento Raiz deve conter todos os outros elementos <mensagem>Olá!</mensagem> <mensagem>Hello!</mensagem> 26 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 27. Mini Curso XML O documento XML deve ter pelo menos 1 elemento <mensagem>Olá!</mensagem > 27 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 28. Mini Curso XML Elementos devem ter tags inicial e final <mensagem> <frase>Olá Mundo! </mensagem> <mensagem> <frase>Olá Mundo!</frase> <frase/> </mensagem> 28 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 29. Mini Curso XML As tags são case-sensitive <b>As tags são case sensitive!</B> 29 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 30. Mini Curso XML Elementos não podem se sobrepor <mensagem> Mensagem de <saudacao>Saudacao </mensagem> </saudacao> <mensagem> Mensagem de <saudacao>Saudacao</saudacao> </mensagem> 30 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 31. Mini Curso XML Os atributos devem estar entre aspas <mensagem id>Olá!</mensagem> <documento> <mensagem id="01">Olá</mensagem> <mensagem id='02'>Mundo!</mensagem> </documento> 31 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 32. Mini Curso XML Os atributos devem ser únicos <mensagem id="01" id="txt">Olá</mensagem> <mensagem id="01" ID="02" iD="03" Id="04"> Olá </mensagem> 32 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 33. Mini Curso XML Utilize < e & apenas para iniciar uma tag e entidade Os processadores XML sempre assumem que o carácter < inicia uma tag e que o carácter & inicia uma referência 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 dão importância a esses caracteres. 33 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 34. Mini Curso XML Validação de documentos XML 34 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 35. Mini Curso XML O que é modelar um documento XML? 35 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 36. Mini Curso XML Como saber se eu preciso criar um documento que especifica o modelo do meu XML? Os documentos XML são escritos por pessoas (ou uma aplicação) e são usados como dados para outros aplicativos. Quando você restringe, cria uma padrão, escrever um programa que vai consumir aquele XML fica muito mais fácil e reduz bastante a possibilidade de erros. Seu documento XML deve ter alguns campos obrigatórios. Por exemplo, um email precisa ter um destinatário, se não tiver, como você vai enviar a mensagem? Você solicita um XML a pessoas que não estão familiarizadas com a estrutura do XML. Como o modelo é um documento, você pode torná-lo público, e essas pessoas poderão fazer o download. Um modelo de documento XML também pode ser utilizado em editores de XML (serve de guia, pois contém a lista dos elementos apropriados, e que podem ser usados para construir o XML). 36 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 37. Mini Curso XML E se eu não quiser usar um documento que especifique o conteúdo do meu XML? Vocabulário ilimitado: você pode utilizar qualquer nome para seus elementos. Sem regras de gramática: um elemento pode conter qualquer coisa: conteúdo misto, elementos, texto, ou pode ser vazio. Sem restrições aos atributos: qualquer elemento pode conter qualquer atributo. 37 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 38. Mini Curso XML Como criar o modelo? DTD Schema 38 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 39. Mini Curso XML Validação de documentos XML DTD 39 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 40. Mini Curso XML Sintaxe Declaração de um conjunto de elementos. Você não pode utilizar outros elementos que não estejam definidos neste conjunto. Imagine como se fosse o vocabulário do XML. Definição do conteúdo para cada elemento. A definição de conteúdo é um padrão que nos diz quais os elementos ou dados que aquele determinado elemento XML pode conter, em qual ordem, quantidade e se é opcional ou obrigatório. Imagine como se fosse a gramática do XML. Declaração de um conjunto de atributos para cada elemento. Cada declaração de atributo define o nome, tipo (datatype), valores padrões (se aplicável), e comportamento (obrigatório ou opcional). 40 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 41. Mini Curso XML Estrutura 41 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 42. Mini Curso XML Elementos do DTD (1/2) 1- Elementos vazios: a maneira mais simples de declarar um elemento vazio é através da palavra-chave EMPTY. Exemplo: <!ELEMENT grafico EMPTY> 2- Elementos que não contém restrições de conteúdo: neste tipo de declaração, o elemento XML pode conter qualquer outro elemento. Exemplo: <!ELEMENT contem_qualquer_coisa ALL> 3- Elementos que podem conter apenas dados do tipo texto (informação): Para elementos que apenas podem conter informação, mas não outros elementos, utiliza-se (#PCDATA), que significa “parsed-character data”. Isso significa que os caracteres serão verificados por um parser XML à procura de referências de entidades, e caso houver alguma, então esta entidade será substituída por seu valor correspondente. 42 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 43. Mini Curso XML Elementos do DTD (2/2) 4- Elementos que podem contem apenas outros elementos: - , -> Descreve uma sentença obrigatória de elementos. Também funciona como operador E (AND). Exemplo: A,B significa que B deve vir depois de A. B seguido de A não é permitido. - | -> Descreve uma alternativa, funciona como o operador OU (OR). Exemplo: A|B|C significa que qualquer elemento é aceitável. Apenas uma opção é permitida, você deve escolher entre um dos três elementos. - (…) -> Agrupa o conteúdo. Você pode usar a quantidade e parênteses 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 são permitidos. - ? -> Descreve uma sentença opcional. Exemplo: A ? significa que você pode escolher se vai usar ou não o elemento A. - + -> Requere que pelo menos uma vez o elemento seja declarado, e não limite de quantas vezes este se repete. Exemplo: (A|B)+ significa que deve haver um número positivo e diferente de zero de As ou Bs. A sequência ABBBAAA é válida. - * -> Significa que o elemento pode aparecer várias vezes, não tendo limite, e também é opcional. Exemplo: (A|B)* significa que a sequência pode ter tamanho zero e pode ter inúmeros elementos A ou B. 43 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 44. Mini Curso XML Atributos DTD (1/3) 1- CDATA (character data) Qualquer caracter pode ser usado, incluindo caracteres de entidades. Declaração: <!ATTLIST circulo raio CDATA “12 cm”> Exemplos: dimensoes=”35×12x9 mm” | expressao=” 5 + 7 = 3 * 4 “ 2- NMTOKEN (name token) Um name token é uma sequência de caracteres que começam com uma letra e pode conter números, letras e alguns caracteres de pontuação. Exemplo: <!ATTLIST parte numero NMTOKEN #REQUIRED> Obs.: qualquer espaço 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 não podem ter o mesmo valor de um atributo do tipo ID. Exemplo: <!ATTLIST nome_id ID #REQUIRED> 44 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 45. Mini Curso XML Atributos DTD (2/3) 4- IDREF (identifier reference) Este tipo de atributo é similar ao tipo ID, mas em vez do valor do atributo se referir ao elemento em questão, refere-se ao ID de outro elemento. Se não existir nenhum elemento com o ID referenciado, o parser mostrará um erro. Este tipo é usado para fazer referência a relacionamentos. Exemplo: <!ATTLIST relacionamento cliente ref IDREF #REQUIRED> 5- IDREFS (identifier reference list) Uma lista separada por um espaço de valores de IDREF. Se não existir nenhum elemento com o ID referenciado, o parser mostrará um erro. Exemplo: <!ATTLIST boxdvd refs IDREFS #REQUIRED> 6- ENTITY (nome de entidade) Este tipo aceita um nome de entidade como valor. Você pode usá-lo após declarar uma entidade no DTD. Exemplo: <!ATTLIST bulletlist icon ENTITY #IMPLIED> <!ENTITY bluedot SYSTEM “icons/bluedot.png”> 45 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 46. Mini Curso XML Atributos DTD (3/3) 7- ENTITIES (lista de nomes de entidades) O valor do atributo é uma lista de nomes de entidades separados por um espaço. Exemplo: <!ATTLIST album filelist ENTITIES #REQUIRED> 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 declaração, você especifica a lista de valores cercada por parênteses, separados por barras verticais (|). Exemplo: <!ATTLIST cliente genero ( F | M ) #IMPLIED> Um atributo só pode ter um valor: <cliente genero=”F”> 9- NOTATION (lista de notações) O valor de um atributo do tipo notação consiste em uma sequência de name tokens. Uma notação pode ser definida para preservar espaços em um elemento que normalmente seriam removidos pelo parser. 46 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 47. Mini Curso XML Hands On 47 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 48. Mini Curso XML Validação de documentos XML Schema 48 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 49. Mini Curso XML Hands On 49 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 50. Mini Curso XML Java e XML 50 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 51. Mini Curso XML 51 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 52. Mini Curso XML DOM 52 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 53. Mini Curso XML Mapa DOM 53 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 54. Mini Curso XML Interfaces Principais 54 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 55. Mini Curso XML Exemplo 55 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 56. Mini Curso XML Hands On Vamos ver código! 56 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 57. Mini Curso XML SAX 57 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 58. Mini Curso XML Eventos startDocument() -Indica que o parser achou o início do documento XML. Este evento não lhe passa qualquer informação, apenas indica que o parser vai começar a escanear o arquivo XML. endDocument() – Indica que o parser achou e fim do documento XML. startElement(…) – Indica que o parser achou o início de uma tag (tag de abertura/início). Este evento fornece o nome do elemento, o nome e valor dos atributos deste elemento, e também pode fornecer as informações sobre o namespace. characters(…) – Indica que o parser achou algum Texto (Informação). endElement(…) -Indica que o parser achou o fim de uma tag/elemento. Este evento fornece o nome do elemento 58 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 59. Mini Curso XML Exemplo statDocument() startElement chamado com name=”exemplo” e attrib contendo um único valor para id startElement chamado com name=”no_de_texto” characters chamado uma ou mais vezes com o conteúdo “Olá mundo” endElement chamado com name=”no_de_texto” endElement chamado com name=”exemplo” endDocument() 59 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 60. Mini Curso XML Hands On 60 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 61. Mini Curso XML Frameworks 61 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 62. Mini Curso XML Alguns Frameworks XStream Xml Beans Digester Xerces/Xalan DOM4J Castor Project JiBX Abstraem toda a parte “manual” da leitura DOM/SAX 62 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 63. Mini Curso XML E agora? 63 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 64. Mini Curso XML Referência dos projetos/arquivos Os arquivos apresentados neste mini-curso estão hospedados no GitHub: Validação de documentos XML com DTD – http://github.com/loiane/DTD Validaçao de documentos XML com Schema – http://github.com/loiane/Xml-Schema Leitura arquivos XML em Java com a API DOM – http://github.com/loiane/ManipulacaoXMLComDOM Manipulação arquivos XML em Java com a API DOM – http://github.com/loiane/ModificacaoXMLComDOM Leitura arquivos XML em Java com a API SAX – http://github.com/loiane/ManipulacaoXMLComSAX 64 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 65. Mini Curso XML OBRIGADO!! 65 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation
  • 66. Mini Curso XML Contato Email: loianeg@gmail.com Office: loianeg@br.ibm.com Msn/Gtalk (raro): loianeg@gmail.com Twitter: @loiane Wave: loianeg@googlewave.com Blog: http://www.loiane.com 66 XML Básico – FAESA – 16-out-2009 | Confidencial © 2009 IBM Corporation