XML (eXtensible Markup Language) por Rafael Port da Rocha (Notas de Aula) 2007 XML - eXtensible Markup Language ⇒ Introcução ♦ Componentes de um Documento Eletrônico Digital Conteúdo: formado pelas informações que o documento transmite aos seus leitores, como seu título, seus autores, seu texto, etc. Estrutura: organização da informação Apresentação/Estilo: formada por elementos que indicam como o conteúdo será apresentado quando o documento eletrônico for visualizado, isto é, são elementos que indicam como o documento será formatado (tipo de letra, cor de letra, localização do título, tabulações, etc.) ♦ Linguagem de Marcação (Markup Language) • Linguagem através da qual marcas (tags) descrevem o significado de cada entidade informacional de um documento ♦ Exemplos de Marcações: • <li> José da Silva </li> Marcação na linguagem HTML que indica que “José da Silva” deve ser exibido na forma de item: “ • José da Silva “ • <nome> José da Silva </nome> Marcação na linguagem XML que indica que o texto “José da Silva” significa um nome de pessoa Notas de Aula - Rafael Port da Rocha - 2007 © XML - eXtensible Markup Language ⇒ XML (eXtensible Markup Language) ♦ Padrão para definição, validação e compartilhamento de informação formatada em um documento eletrônico ♦ A informação é estruturada através de marcações (tags): • Exemplo: <Placa> IIK1040 </Placa> IIK1040 é uma informação marcada por <Placa> A marcação inicia por <Placa>, encerra por </Placa> e contém como conteúdo IKK1040 ♦ As marcações definem o significado das informações contidas no documento XML, permitindo que este documento seja trocado por sistemas de informação em um ambiente de comércio eletrônico B2B • Exemplo: <Placa> IIK1040 </Placa> A marcação <Placa> indica que a informação IIK1040 corresponde a uma placa de automóvel ♦ Marcações podem conter marcações, formando um documento com uma estrutura complexa • Exemplo: <Veiculo> <Placa> IIK1040 </Placa> <Modelo> VW Fusca </Modelo> <AnoFabricacao> 1981 </AnoFabricacao> <Proprietario> <Nome> Antonio Carlos </Nome> <Localizacao> [email protected] </Localizacao> </Proprietario> </Veiculo> Notas de Aula - Rafael Port da Rocha - 2007 © XML - eXtensible Markup Language ♦ Documentos XML são usados tanto para troca de informações entre sistemas de informação (Comércio eletrônico B2B), Computador A Doc XML Computador B Notas de Aula - Rafael Port da Rocha - 2007 © XML - eXtensible Markup Language ⇒ Estrutura de um documento XML ♦ Um documento XML é formado por elementos e atributos ♦ Em um documento XML: • Um elemento é formado pelo par inicio e fim de marcação: <Placa> IJD9090 </Placa> Onde: <Placa> é o início de marcação, </Placa> é o fim de marcação, e IJD9090 é o conteúdo • Um elemento elementos pode conter texto e/ou outros <Proprietario> <Nome> Joaquim Manuel </Nome> <Localizacao> [email protected] </Localizacao> </Proprietario> O elemento Proprietário contém os elementos Nome e Localização O elemento Nome contém o texto Joaquim Manuel O elemento Localização contém o texto [email protected] • Um atributo é uma informação adicional associada ao elemento. Fica junto ao início de marcação do elemento <Valor Moeda="Real"> 1000,00 </Valor> O atributo Moeda, do elemento Valor, que o conteúdo está em Reais Notas de Aula - Rafael Port da Rocha - 2007 © informa XML - eXtensible Markup Language <?xml version="1.0" encoding="ISO-8859-1" ?> <?xml-stylesheet href='Veiculos.xsl' type='text/xsl'?> <!DOCTYPE Veiculos SYSTEM "Veiculos.dtd"> <RegistroDeVeiculos> <Veiculo> <Placa> IJD9090 </Placa> <Modelo> VW Brasilia </Modelo> <AnoFabricacao> 1981 </AnoFabricacao> <Proprietario> <Nome> Jose da Silva </Nome> <Localizacao> [email protected] </Localizacao> <Localizacao> <Endereco> <Rua> Rua A </Rua> <Numero> 123 </Numero> <Cidade> Santa Maria </Cidade> </Endereco> </Localizacao> </Proprietario> <Valor Moeda = "Real"> 1000,00 </Valor> </Veiculo> <Veiculo> <Placa> IKK1010 </Placa> <Modelo> VW Variant </Modelo> <AnoFabricacao> 1970 </AnoFabricacao> <Proprietario> <Nome> Joaquim Manuel </Nome> <Localizacao> [email protected] </Localizacao> </Proprietario> </Veiculo> <Veiculo> <Placa> IIK1040 </Placa> <Modelo> VW Fusca </Modelo> <AnoFabricacao> 1981 </AnoFabricacao> <Proprietario Tipo="PJuridica"> <Nome> Antonio Carlos </Nome> <Localizacao> [email protected] </Localizacao> </Proprietario> <Veiculo> </RegistroDeVeiculos > Notas de Aula - Rafael Port da Rocha - 2007 © XML - eXtensible Markup Language ⇒ Cometários do Exemplo ♦ É um documento que contém descrições de veículos ♦ Contém o elemento inicial: RegistroDeVeiculos <RegistroDeVeiculos> .... </RegistroDeVeiculos> ♦ O elemento RegistroDeVeiculos elementos Veiculo contém três <RegistroDeVeiculos> <Veiculo> ... </Veiculo> <Veiculo> ... </Veiculo> <Veiculo> ... </Veiculo> </RegistroDeVeiculos> ♦ Cada elemento Veiculo contém os elementos Placa, Modelo, AnoFabricacao, Proprietario e Valor. <Veiculo> <Placa> ... </Placa> <Modelo> ... </Modelo> <AnoFabricacao> ... </AnoFabricacao> <Proprietario> ... </Proprietario> <Valor Moeda = “....”> ... </Valor> </Veiculo> ♦ Os elementos Placa, Modelo, Moeda e AnoFabricação contêm texto em seu conteúdo ♦ O elemento Valor possui o atributo Moeda, que indica a moeda do valor ♦ O elemento Valor é opcional, não está representado nos veículos IKK1010 e IIK1040. Notas de Aula - Rafael Port da Rocha - 2007 © XML - eXtensible Markup Language ♦ O elemento Proprietário contém o elemento Nome e vários elementos Localização. ♦ O proprietário do veículo IJD9090 possui duas localizações, e os proprietários dos veículos IKK1010 e IIK1040 possuem uma única localização cada. ♦ O elemento Localização é construído de duas formas • Primeira: contém um texto como valor <Localizacao> [email protected] </Localizacao> • Segunda: contém o elemento endereço <Localizacao> <Endereco> <Rua> Rua A </Rua> <Numero> 123 </Numero> <Cidade> Santa Maria </Cidade> </Endereco> </Localizacao> ♦ O elemento Endereço contém os elementos Rua, Numero e Cidade Notas de Aula - Rafael Port da Rocha - 2007 © XML - eXtensible Markup Language ⇒ DTD (Document Type Definition) ♦ Um DTD é um documento que define as regras para a construção de um documento XML, isto é, define quais os tipos de elementos que podem ser usados no documento, e maneira com que elementos destes tipos podem ser combinados ♦ No DTD, uma regra deve ser definida para especificar como deve ser construído cada tipo de elemento : Tipo de Elemento Veículo Placa Modelo AnoFabricacao Valor Priprietário Nome Localizacao Endereco Rua Numero Cidade CEP RegistroDeVeiculos Regra (Conteúdos possíveis para um elemento do tipo) Placa seguido de Modelo seguido de AnoFabricacao seguido de Proprietario seguido de Valor (que é opcional) Texto Texto Texto Texto, com o atributo Moeda Nome seguido de um ou mais elementos Localizacao Texto Várias ocorrências de: Texto ou elemento Endereco Rua, seguido de Numero seguido de CEP (que é opcional) seguido de Cidade Texto Texto Texto Texto Zero ou mais elementos Veiculo Notas de Aula - Rafael Port da Rocha - 2007 © XML - eXtensible Markup Language ♦ Uma regra possui o seguinte formato: <!ELEMENT “tipoDoelemento” “conteúdosPossíveis”> • Onde: TipoDoElemento indica um tipo de elemento possível no documento ConteúdosPossíveis indica quais os conteúdos possíveis para este tipo de elemento ♦ Exemplo de DTD para o XML de veículos <!ELEMENT RegistroDeVeiculos (Veiculo)* > <!ELEMENT Veiculo ( Placa, Modelo, AnoFabricacao, Proprietario, Valor? )> <!ELEMENT Placa (#PCDATA)> <!ELEMENT Modelo (#PCDATA)> <!ELEMENT AnoFabricacao (#PCDATA) > <!ELEMENT Proprietario (Nome, Localizacao+) > <!ELEMENT Nome (#PCDATA) > <!ELEMENT Localizacao (#PCDATA|Endereco)*> <!ELEMENT Enderec (Rua, Numero ,CEP? ,Cidade)> <!ELEMENT Rua (#PCDATA) > <!ELEMENT Numero (#PCDATA) > <!ELEMENT CEP (#PCDATA) > <!ELEMENT Cidade (#PCDATA) > <!ELEMENT Valor (#PCDATA) > <!ATTLIST Valor Moeda (Real | Dollar | Euro) #REQUIRED > Notas de Aula - Rafael Port da Rocha - 2007 © XML - eXtensible Markup Language ♦ Comentários sobre o exemplo: <!ELEMENT Veiculo ( Placa, Modelo, AnoFabricacao, Proprietario, Valor? )> ♦ significa que: o tipo de elemento Veículo deve conter Placa, seguido de Modelo, seguido de AnoFabricacao, seguido de Proprietario, seguido de Valor, que é opcional (símbolo ? indica opcional, símbolo “,” indica “seguido de”). <!ELEMENT Placa (#PCDATA)> ♦ significa que o tipo de elemento Placa deve conter texto como valor <!ELEMENT RegistroDeVeiculos (Veiculo)* > ♦ significa que: RegistroDeVeiculos deve conter zero ou mais elementos Veiculo (símbolo * indica zero ou mais) <!ELEMENT Proprietario (Nome, Localizacao+) > ♦ significa que: Proprietario deve conter Nome seguido de um ou mais elementos Localização (símbolo + indica um ou mais) <!ELEMENT Localizacao (#PCDATA|Endereco)*> ♦ significa que: Localizacao deve conter zero ou mais ocorrências de texto ou Endereco (símbolo * indica zero ou mais, símbolo | indica ou) <!ATTLIST Valor Moeda (Real | Dollar | Euro) #REQUIRED > ♦ significa que o elemento Valor deve conter o atributo Moeda, e que o valor do atributo moeda deve ser: Real ou Dollar ou Euro. Notas de Aula - Rafael Port da Rocha - 2007 © XML - eXtensible Markup Language ⇒ Documento XML bem formado • Um documento XML é dito bem formado quando suas marcações estão corretas, isto é, de estão de acordo com a linguagem de marcação de XML Documento bem formado: <a atr=”x”> <b> abc </b> </a> Documento que não é bem formado: <a> <b> abc </a> </b> Erro: O elemento <b> encerra por </a> e o elemento <a> encerra por </b> Documento que não é bem formado <a> <b> abc </b> <c> de <c> </a> Erro: O elemento <c> não é encerrado Notas de Aula - Rafael Port da Rocha - 2007 © XML - eXtensible Markup Language ⇒ Documento XML Válido • Um documento XML é dito válido quando é bem formado e obedece as regras de um DTD, isto é, as elementos estão de acordo com as regras estabelecidas no DTD • Exemplo: sendo um DTD com as seguintes regras <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT a b c d (b)+ > (c, d) > (#PCDATA)> (#PCDATA)> O seguinte documento é bem formado e válido para o DTD definido acima <a> <b> <c> bla</c> <d> bla </d> </b> <b> <c> bla </c> <d> bla </d> </b> </a> O seguinte documento bem formado, mas não é válido para o DTD definido acima <a> <b> <d> bla </d> </b> <b> <c> bla </c> <d> bla </d> </b> </a> Erro: A primeira ocorrência de <b> não é válida, pois deve conter os elementos <c> e <d> Notas de Aula - Rafael Port da Rocha - 2007 © XML - eXtensible Markup Language ♦ Parsers são programas que verificam se um documento XML está válido para um DTD Doc. XML Parser XML Doc. XML bem formado e válido Doc. DTD Notas de Aula - Rafael Port da Rocha - 2007 © XML - eXtensible Markup Language ⇒ Sintaxe da linguagem DTD • Declaração de Elemento: <!Element “nome” “modelo de conteúdo”> • Modelo de conteúdo Indica os elementos que podem ocorrer no conteúdo do elemento declarado Contém indicadores de ocorrência dos elementos que podem ocorrer no conteúdo do elemento declarado A? = uma ou zero ocorr. de A A* = zero ou mais ocorr. de A A+ = uma ou mais ocorr. de A A|B = ocorre A ou B A,B = ocorre A seguido por B #PCDATA = ocorre cadeia de caracteres ANY = conteúdo é um elemento vazio ANY = ocorrência de qualquer elemento do DTD • Declaração de atributo <!ATTLIST “nome do elemento” “nome do atributo” “tipo” “valor padrão”> Exemplos de Tipos CDATA = valor de atributo é uma seqüência de caract. ID = atributo que deve ter valor único Exemplos de valores padrões #REQUIRED = atributo obrigatório #IMPLIED = atributo opcional Notas de Aula - Rafael Port da Rocha - 2007 © XML - eXtensible Markup Language no documento ⇒ Exercício 1 ♦ Verificar os documento Veiculos.xml, Veiculos.dtd ⇒ Exercício 2 ♦ Contruir um documento XML para representar turmas de uma disciplina, de acordo com o seguinte DTD: <!-- DTD Disciplina --> <!ELEMENT Diciplina (Nome, CargaHoraria, Turma*)> <!ELEMENT Nome (#PCDATA)> <!ELEMENT CargaHoraria (#PCDATA)> <!ELEMENT Turma ( Semestre, Horario, Professor+, Aluno+)> <!ELEMENT Semestre (#PCDATA)> <!ELEMENT Horario (#PCDATA)> <!ELEMENT Professor (Nome, Endereco)> <!ELEMENT Aluno (Nome, Endereco, Situacao)> <!ELEMENT Endereco (Logradouro,Numero,CEP?,Cidade)> <!ELEMENT Logradouro(#PCDATA) > <!ELEMENT Numero (#PCDATA) > <!ELEMENT CEP (#PCDATA) > <!ELEMENT Cidade (#PCDATA) > <!ELEMENT Situacao (Avaliacao, Faltas)> <!ELEMENT Avaliacao (#PCDATA)> <!ATTLIST Avaliacao Tipo ( Nota | Conceito ) #REQUIRED> <!ELEMENT Faltas (#PCDATA)> Notas de Aula - Rafael Port da Rocha - 2007 © XML - eXtensible Markup Language ⇒ Exercício 3 ♦ Dublin Core é um é um esquema de para descrever recursos (páginas) da Internet para fins de busca. ♦ O esquema é formado pelos 15 elementos descritos na tabela a seguir ♦ Atividades: • Construir um DTD para representar os elementos do esquema Dublin Core • Contruir um documento XML que contenha metadados que descrever o seguinte recurso, acordo com o DTD especificado: http://www.dgzero.org/dez01/Art_02.htm Elemento Title Subject Description Descrição Título do recurso (página) Tema , assunto do recurso Descrição do conteúdo do recurso Language Source Idioma do recurso Informações sobre os recursos que contribuíram para a elaboração do recurso corrente. Recursos que possuem relacionamentos com o recurso corrente Relation Coverage Características espaciais ou temporais Creator Pessoa ou organização responsável pela criação do conteúdo intelectual do recurso. Pessoa ou organização que contribui intelectualmente na criação do recurso (exemplo: editor, ilustrador, tradutor, etc) Identifica a entidade responsável por tornar o recurso disponível Direitos autorais Data da criação ou publicação do recurso Forma como o conteúdo é expresso (artigo, relatório técnico, dissertação) Formato em que o recurso é materializado (postScript, HTML, DOC, PDF, etc.) Possui o identificador único do recurso (URI, ISSBN, etc.) Contributor Publisher Rights Date Type Format Identifier Notas de Aula - Rafael Port da Rocha - 2007 © XML - eXtensible Markup Language ⇒ Bibliografia Bax, M. Introdução às linguagens de marcas. Ciência da Brasília, v. 30, n. 1, p. 32-38, jan./abr. 2001 Informação, Almeida, M. Uma introdução ao XML, sua utilização na Internet e alguns conceitos complementares. Ciência da Informação, Brasília, v. 31, n. 2, p. 5-13, maio/ago. 2002 Marchal, B. XML: conceitos e aplicações. São Paulo:Berkeley, 2000 Norman, P. A Study of Extensibel Markup Language Souza, M.; Vendrusculo, L.; Melo Metadados para a descrição de recursos de informação eletrônica:utilização do padrão Dublin Core. Ci. Inf., Brasília, v. 29, n. 1, p. 93-102, jan./abr. 2000 XML Bible. www.ibiblio.org/xml/books/bible/updates/14.html Notas de Aula - Rafael Port da Rocha - 2007 ©