Baixe o app para aproveitar ainda mais
Prévia do material em texto
FACULDADE ANHANGUERA – UNIDADE CAMPINAS I TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM PARA ORG. E TRANSF. DE DADOS PARA WEB – ETAPA 02 ALUNO RA QUEMUEL SANTOS DE AQUINO 8309737322 MÁRCIO BENAGES 7505571270 ATIVIDADE PRÁTICA SUPERVISIONADA (ATPS) TUTOR: PROF. RICARDO AUGUSTO DA SILVA CAMPINAS, 01 DE ABRIL DE 2015. SUMÁRIO INTRODUÇÃO .........................................................................................................................................3 ESQUEMA DE LINGUAGEM E CRIAÇÃO DE PADRÕES ............................................................................3 GERANDO UM DOCUMENTO DTD .........................................................................................................9 APLICANDO ESTILOS AOS ATRIBUTOS DA LINGUAGEM .......................................................................11 RELATÓRIO 2 – MANUAL DE DESENVOLVIMENTO DTD e CSS .............................................................14 REFERÊNCIAS BIBLIOGRÁFICAS ............................................................................................................16 2 INTRODUÇÃO Esta atividade é importante para que possamos compreender as estruturas físicas e lógicas da linguagem XML, bem como a aplicação de estilos neste tipo de documento. Em recentes sistemas de biblioteca digital ou ambiente World Wide Web, muitos documentos estão começando a ser disponibilizados no formato estruturado, e etiquetados com linguagens de marcação como SGML e XML. No intuito de facilitar a edição e recuperação de informações, interpretadores e analisadores sintáticos para este tipo de documento, têm sido criados. Neste trabalho serão abordadas algumas ferramentas e técnicas para o desenvolvimento de programas utilitários de escrita e recuperação de informações em documentos estruturados. ESQUEMAS DE LINGUAGEM E CRIAÇÃO DE PADRÕES A maioria das ferramentas de edição de documentos XML já garante a construção de um documento de boa formação. Documento de boa formação é aquele em que os seus elementos aninham-se de forma apropriada, criando uma estrutura na forma de árvore. Um documento XML de boa formação é particularmente apropriado para uso na World Wide Web, porque ele pode ser processado com ferramentas simples. Ele consistirá de uma mistura de strings de caracteres conhecidos coletivamente como marcação, junto ao conteúdo de informações verdadeiro do documento, conhecido como dados de caracteres. Exemplos de marcação incluem tags de início e término, comentários, etc. As ferramentas e técnicas abordadas nesse artigo requerem que os documentos estejam de acordo com o padrão XML, ou seja, devem estar bem formados. Descreveremos abaixo como estas ferramentas interpretam e processam as informações dos documentos XML, fornecendo uma visão dos processos de interpretação e, 3 consequentemente, alertando para as possíveis respostas errôneas retornadas pelas ferramentas. - Estrutura Para ser capaz de conter coisas, os documentos precisam ter um tamanho finito. O tamanho finito de um documento é obtido através de tags iniciais e tags finais, as quais marcam as delimitações de um elemento (seu começo e seu fim) e todos os elementos aninhados formam o documento. Dois documentos XML podem diferir em sua estrutura física (tags + dados de caracteres), mas podem ser equivalentes em sua estrutura lógica (tags). Uma das formas de verificar se dois documentos XML fisicamente diferentes possuem a mesma estrutura lógica é através do subconjunto de informações contido nele e uma sintaxe para expressar aquele subconjunto. Esta sintaxe, chamada de XML canônica, é projetada para codificar a estrutura lógica de documentos XML. Se um documento de XML é mudado por uma aplicação, mas sua forma XML-Canônica não mudou, então o documento mudado e o documento original são considerados equivalentes para a finalidade de muitas aplicações. Esta especificação canônica é útil para introduzir a noção de equivalência entre documentos XML e que podem ser testados como sintático, em particular, através da comparação byte-a- byte. Na sintaxe, é descrito que documentos logicamente equivalentes são idênticos byte-a- byte. Documentos XML podem ser transformados em XML canônico (com potencialmente alguma perda de informação), e o resultado desta transformação é descrito como a forma canônica do documento original. Observe o conteúdo do documento e1.xml e o exemplo minimalista: 4 Documento A <!DOCTYPE d [ <!ENTITY lsb '['> <!ENTITY rsb ']'> <!ENTITY hello SYSTEM "e1.xml"> ]> <d>&lsb;&hello;&rsb;</d> As duas entidades lsb e rsb são consideradas entidades internas do documento "A", diferentemente de e1.xml, que se refere a uma entidade externa. A última linha do documento reúne as três entidades entre as tags "<d>" e "</d>" através da concatenação do "&" + nome_entidade + ";". Quando um documento fisicamente escrito dessa forma é convertido para a forma canônica o resultado é apresentado como: <d>[Hello World!!]</d> A forma canônica de um documento XML é um documento XML. Então um segundo documento "B" escrito fisicamente como segue, seria equivalente logicamente ao primeiro documento fisicamente diferente A: Documento B <d>[Hello World!!]</d> - Ferramentas não apropriadas para XML A natureza de texto simples dos documentos XML torna-os muito fáceis de se trabalhar usando toda uma variedade de ferramentas, desde editores-padrão até linguagens de script. A conveniência de utilizar ferramentas de escrita e recuperação de informações não apropriadas para documentos XML, mesmo que para pesquisas simples, podem resultar em respostas errôneas. Para ilustrar os resultados, considere a tarefa de contagem de elementos "<NOME>" em um documento. 5 <?xml version='1.0' encoding='utf-8' ?> <FUNCIONARIOS> <FUNCIONARIO> <id name='ID' column='id' type='int'> <generator class='increment'/>1</ID> <NOME>MARCELO</NOME> <SEXO>M</SEXO> <ENDERECO>RUA SILVIO CARVALHO, 25O</ENDERECO> </FUNCIONARIO> <FUNCIONARIO> <id name='ID' column='id' type='int'> <generator class='increment'/>2</ID> <NOME>CARLA SOUZA</NOME> <SEXO>F</SEXO> <ENDERECO>AV. LOPES CARDOSO, 112</ENDERECO> </FUNCIONARIO> <FUNCIONARIO> <id name='ID' column='id' type='int'> <generator class='increment'/>3</ID> <NOME>SHIRLEY MAGALHAES</NOME> <SEXO>F</SEXO> <ENDERECO>RUA SERAFIM TENDA, 5O</ENDERECO> </FUNCIONARIO> </FUNCIONARIOS> A contagem dos elementos "<NOME>" com utilitários de pesquisa de texto simples (não baseado em XML) normalmente resulta uma resposta correta, ou seja "3" ocorrências encontradas. Entretanto, como visto anteriormente, variações na estrutura física de documentos podem ocorrer, causando problemas para ferramentas que utilizam a mesma abordagem, pois elas não reconhecem sintaticamente as marcações XML. Um destes problemas está no uso de entidades, pois como as ferramentas não baseadas em XML ignoram as referências às entidades em um documento, elas não são capazes de retornar os elementos contidos em tais entidades. Isso pode ser visto a seguir: 6 <?xml version = "1.0"?> <!DOCTYPE PCS [<!ENTITYcap100 "<CAPACIDADE>100</CAPACIDADE>">]> <PCS> <PC> <NOME>IBM</NOME> &cap100; <PRECO>2300</PRECO> </PC> <PC> <NOME>ITAUTEC</NOME> &cap100; <PRECO>2100</PRECO> </PC> <PC> <NOME>HP</NOME> <CAPACIDADE>300</CAPACIDADE> <PRECO>2300</PRECO> </PC> </PCS> Considere a contagem do elemento "<CAPACIDADE>", o problema aqui é causado pelo fato de o texto de substituição"cap100" de entidades poder conter marcações. Neste caso, o utilitário encontraria apenas duas ocorrências do elemento CAPACIDADE e não três ocorrências, como seria correto. - Alternativas para Leitura/Gravação em documentos XML Algumas alternativas convenientes para inibir problemas no processo de recuperação de informação podem ser realizadas. Uma dessas alternativas está no uso de ferramentas de interpretação de documentos XML, antes da leitura ou escrita de tais informações. O interpretador EsisDemo, que acompanha o processador da XML Ælfred, desenvolvido por David Megginson da Microstar Corporation, é um exemplo deste tipo de ferramenta. O formato resultante desse interpretador é simples e orientado à linha. Cada "evento" importante da XML, tais como tags iniciais e tags finais, aparece como uma única linha de saída. O início e final de um elemento são indicados respectivamente por "(" e ")". As linhas iniciando por 7 "A" indicam um atributo e seu valor, as linhas iniciando por "-" indicam dados de caracteres e as iniciando por "?" indicam instruções de processamento. Algumas construções de marcação como comentários não são partes do resultado. Caracteres especiais como os que representam linhas novas são ignorados, isto é, esses caracteres aparecem como "/n". Observe, abaixo, o formato resultante do documento acima, após o uso do interpretador. As colunas, em seqüência, formam um único documento texto. O utilitário acima, que contou erroneamente duas ocorrências para o elemento CAPACIDADE, utilizado-se com este formato interpretado, do mesmo documento, retornaria uma resposta correta, ou seja, três elementos. Observe no formato resultante que as referências às entidades, foram convertidas em seu respectivo texto de substituição, e ainda assim seriam, mesmo que as entidades fossem externas. (um arquivo externo). No formato resultante, orientado à linha, um processamento de escrita em batch poderia ser realizado (como por exemplo, um acréscimo de 10% no valor dos PC’s) e novamente convertido para a forma de XML. Devemos alertar para alguns problemas com a alternativa de interpretação de documentos XML antes da leitura ou escrita. De modo geral os interpretadores XML procuram afastar o usuário da estrutura física do documento e apenas comunicar informações referentes à estrutura lógica. Esta postura faz com que o documento seja convertido em uma única estrutura lógica não preservando informações de referências às entidades. A partir do momento que as referências às entidades são perdidas, eliminamos qualquer possibilidade de conversão para a forma original do documento. No formato resultante, perdemos a informação de que o elemento CAPACIDADE para os dois primeiros PC’s são uma única entidade. A consequência deste fato poderia se agravar se as entidades fossem externas aos documentos e "processadas" por outros aplicativos. Depois de conhecer como as ferramentas tratam e interpretam a estrutura lógica e física dos documentos XML, observamos que as ferramentas não específicas para XML não são confiáveis, mesmo quando utilizadas com documentos bem-formados. Por outro lado, as ferramentas de interpretação apropriadas para XML, que são mais confiáveis, também não oferecem resultados satisfatórios, principalmente quando utilizadas para escrita. 8 Uma consideração importante, quando se planeja escrever utilitários para alterar documentos XML, é com relação à estrutura física destes documentos. Além da boa formação da estrutura lógica, a estrutura física deve ser mantida, a ponto de reconhecer todas as referências às entidades externas, o que possibilita, se necessário, o trabalho ou acesso com outros aplicativos vinculados a esta entidade. Uma tecnologia emergente, capaz de lidar com a preservação das estruturas das entidades, a qual recomendamos é a tecnologia DOM – Document Object Model. O Modelo de Objeto de Documento provê um conjunto padrão de objetos para representar documentos HTML e XML, um modelo padrão de como estes objetos podem ser combinados, e uma interface padrão para acessá-los e manipulá-los. A especificação consiste em um núcleo (core), que fornece um conjunto de objetos de baixo nível que podem representar qualquer tipo de documento estruturado. Este conjunto de objetos oferece "operações" para lidar com os diversos elementos da árvore que compõe um documento. Um documento estruturado é representado no DOM como uma árvore, onde cada nó, com exceção do nó raiz, possui um nó pai associado, e esses objetos permitem as funcionalidades básicas de leitura e escrita dos elementos da árvore. GERANDO UM DOCUMENTO DTD Uma DTD (Document Type Definition) pode, ser definida como um conjunto de regras que define quais tipos de dados e entidades farão parte de um documento XML. Estas regras serão utilizadas para que o analisador sintático verifique se o documento está correto ou não. A DTD pode estar definida dentro do próprio arquivo XML ou em um arquivo à parte com extensão .dtd, que deve ser incluído no código XML. A DTD pode ser usada para padronizar um documento XML e torná-lo bastante coerente com as necessidades do programador, porém sua criações não é obrigatória. - DTDs Externas: Quando temos um documento XML muito extenso, é melhor utilizarmos um DTD externa, o que traz boa qualidade com super organização do dados. 9 - DTDs Internas: A DTD interna e melhor trabalharmos quando usamos pequenos documentos XML. - Como criar uma DTD Para criarmos um arquivo DTD devemos analisar vários aspectos como por exemplo: Tipos de dados que o arquivo XML irá conter etc. - Criando uma DTD Interna Abaixo esta um pequena demonstração de dados de uma DTD interna: <?xml version='1.0' encoding="iso-8859-1" ?> <! DOCTYPE NOTA [ <! ELEMENT NOTA (ID,NOME,SEXO,ENDERECO) <! ELEMENT ID (#CADASTRO_FUNCIONARIOS)> <! ELEMENT NOME (#CADASTRO_FUNCIONARIOS)> <! ELEMENT SEXO (#CADASTRO_FUNCIONARIOS)> <! ELEMENT ENDERECO (#CADASTRO_FUNCIONARIOS)> <! ENTITY ID "1"> <! ENTITY NOME "MARCELO REZENDE"> <! ENTITY SEXO "MASCULINO"> <! ENTITY ENDERECO "RUA SILVIO CARVALHAES, 231"> ]> <NOTA> <ID>&ID;</ID> <NOME>&NOME;</NOME> <SEXO>&SEXO;</SEXO> <ENDERECO>&ENDERECO;</ENDERECO> </NOTA> - Criando uma DTD Externa O Código desta demonstração será o mesmo do que da DTD interna. Nós dividiremos somente o DTD e XML em dois arquivo com as extensões .xml e .dtd. Abaixo disponibilizamo o arquivo .xml <?xml version='1.0' encoding="iso-8859-1" ?> <! DOCTYPE NOTA SYSTEM "dtdexterna.dtd"> <NOTA> <ID>&ID;</ID> <NOME>&NOME;</NOME> <SEXO>&SEXO;</SEXO> <ENDERECO>&ENDERECO;</ENDERECO> </NOTA> Note que no arquivo .xml nos adicionamos uma linha para chamar o arquivo .dtd 10 Agora abaixo o arquivo .dtd <?xml version='1.0' encoding="iso-8859-1" ?> <! ELEMENT NOTA (ID,NOME,SEXO,ENDERECO) <! ELEMENT ID (#CADASTRO_FUNCIONARIOS)> <! ELEMENT NOME (#CADASTRO_FUNCIONARIOS)> <! ELEMENT SEXO (#CADASTRO_FUNCIONARIOS)> <! ELEMENT ENDERECO (#CADASTRO_FUNCIONARIOS)> <! ENTITY ID "1"> <! ENTITY NOME "MARCELO REZENDE"> <! ENTITY SEXO "MASCULINO"> <! ENTITY ENDERECO "RUA SILVIO CARVALHAES, 231"> APLICANDO ESTILOS AOS ATRIBUTOS DA LINGUAGEM Nós já vimos que as tags usadas em um documento XML podem ser criadas pelo usuário , então como o Navegador irá interpretar essas tags , já que não existem tags padrão em XML ? Para exibir documentos XML será necessário um mecanismo que descreva como o documento será exibido. Esse mecanismo chama-se XSL – Extensible Stylesheet Language – e é usado para transformarXML em HTML. A XSL pode ser encarada como um linguagem que pode transformar XML em HTML , pode filtrar e ordenar dados em documentos XML e que pode formatar dados XML. Ela pode ser usada para definir em como um arquivo XML será exibido pela transformação em um arquivo reconhecido pelo navegador do usuário. Geralmente este serviço é feito pela transformação de cada elemento XML em um elemento HTML, sendo que a SXL pode incluir novos elementos, remover elementos, rearranjar e ordenar elementos e ainda testar e tomar decisões. Vamos criar um arquivo XML chamado catalago.xml e a seguir usar a XSL e transformá-lo no arquivo catalogo.xsl: <?xml version="1.0" encoding="ISO8859-1" ?> <CATALOGO> <CD> <TITULO>Minas</TITULO> <ARTISTA>Milton Nascimento</ARTISTA> <PAIS>BRAZIL</PAIS> <COMPANIA>Columbia</COMPANIA> <PRECO>15.90</PRECO> <ANO>1985</ANO> </CD> </CATALOG> 11 O arquivo catalogo.xsl correspondente tem o seguinte código: <?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <html> <body> <table border="2" bgcolor="yellow"> <tr> <th>Titulo</th> <th>Artista</th> </tr> <xsl:for-each select="CATALOGO/CD"> <tr> <td><xsl:value-of select="TITULO"/></td> <td><xsl:value-of select="ARTISTA"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet> Vejamos a explicação do código usado no arquivo catalgo.xsl: xsl:stylesheet Indica que o documento é um stylesheet – folha de estilo. -<xsl:template match="/"> informa que este é um modelo que corresponde a raiz (/) de um documento fonte XML - <?xml version='1.0'?> Como um arquivo XSL é também um arquivo XML ele deve iniciar com uma declaração XML-<xsl:for-each select="CATALOGO/CD"> O elemento xsl:for-each localiza elementos no documento XML e repete o modelo para cada elemento. O atributo select descreve o elemento na fonte do documento -<td><xsl:value-of select="TITULO"/></td> <td><xsl:value-of select="ARTISTA"/></td> Nessas linhas o elemento xsl:value-of seleciona um nó filho na hierarquia e insere o conteúdo do nó filho no modelo. Para transformar o arquivo catalogo.xml em um arquivo HTML basta incluir uma referência ao arquivo catalogo.xsl criado acima no arquivo catalogo.xml . Veja no exemplo a seguir: 12 <?xml version="1.0" encoding="ISO8859-1" ?> <?xml-stylesheet type="text/xsl" href="catalogo.xsl"?> <CATALOGO> <CD> <TITULO>Minas</TITULO> <ARTISTA>Milton Nascimento</ARTISTA> <PAIS>BRAZIL</PAIS> <COMPANIA>Columbia</COMPANIA> <PRECO>15.90</PRECO> <ANO>1985</ANO> </CD> </CATALOG> Para fazer esta transformação no cliente usamos o código a seguir: <html> <body> <script language="javascript"> // carrega XML var xml = new ActiveXObject("Microsoft.XMLDOM") xsl.async = false xml.load("catalogo.xml") // carrega XSL var xsl = new ActiveXObject("Microsoft.XMLDOM") xsl.async = false xsl.load("catalog.xsl") // Transforma XML em HTML document.write(xml.transformNode(xsl)) </script> </body> </html> - var xml = new ActiveXObject("Microsoft.XMLDOM") O primeiro bloco de código cria uma instância da XML usando o Microsoft.XMLDOM - xml.load("catalogo.xml") Carrega o documento XML na memória - var xsl = new ActiveXObject("Microsoft.XMLDOM") Esta linha de código cria uma instância XML - xsl.load("catalog.xsl") Carrega o documento XSL na memória - document.write(xml.transformNode(xsl)) Transforma o documento XML usando o documento XSL e gera um documento HTML 13 Embora a XML esteja nos primórdios , dia a dia ela é cada vez mais usada. Com esta pequena introdução espero que XML e XSL deixem de ser apenas um par de siglas sem sentido para você e passem a orbitar os seus scripts ASP pois pode ter certeza: você ainda vai ouvir falar muito nessa dupla. RELATÓRIO 2 – MANUAL DE DESENVOLVIMENTO DTD e CSS O objetivo deste relatório é explicar e exemplificar as funcionalidades de um DTD e CSS dentro de linguagem XML, facilitando assim a compreensão por parte da equipe de TI da empresa Vassoura Vassourinha XXI LTDA. Segue uma definição e exemplo prático dos resultados alcançados. - Definição de DTD: Os DTDs definem a estrutura de um documento, onde são especificados quais os elementos e atributos são permitidos no documento. Embora não seja necessário que um documento XML tenha um DTD correspondente, recomenda-se a utilização de DTDs para garantir a conformidade do documento. O intercâmbio de informações, na forma de documentos XML, entre organizações (business-to-business) é um exemplo de intercâmbio de documentos XML onde é necessário que estes estejam em conformidade. As DTDs especificam a estrutura de um documento, e são definidas através da gramática EBNF (Extended Backus-Naur Form), e não na sintaxe XML. - Definição de CSS: O Cascading Style Sheets (CSS) é uma "folha de estilo" composta por “camadas” e utilizada para definir a apresentação (aparência) em páginas da internet que adotam para o seu desenvolvimento linguagens de marcação (como XML, HTML e XHTML). O CSS define como serão exibidos os elementos contidos no código de uma página da internet e sua maior vantagem é efetuar a separação entre o formato e o conteúdo de um documento. - Padrão documento XML Dados da Venda: • Campo Código Venda: Necessário á garantia de chave primaria para o campo de modo que o mesmo não se repita. • Campo Loja: Deve ser preenchido obrigatoriamente. • Campo Modelo: Sem regras específicas. • Campo quantidade: Sem regras específicas. • Campo valor total: Sem regras especificas. 14 DTD Vendas: <!element vendas(venda+)> <!element venda(codigo_venda, loja,modelo,quantidade,valor_total)> <!ATTLIST codigo_venda CDATA #required> -- declaração de atributos <!element loja(#PCDATA)> <!element modelo(#PCDATA)> <!element quantidade(#PCDATA)> <!element valor_total(#PCDATA)> Estilo de Linguagem Vendas: Vendas{ display: block; font-family: Arial, Helvetica; font-size: 20pt; color: #FF0000; } Venda{ display: block; font-family: Arial, Helvetica; font-size: 16pt; color: #FF0000; } codigo_venda{ display: block; font-family: Arial, Helvetica; font-size: 12pt; color:#FF0000; } loja{ display: block; font-family: Arial, Helvetica; font-size:12pt; color: #FF0000; } modelo{ display:block; font-family: Arial, Helvetica; font-size: 12pt; color: #FF0000; } quantidade{ display:block; font-family: Arial, Helvetica; font-size: 12pt; color: #FF0000; } 15 valor_toral{ display:block; font-family: Arial, Helvetica; font-size: 12pt; color: #FF0000; } REFERÊNCIAS BIBLIOGRÁFICAS [1] LIGHT, R. Iniciando em XML. São Paulo: Makron Books, 1999. p. 79-89 [2] McGRATH, S. XML: aplicações práticas. Rio de Janeiro: Campus, 1999. 368 p. [3] SHIN, D.; JANG, H.; JIN, H. BUS: An effective indexing and retrieval scheme in structured documents. Republic of Korea: Chungnam National University, 1998. p. 1. [4] WORLD WIDE WEB CONSORTIUM (W3C). Canonical XML version 1.0 W3C working draft: June 1, 2000. Disponível em: http://www.w3.org/TR/xml- c14n. Acesso em: 09 jun. 2000. [5] Document Object Model (DOM) Level 1 Specification Version 1.0: October 1, 1998. Disponível em: http://www.w3.org/TR/ 1998/REC-DOM-Level-1-19981001/. Acesso em: 09. jun. 2000. 16 SUMÁRIO ESQUEMAS DE LINGUAGEM E CRIAÇÃO DE PADRÕES
Compartilhar