XML Mário Meireles Teixeira DEINF-UFMA XML Motivação
XML extensible Markup Language W3C: World Wide Web Consortium http://www.w3.org XML 1.0 W3C Recommendation, 10/Fev/1998 (inicial) W3C Recommendation, 04/Fev/2004, 3 a ed. W3C Recommendation, 16/Ago/2006, 4 a ed. XML 1.1 W3C Recommendation, 16/Ago/2006, 2 a ed. Site oficial: http://www.w3.org/xml HTML HyperText Markup Language Simples e flexível Simples? Conjunto limitado de marcações <TITLE>... </TITLE> <H1>... </H1> <A>... </A> <IMG SRC=... ALT=... > <HR> Flexível? Conteúdo representado juntamente com sua estrutura e forma de apresentação Difícil extrair o conteúdo de um documento Linguagem revolucionária para a época de sua criação (1994)
Limitações de HTML Não é possível estender o conjunto de marcas original: Permitir que autores ou comunidades criem seus próprios conjuntos de marcas, definidos para melhor caracterizarem os documentos de interesse Permitir associar significado a dados e campos do documento, viabilizando o processamento automático dos documentos Origens da HTML HTML foi definida com SGML [ISO 1986] Standard Generalized Markup Language (SGML) SGML permite definir linguagens específicas para um domínio Exemplo: documento SGML para um documento demo <!doctype demo [ <!element demo o o (p*)> <!element p - o (#pcdata)> ]> <p> The first paragraph. <p> The second paragraph.
SGML na Web Por que não usar SGML na Web? Maior poder de expressão e flexibilidade que HTML Autoria mais complexa que HTML Documentos exigem um processamento por demais elaborado para ser realizado sob demanda na Web Impasse: SGML - poderosa, porém cara... HTML - prática, porém limitada... Solução:...um passo atrás XML O Modelo de Markup O que um modelo que utiliza marcas específicas viabiliza? Nesse modelo marcas específicas são utilizadas para identificar dados ou trechos de documentos O modelo viabiliza a definição de linguagens como XML e suas descendentes com as seguintes características: abertas inteligíveis pelo ser humano capazes de manter independentes as representações das diversas dimensões de um documento
XML É uma linguagem de marcação (markup) apropriada à representação de dados, documentos e demais entidades cuja essência fundamenta-se na capacidade de agregar informações Exemplos de entidades: um programa de computador um relatório um script uma folha de estilo. Os termos hiperdocumento ou documento são usados para denominar genericamente tais entidades Fundamentos de XML XML é um formato universal que funciona como um denominador comum para a troca de dados na Web, separando dados de formato. Pontos fundamentais da XML: Extensibilidade Podem-se definir linguagens baseadas em XML, as quais podem ser estendidas, desde que se sigam as regras de validação Estrutura Facilmente digerida pelos parsers e legível pelos seres humanos, embora complexa Validade Além de requisitos de sintaxe rigorosos, um documento XML pode opcionalmente ser validado segundo sua estrutura e conteúdo (DTD e XML Schema)
Dimensões da informação em um documento XML Documentos apresentam pelo menos duas dimensões de informações: o conteúdo propriamente dito a estrutura organizacional Uma representação pode incluir dimensões referentes a informações sobre: apresentação do documento metadados estrutura de ligações sua semântica. XML Dimensões e Processamento XML Dimensões de estrutura e conteúdo Documentos bem formados Outras dimensões de um documento XML Apresentação: CSS, XSL Estrutura e Semântica: DTDs e XML Schemas Metadados e mais semântica: RDF, OWL Estrutura de hipertexto: XLink e XPointer Processamento de documentos XML Parsers, APIs, SAX, DOM...
XML Linguagem ou meta-linguagem? XML é uma linguagem: Estabelece regras gerais, as quais documentos em conformidade com XML devem respeitar XML é também uma meta-linguagem: Possui recursos para a definição de gramáticas que caracterizam linguagens para classes de documentos específicos, com conjunto de elementos, atributos e regras de composição bem determinados XML Estrutura do Documento
Elementos e Atributos A padronização W3C define um conjunto de regras estritas a serem seguidas ao escrever um documento XML well-formed XML Elementos <elemento> </elemento> Os nomes dos elementos são case sensitive. Os nomes devem começar com uma letra ou "_". Os caracteres seguintes podem incluir letras, números, hífens, pontos ou "_", mas não espaços. O caracter ":" também é válido, mas está reservado para composição de nomes com Namespaces. Elementos e Atributos Elementos Vazios <elemento /> Atributos São os valores associados a um elemento O valor deve estar entre aspas ou apóstrofos <elemento atributo= valor >texto</elemento>
Exemplo de documento XML <?xml version="1.0" encoding="iso-8859-1"?> <carta> <emissor> <pessoa>jomi Fred Hübner</pessoa> <endereço rua="antonio da Veiga, 140" /> </emissor> <destinatário tratamento="ilmo. Sr." > <pessoa>fulano</pessoa> </destinatário> <!-- Início do texto --> <texto>venho por meio desta... </texto> </carta> Estrutura Hierárquica
Sintaxe: documento bem formado Toda tag XML tem uma start-tag e uma end-tag <carta...>... </carta> ou <endereço... /> Todo atributo precisa estar contido em uma starttag, ter um nome único na tag e um valor definido entre aspas ou apóstrofos ( ou ) Todo documento tem um, e somente um, elemento raiz (root element) Instruções de Processamento (PI) São marcações específicas para alguns produtos ou ferramentas, p.ex., tradutores de XML para outros formatos, como PDF Em especial, há uma PI reservada que determina algumas propriedades do documento XML: versão do xml codificação dos caracteres <?xml version="1.0" encoding="iso-8859-1"?> formato de apresentação <?xml-stylesheet href="material-ie.xsl type="text/xsl" media = "explorer"?>
Conjuntos de Caracteres ASCII 1 byte, 7 bits --> 128 combinações ISO 8859-1 Latin-1 1 byte, 8 bits --> 256 combinações (ASCII + caracteres para a maioria das línguas da Europa Ocidental, inclusive Português) ISO 8859-(2...15) 1 byte, 8 bits --> 256 combinações (ASCII + caracteres para outros conjuntos de línguas) Unicode Conjunto default para XML 2 bytes --> 65.535 combinações Atualmente, pouco mais de 40.000 utilizadas 25.000 reservadas para futuras extensões Cerca de 20.000 usadas para os ideogramas Han (japonês, chinês, coreano)
Unicode 0-127 Latim Básico - ASCII, Inglês americano 126-255 Latin-1 - Português, Francês, Inglês, etc. 880-1023 Grego 9472-9599 Caracteres p/ desenho de caixas 19966-40959 Ideogramas HAN 57344-63743 Uso reservado a desenvolvedores de software UTF-8 Versão compacta do Unicode (utiliza apenas um byte para a maioria dos caracteres comuns) Caracteres Especiais Para inserir caracteres especiais em um documento XML, usa-se o & : - (Unicode Atenção ao ; final) - (Unicode hexa) - Caracteres reservados: & - & ' - > - > < - < " -
Caracteres Ignorados pelo Parser XML É possível inserir seqüências de caracteres em um documento XML cuja sintaxe será ignorada: <carta> <logo> <![CDATA[ <<Aqui a sintaxe é livre!>> ]]> </logo>... </carta> <![CDATA... ]]> CharacterData Aplicações: inserir texto ASCII não formatado, uma imagem de bitmap... Exemplos - XML Referências Bibliográficas: http://www.deinf.ufma.br/~mario/hmidia/exemplos/xml/bibref.xml Transparências: http://www.deinf.ufma.br/~mario/hmidia/exemplos/xml/slideso-xml.xml http://www.deinf.ufma.br/~mario/hmidia/exemplos/xml/slidecom-css.xml http://www.deinf.ufma.br/~mario/hmidia/exemplos/xml/slide. css Podem-se usar folhas de estilo (CSS) para a apresentação de documentos XML, porém recomenda-se usar XSL (aguarde...)
Exercício 1 Defina um documento XML que permita responder às seguintes perguntas sobre um professor: Quais as suas disciplinas? Qual o horário das aulas? Quais os softwares necessários para cada disciplina? Quais as reservas de laboratório? Escreva um documento XML que represente as reservas dos laboratórios. Cada reserva deve ter: Identificação do laboratório Data e hora Como saber se um laboratório tem os softwares necessários para uma disciplina? XML Validação de Documentos
DTD Document Type Definition Um documento XML que segue as regras gerais de formação é dito bem-formado Além disso, um documento XML pode ter sua estrutura e conteúdo validados segundo uma gramática, definida por um DTD documento válido Um DTD permite definir: Os elementos de um documento Os atributos dos elementos O número de ocorrências dos elementos Sub-elementos de um elemento... Outra forma de definição: XML Schemas Definição de Elementos <!ELEMENT carta ANY> <!ELEMENT emissor (#PCDATA)> <!ELEMENT destinatário EMPTY> ANY: o elemento pode conter qualquer outro sub-elemento ou texto #PCDATA: sub-elemento texto (Parsed Character Data) EMPTY: o elemento não pode conter qualquer outro subelemento ou texto
Definição de Sub-elementos <!ELEMENT carta (emissor?,destinatário*,texto) > <!ELEMENT xpto (a,(b c)*,d?) > Operadores de cardinalidade: default : obrigatório (pelo menos 1)? : opcional (0 ou 1) + : 1 a n * : 0 a n Operadores de composição:, : seguido de : ou Definição de Atributos <!ATTLIST endereço rua CDATA #IMPLIED cidade CDATA São Luís > <!ATTLIST destinatário tratamento (Sr Sra) Sr > Principais tipos: CDATA : caracteres (...) : enumeração ID : chave primária IDREF : chave estrangeira Principais modificadores: #IMPLIED : opcional #REQUIRED : necessário #FIXED : constante
Definição de Entidades Entidades permitem a reutilização de dados: Entidades internas <!ENTITY nomeempresa ABC Cia"> Entidades externas <!ENTITY diretor SYSTEM "diretor.xml"> <!ENTITY logo SYSTEM "http://www.abc.com.br/logo.gif" NDATA gif> Nos arquivos XML que utilizam esta DTD, pode-se escrever: <carta> &nomeempresa; &logo; <emissor> &diretor;... e serão feitas as substituições cabíveis. Indicação da DTD O documento XML pode ter uma referência para a DTD a ser utilizada na sua validação: <?xml version="1.0"?> <!DOCTYPE carta SYSTEM "carta.dtd" > <carta>... </carta> A definição da DTD também pode ser feita internamente ao documento Um documento XML, embora deva seguir as regras gerais de formação, não se valida automaticamente A validação a partir de uma DTD é geralmente feita por algum agente externo (um parser, um programa)
XML Exemplos carta.xml <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE carta SYSTEM "carta.dtd" > <carta> <emissor> <pessoa>jomi Fred Hübner</pessoa> <endereço rua="antonio da Veiga, 140" /> </emissor> <destinatário tratamento="ilmo. Sr." > <pessoa>fulano</pessoa> </destinatário> <!-- Início do texto --> <texto>venho por meio desta... </texto> </carta>
carta.dtd <?xml version="1.0" encoding="iso-8859-1"?> <!ELEMENT carta (emissor, destinatário+, texto) > <!ELEMENT emissor (pessoa,endereço) > <!ELEMENT destinatário (pessoa,endereço?) > <!ATTLIST destinatário tratamento ( Sr Sra ) "Sr" > <!ELEMENT endereço EMPTY > <!ATTLIST endereço rua CDATA #REQUIRED cidade CDATA São Luís" cep CDATA #IMPLIED> <!ELEMENT texto (#PCDATA) > <!ELEMENT pessoa (#PCDATA) > bibref.xml <?xml version="1.0"?> <!DOCTYPE bibref SYSTEM "bibref.dtd" > <bibref id="bray97" type="journal"> <title>extensible Markup Language (XML)</title> <publication volume="2" number="4" pages="29-66"> World Wide Web Journal </publication> <authors> <name>tim <lastname>bray</lastname></name> <name>jean <lastname>paoli</lastname></name> <name>c. M. <lastname>mcqueen</lastname></name> </authors> <date>august 7, 1997</date> <abstract>... </abstract> </bibref>
bibref.dtd <!ELEMENT bibref (title, publication, authors, date, abstract?) > <!ATTLIST bibref id ID #REQUIRED > <!ATTLIST bibref type (Journal Conference) "Conference > <!ELEMENT title (#PCDATA) > <!ELEMENT publication (#PCDATA) > <!ATTLIST publication volume CDATA #IMPLIED > <!ATTLIST publication number CDATA #IMPLIED > <!ATTLIST publication pages CDATA #IMPLIED > <!ELEMENT authors (name)* > <!ELEMENT name (#PCDATA lastname)* > <!ELEMENT lastname (#PCDATA) > <!ELEMENT date (#PCDATA) > <!ELEMENT abstract (#PCDATA enfa sep)* > <!ELEMENT enfa (#PCDATA) > <!ELEMENT sep EMPTY > DTD no próprio documento XML <?xml version ="1.0" encoding="iso-8859-1"?> <!DOCTYPE thesis [ <!ENTITY chapter1 SYSTEM "chap1.xml"> <!ENTITY chapter7 SYSTEM "chap7.xml"> <!ELEMENT thesis (abstract,chapter+)> <!ATTLIST thesis author CDATA #REQUIRED> <!ELEMENT abstract (#PCDATA)> <!ELEMENT chapter (title,body)>... ]> <thesis author= Mário"> <abstract>este trabalho apresenta...</abstract> &chapter1; &chapter7; </thesis>
Exercício 2 1. Escreva o DTD para o documento XML que contém as informações das disciplinas dos professores. 2. Escreva o DTD para o documento XML que contém as informações sobre os softwares. 3. Escreva o DTD para o documento XML que contém as informações sobre os laboratórios/reservas.