Programação para Internet I 4. XML Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt
Standard do W3C (www.w3c.org) Formato de ficheiros de texto derivado de SGML (Standard Generalized Markup Language) Desenvolvido para ser usado na publicação de grandes quantidades de informação É independente de plataformas de hardware e software Permite trocar dados de forma transparente entre diferentes plataformas (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet I 2
Standard aberto que fornece regras para descrever o conteúdo e a estrutura de documentos Permite definir documentos com estruturas bastante complexas É facilmente interpretado por Homens e máquinas Um ficheiro XML inclui a informação e a estrutura dos documentos (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet I 3
Os utilizadores podem criar as suas próprias tags e respectivos atributos Os documentos XML têm que obedecer a uma determinada estrutura especificada por um DTD (Document Type Definition) É possível validar os documentos XML tanto em relação à sua sintaxe como em relação à sua estrutura http://www.xmlvalidation.com (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet I 4
Tags Permitem definir a estrutura dos documentos Descrevem os conteúdos Não definem a forma como os conteúdos são apresentados (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet I 5
Exemplos da utilização de XML no dia a dia Log files do Messenger RSS feeds Formato de imagem vectorial SVG Ficheiros SAFT-PT (contabilidade) O formato ODF E muitas outras http://en.wikipedia.org/wiki/list_of_xml_markup_ languages (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet I 6
Documentos bem formados Têm pelo menos um elemento Os elementos são organizados de forma hierárquica Têm um só elemento raiz Só existe um elemento em que as suas tags de inicio e fim não estão dentro de quaisquer outros elementos Não definem a forma como os conteúdos são apresentados Todas as tags devem estar correctamente dispostas Uma anotação de abertura que apareça dentro de um elemento tem a respectiva anotação de fecho antes desse elemento fechar Todos os elementos devem ser fechados (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet I 7
Exemplos de documentos XML <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE contactos SYSTEM "mydtd.dtd"> <contactos> <contacto> <numero>1</numero> <nome>josé Manuel</nome> <telefones> <fixo>123456789</fixo> <telemovel>987654321</telemovel> </telefones> <email>ze@jm.pt</email> </contacto> <contacto> <numero>2</numero> <nome>maria Francisca</nome> <telefones> <fixo>256598755</fixo> <telemovel>8756546821</telemovel> </telefones> <email>maria@mf.pt</email> </contacto> </contactos> <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE contactos SYSTEM "mydtd2.dtd"> <contactos> <contacto numero="1" nome="josé Manuel" email="ze@jm.pt"> <telefones> <fixo>123456789</fixo> <telemovel>987654321</telemovel> </telefones> </contacto> <contacto numero="2" nome="maria Francisca" email="maria@mf.pt"> <telefones> <fixo>256598755</fixo> <telemovel>8756546821</telemovel> </telefones> </contacto> </contactos> (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet I 8
Diferentes formas de definir conteúdos Etiquetas de início e de fim <tagx>... </tagx> Designação de atributos Colocados dentro das etiquetas de início atributox = valorx Referências a entidades É uma unidade de texto que pode ser englobada num documento XML Declaração ao nível de um DTD <!ENTITY nomedaentidade texto > Incluído no documento XML com &nomedaentidade Substituídos pelo processador XML pelo texto (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet I 9
Diferentes formas de definir conteúdos (continuação...) Comentários <!--...comentário... --> Instruções de processamento O processador XML interpreta estas instruções especiais Têm a forma <?...instrução...?> <?xml version= 1.0?> Secções CDATA Permitem isolar texto da atenção do processador (incluindo especiais tais como < e >) <![CDATA[texto]]> (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet I 10
Diferentes formas de definir conteúdos (continuação...) Declaração de tipos de documento (DTD) Serve para definir regras estruturais que os documentos a ele ligados devem obedecer Um documento pode ou não estar associado a um DTD (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet I 11
DTD (Document Type Definition) Descreve a estrutura de uma classe de documentos XML Permite especificar Quais são os elementos/atributos permitidos Como estes elementos/atributos estão relacionados O nome de cada elemento Especifica quais são os atributos obrigatórios e/ou opcionais e os seus valores por omissão Um documento diz-se bem formado se a sua estrutura está correcta (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet I 12
DTD (Document Type Definition) (continuação...) Um documento é válido se tiver uma DTD e estiver de acordo com as restrições nela expressas Um documento válido é, necessariamente, bem formado (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet I 13
Exemplo de DTD <!ELEMENT contactos ( contacto )*> <!ELEMENT contacto ( numero, nome, telefones, email )*> <!ELEMENT numero ( #PCDATA )> <!ELEMENT nome ( #PCDATA )> <!ELEMENT telefones ( fixo, telemovel )*> <!ELEMENT fixo ( #PCDATA )> <!ELEMENT telemovel ( #PCDATA )> <!ELEMENT email ( #PCDATA )> <!ELEMENT contactos ( contacto )*> <!ELEMENT contacto ( telefones )*> <!ATTLIST contacto numero CDATA #REQUIRED nome CDATA #REQUIRED email CDATA #IMPLIED > <!ELEMENT telefones ( fixo, telemovel )*> <!ELEMENT fixo ( #PCDATA )> <!ELEMENT telemovel ( #PCDATA )> (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet I 14
Multiplicidade de elementos Exactamente um <!ELEMENT listadecontactos (contacto)> Pelo menos um <!ELEMENT listadecontactos (contacto+)> Zero ou muitos <!ELEMENT listadecontactos (contacto*)> Zero ou um <!ELEMENT listadecontactos (contacto?)> (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet I 15
Atributos ou elementos? Depende muito dos gostos pessoais e das situações especificas Usando apenas elementos é possível fazer tudo Utilizando atributos existem algumas limitações como por exemplo, só ser possível dar um valor <contacto>... <telefones> <telefone>44444</telefone> <telefone>88888</telefone> </telefones>... </contacto> <contacto telefone="4444"> </contacto> (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet I 16
Para mais informações http://www.w3schools.com/xml/ http://www.w3schools.com/dtd/ (c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para Internet I 17