O que é XML? extensible Markup Language Linguagem de representação usando marcas como o HTML Marcas não pré-definidas. Precisam de ser definidas XML usa DTD ou esquemas para definir os dados Não FAZ NADA! (Não executa) XML Versus HTML: XML é uma Linguagem de representação de Dados e foca o que são esses dados HTML é uma Linguagem para visualizar Dados e foca em como se visualizam os dados <titulo>aniversario</titulo> <conteudo>não te esqueças de comprar a prenda</conteudo>
Em XML os Dados podem estar fora do Programa XML XML para trocar Dados entre sistemas diferentes Dados Financeiros e B2B são trocados em XML Dados ficam disponíveis para mais utilizadores independentemente do hardware e software usado. Documentos XML usam sintaxe simples e auto-descritiva <?xml version="1.0" encoding="iso-8859-1"?> <titulo>aniversario</titulo> <conteudo >Não te esqueças de comprar a prenda</conteudo> A primeira linha é uma Declaração XML dizendo a versão e código de caracteres. 2ªlinha é a raíz do documento Seguem-se quatro filhos da raíz Fim do elemento raíz Elementos são sensíveis às letras maiúsculas e minúsculas. Todas as marcas devem abrir e fechar e estar correctamente encaixados: <b><i>este texto está em itálico e a grosso</i></b>
<root> <child> <subchild>...</subchild> </child> </root> Valores de Atributos devem estar entre aspas: 1- Incorrecto <?xml version="1.0" encoding="iso-8859-1"?> <nota data=25/12/2003> 2- Correcto <?xml version="1.0" encoding="iso-8859-1"?> <nota data= 25/12/2003"> Comentários em XML <! Isto é um comentário --> Podem usar-se editores normais mas existem editores próprios para XML Documentos XML são extensíveis sem prejudicar aplicações anteriores: <titulo>aniversario</titulo> <conteudo>não te esqueças de comprar a prenda</conteudo> Suponhamos que uma aplicação extraía estas marcas: MENSAGEM Para: Paula De: Elsa Assunto: Aniversário Conteúdo: Não te esqueças de comprar a prenda
Documento aumentado: <data>2003-12-25</data> <titulo>aniversário</titulo> <conteúdo>não te esqueças de comprar a prenda</conteudo> A aplicação funcionaria de igual forma sem crashar RELAÇÕES: <book> <title>my First XML</title> <prod id="33-657" media="paper"></prod> <chapter>introduction to XML <para>what is HTML</para> <para>what is XML</para> </chapter> <chapter>xml Syntax <para>elements must have a closing tag</para> <para>elements must be properly nested</para> </chapter> </book> Book elemento raíz. Title, prod, e chapter são elementos filhos de book. Book é o elemento pai de title, prod e chapter. Title, prod e chapter são irmãos. Só o elemento prod tem atributos (id, media) com valores 33-657 e paper
No HTML (e XML) atributos dão informação sobre elementos: <img src="computer.gif"> <a href="demo.asp"> Atributos podem dar informa ção que não pertence aos dados Tipo de ficheiro só interessa ao software que vai manipular o ficheiro: <file type="gif">computer.gif</file> Os 3 documentos XML seguintes tem a mesma informação: 1)Usa o Atributo data: <nota data= 25/12/2003"> <título>aniversário</título> <conteúdo>não te esqueças da prenda</conteúdo> 2) Usa o Elemento data: <data> 25/12/2003 </data> < <título>aniversário</título> <conteúdo>não te esqueças da prenda</conteúdo>
3) Usa o Elemento expandido data: <data> <dia>25</dia> <mês>12</mês> <ano>2003</ano> </data> <título>aniversário</título> <conteúdo>não te esqueças da prenda</conteúdo> Documentos XML devem ser: Bem Formados (sintaxe correcta) Válidos (de acordo com o DTD <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE nota SYSTEM "InternalNote.dtd"> <data> <dia>25</dia> <mês>12</mês> <ano>2003</ano> </data> <título>aniversário</título> <conteúdo>não te esqueças da prenda</conteúdo>
DTD Document Type Definition Modelo do documento Elementos permitidos Atributos dos elementos e valores por omissão Composição de elementos e sua sequência Modelo da árvore do documento Tem ramos para as opções, repetições são marcadas Árvore de documento concreto tem ramos para cada ocorrência de elemento USO DO DTD Sintetiza e armazena elementos comuns a um grupo de docs Base para aplicações que manipulam a info Base para folhas de estilo para apresentação de docs Base para ferramentas que conduzam o processo de edi ção de docs LOCALIZAÇÃO DO DTD No topo do doc que lhe é conforme Em ficheiro separado referido no topo do doc Parcialmente em ficheiro separado, parcialmente no doc Referência a ficheiro do DTD <!DOCTYPE motor SYSTEM "D:\users\eco\motor.dtd" [ <! O Resto do DTD de motor --> <! > ]>
DECLARAÇÕES NO DTD ELEMENT definir marca ATTLIST definir atributos ENTITY definir entidade NOTATIONdefinir anotações para tipos de dados Declarações no sub-conjunto interno podem sobrepor-se às do externo Entidade referida mais que uma vez mantem a primeira definição Subconjunto interno é processado antes do externo. Exemplo <!-- declarações para os elementos --> <!ELEMENT motor (tipo, fabricante, composição)> <!ELEMENT tipo (#PCDATA)> <!ELEMENT fabricante (#PCDATA)> <!ELEMENT composição (eléctrico gasolina)> <!ELEMENT eléctrico (enrolamento, núcleo, carcaça, tampa)> <!ELEMENT gasolina (carburador, cilindros, pistões)> <!ELEMENT enrolamento (#PCDATA nº espiras diâmetro)*>... Declaração de elemento <!ELEMENT motor (tipo, fabricante, composição)> Texto em elemento PCDATA Parsable Character Data <!ELEMENT texto (#PCDATA)> Conteúdo misto PCDATA é primeira expressão Grupo tem de ser uma escolha <!ELEMENT endereço (#PCDATA nome lugar)*>
Declaração de atributos <!ATTLIST entrada tipo (pessoa empresa) "pessoa" ident ID #REQUIRED> Sintaxe <!ATTLIST elem-id att1-id att1-tipo att1-class att1-omissão Tipos CDATA, Enumerado, ID, IDREF, IDREFS, ENTITY, ENTITIES, NOTATION, NMTOKEN, NMTOKENS Classes #IMPLIED, #REQUIRED, #FIXED Entidade paramétrica no DTD Permite identificar blocos comuns que podem ser usados repetidamente <!ENTITY % comum "(parag lista tabela)"> Uso (no ficheiro XML) <!ELEMENT capitulo ((%comum;)*, secção*)> <!ELEMENT secção (%comum;)*> Exemplo de Documento XML sobre Notícias: <?xml version="1.0" encoding="iso-8859-1"?> <news> <head> <title>colombia Earthquake</title> </head> <body> <body.head> <headline> <hl1> 143 Dead in Colombia Earthquake</hl1> </headline> <byline> <bytag>by Jared Kotler, Associated Press Writer</bytag></byline> <dateline> <location>bogota, Colombia</location> <story.date>monday January 25 1999 7:28 ET</story.date> </dateline> </body.head> </body> </news>
Exemplo de DTD sobre Notícias: <!DOCTYPE NEWSPAPER [ <!ELEMENT NEWSPAPER(ARTICLE+)> <!ELEMENT ARTICLE(HEADLINE,BYLINE,LEAD,BODY,NOTES)> <!ELEMENT HEADLINE(#PCDATA)> <!ELEMENT BYLINE(#PCDATA)> <!ELEMENT LEAD(#PCDATA)> <!ELEMENT BODY(#PCDATA)> <!ELEMENT NOTES(#PCDATA)> <ATTLIST ARTICLE AUTHOR CDATA #REQUIRED> <ATTLIST ARTICLE EDITOR CDATA #IMPLIED> <ATTLIST ARTICLE DATE CDATA #IMPLIEDED> <ATTLIST ARTICLE EDITION CDATA #IMPLIED> <!ENTITY NEWSPAPER FINANCIAL TIMES > <!ENTITY COPYRIGHT Copyright 2003 a empresa dona do jornal > ]>