Análise do Perfil de Jobs para a Aceleração do Processo de Renderização de Documentos em Ambientes de Impressão Distribuídos

Tamanho: px
Começar a partir da página:

Download "Análise do Perfil de Jobs para a Aceleração do Processo de Renderização de Documentos em Ambientes de Impressão Distribuídos"

Transcrição

1 Pontifícia Universidade Católica do Rio Grande do Sul Faculdade de Informática Programa de Pós-Graduação em Ciência da Computação Análise do Perfil de Jobs para a Aceleração do Processo de Renderização de Documentos em Ambientes de Impressão Distribuídos Thiago Tasca Nunes Orientador: Prof. Dr. Luiz Gustavo Leão Fernandes Trabalho individual I Porto Alegre, maio de 2008

2 Sumário LISTA DE FIGURAS 3 LISTA DE TABELAS 4 LISTA DE SÍMBOLOS E ABREVIATURAS 5 Capítulo 1: Introdução Motivação Objetivos Estrutura do trabalho Capítulo 2: Documentos Personalizáveis VDP VDT W3C XML Estrutura e Características do XML XML Parsers XSL XPath XSLT XSL-FO Processadores XSL PODi PPML PPMLT PDL SVG

3 SUMÁRIO 2 Capítulo 3: Abordagem Proposta Estrutura dos Arquivos de Entrada e Saída Composition Tool Métrica Solução Paralela Capítulo 4: Resultados Experimentais Ambiente de Teste Descrição do Ambiente Casos de Teste Análise dos Resultados Validação da Métrica Execução Paralela Capítulo 5: Conclusão e Trabalhos Futuros 44 REFERÊNCIAS BIBLIOGRÁFICAS 46

4 Lista de Figuras 2.1 Flexibilidade oferecida pelo VDP Pretty-printing Fluxo de trabalho VDT Documento XML Documento XML que descreve alunos de uma turma Documento XML versus árvore XML Árvore XML Estrutura modular do XSLT XSLT Apply-templates Componentes de um documento XSL-FO Exemplo de disposição das regiões XSL-FO em uma página Estrutura inicial de um documento PPML Estrutura final de um PPML Records de um PPMLT Impressão de dados com e sem o uso de PDL SVG versus bitmap Primeira fase do processamento da CTool Segunda fase do processamento da CTool Nova abordagem paralela Três documentos dos casos de teste Signage Um documento dos casos de teste Letter Um documento dos casos de teste Postcard Algumas páginas de um documento dos casos de teste Brochure Tempo de execução - Signage10000 e Signage Tempo de execução - Letter10000 e Letter Tempo de execução - Postcard10000 e Postcard Tempo de execução - Brochure10000 e Brochure Speedup referente aos 8 casos de teste descritos Escalonador para jobs da fila

5 Lista de Tabelas 2.1 Comandos XPath da sintaxe expandida Comandos XPath da sintaxe abreviada Comparativo do tamanho de um arquivo PPMLT e um PPML Tempo gasto na primeira fase versus tempo de execução total Características dos casos de teste Tempo de execução seqüencial Tempo de execução em 4 cores versus em 4 nodos

6 Lista de Símbolos e Abreviaturas VDP Variable Data Printing 4 VIP Variable Information Printing 4 VDT Variable Data Templates 6 W3C World Wide Web Consortium 7 HTML HyperText Markup Language 7 XHTML Extensible HyperText Markup Language 7 CSS Cascading Style Sheets 7 XML Extensible Markup Language 7 SGML Standard Generalized Markup Language 7 DTD Document Type Definition 9 SAX Simple API for XML 10 DOM Document Object Model 10 API Application Programming Interface 10 VB Visual Basic 11 XSL Extensible Stylesheet Language 11 DSSSL Document Style Semantics and Specification Language 11 XPath XML Path Language 11 XPointer XML Pointer Language 11 XQuery XML Query 11 XSLT Extensible Stylesheet Language Transformation 15 WML Wireless Markup Language 15 XSL-FO Extensible Stylesheet Language Fomatting Objects 18 RGB Red, Green and Blue 20 CMYK Cyan, Magenta, Yellow and Key 20 5

7 LISTA DE SÍMBOLOS E ABREVIATURAS 6 PODi Print On Demand initiative 22 HP Hewlett Packard 22 PPML Personalized Print Markup Language 22 PPMLT Personalized Print Markup Language-Template 25 PDL Page Description Language 26 PCL Printer Control Language 26 PDF Portable Document Format 27 PS PostScript 27 SVG Scalable Vector Graphics 27 GIF Graphics Interchange Format 27 JPEG Joint Photographics Experts Group 27 PNG Portable Network Graphics 27 CSVG Constraint SVG 28 CTool Composition Tool 30 FOP Formatting Objects Processor 30 MPICH MPI Chameleon 34 MPI Message Passing Interface 34

8 Abstract Personalized documents creation has become a common practice on digital printing area. This need required languages to add more flexibility to the documents creation in an uncomposed format. However, in order to print these documents, there is a need for a rendering step that may compromise the system overall performance. This way, the use of high performance approaches have become an interesting alternative to overcome this issue. In previous works, it has been shown high performance strategies that used several FOP (Formatting Objects Processor) rendering engines to accelerate the pre-processing of a single document. However, print shops have a queue containing several jobs and accelerating each one of them separately does not necessarily represent the best strategy to gain performance over the whole queue. This work presents two inicial steps to allow the construction of a smart parallel solution, capable of scheduling the jobs of the queue in a way that the best performance possible is achieved. First, an analysis of the jobs profile is described, searching for a consistent metric to predict the effort spent on the computation of each one of them, providing a valuable information to better organize the processing of the jobs. Secondly, a new parallel approach that surpasses the previous achievements is discussed, to be used by the scheduler.

9 Resumo A criação de documentos personalizados se tornou uma prática comum na área de impressão digital de documentos. Esta necessidade provocou o uso de linguagens para flexibilizar a criação de um documento em um formato não composto. Entretanto, a fim de imprimir estes documentos, surge a necessidade de uma fase de renderização que pode comprometer o desempenho do processo como um todo. Assim, o uso de técnicas de alto desempenho se mostrou como uma alternativa interessante para superar este problema. Em trabalhos passados foram apresentadas estratégias paralelas que utilizavam várias engines de renderização FOP (Formatting Objects Processor) para acelerar o pré-processamento de um único job na fila. No entanto, print shops dispõem de uma fila contendo diversos jobs e a aceleração de cada um deles separadamente não necessariamente representa a melhor estratégia para ganhar desempenho no âmbito da fila inteira. Este trabalho apresenta dois passos iniciais para futuramente permitir a construção de uma solução paralela inteligente, capaz de escalonar os jobs da fila de maneira que o melhor desempenho possível seja atingido. Primeiramente, se descreve uma análise sobre o perfil dos jobs, buscando uma métrica consistente para prever o esforço gasto na computação de cada um deles, fornecendo assim uma informação valiosa para melhor organizar o processamento dos jobs. Em um segundo momento, se discute uma nova abordagem paralela que supera os resultados obtidos com as versões anteriores, a ser utilizada pelo escalonador.

10 1 Introdução Devido ao surgimento de dispositivos capazes de imprimir uma grande quantidade de documentos em alta qualidade de forma eficiente, o processo de impressão digital tornouse mais rápido, deixando de ser um empecilho para as empresas. Entretanto, surge a necessidade de personalização de documentos, com o objetivo especificar mensagens para cada tipo de cliente. Com isso, o custo para a descrição destes passa a ser muito alto, prejudicando o processo de impressão como um todo. Neste sentido, procedimentos automatizados para a criação e transformação de documentos se tornaram necessários, com a finalidade de suprir a demanda existente. Diversas ferramentas foram desenvolvidas para auxiliar o designer a criar um template, do qual serão geradas diferentes instâncias de documentos. Tornou-se possível, então, definir áreas vazias (de tamanho fixo) no template, que serão preenchidas com o conteúdo variável, personalizado para cada instância do template em questão. Desta forma, o mesmo layout é aplicado sobre diversas informações, gerando um job constituído por um conjunto de documentos personalizados (variáveis). Neste âmbito, linguagens capazes de apresentar o grau de flexibilidade necessário foram desenvolvidas, permitindo a definição de áreas estáticas e dinâmicas de um documento, assim como a formatação de seus respectivos conteúdos. No cenário atual, a maioria das impressoras não são capazes de interpretar estas linguagens, portanto se tornam necessários diversos processos para possibilitar a impressão de forma correta dos documentos. Um destes trata-se da renderização, feito por uma aplicação denominada engine. Esta ferramenta realiza a composição de um documento, ou seja, aplica as diretivas de formatação especificadas por uma determinada linguagem não interpretável pela impressora, ao conteúdo. O documento resultante possuirá parágrafos, margens, fontes, cores, entre outros aspectos já definidos corretamente dentro do escopo de cada página, estando assim apto a ser enviado para a impressora. 1.1 Motivação Empresas especializadas na publicação digital de documentos (print shops) possuem uma fila de jobs, contendo diversos conjuntos de documentos a serem impressos. Assim, é comum a adoção de uma impressora com uma alta capacidade de processamento, em 1

11 1. Introdução 2 alguns casos sendo capaz de imprimir até 1 página por segundo. Neste cenário, todas as atividades relacionadas a preparação de um documento devem ser finalizadas em um espaço de tempo limitado, para que não ocorra a subutilização da impressora disponível. O processo de renderização trata-se de um dos procedimentos principais nesta fase e ao lidar com jobs contendo milhares de instâncias de documentos, ele acaba sendo muito custoso, representando um gargalo do processo de impressão. Além disso, print shops geralmente utilizam impressoras em paralelo para aumentar o consumo dos documentos pertinentes a um dado job. Desta maneira, o desempenho da engine de renderização deve aumentar proporcionalmente para mantê-las continuamente trabalhando. Entretanto, a fase de renderização normalmente é centralizada em uma única unidade de processamento, fazendo com que a engine acabe por não conseguir alimentar as impressoras associadas. Em trabalhos passados [1, 2] foram apresentadas estratégias para elevar a vazão do processo de renderização realizado pela engine, através da aplicação de técnicas de alto desempenho. Similar ao conceito de utilizar impressoras em paralelo para consumir o job de entrada rapidamente, se propôs o uso de engines de renderização em paralelo. Contudo, o ganho obtido com estas soluções estagnava-se a partir de um número relativamente baixo de engines. Além disso, estas se preocupavam em ganhar desempenho no âmbito da renderização de um único job por vez, através da alocação de todos os recursos para a mesma. Assim, a estratégia proposta não necessariamente se refletia na melhor maneira para ganhar desempenho na computação da fila como um todo. Para tanto, seria necessário avaliar o custo computacional de cada um destes jobs, possibilitando a escolha da melhor configuração de alocação dos recursos disponíveis. Com isso, poderia-se ceder recursos para diversos jobs da fila, realizando a computação de vários deles em paralelo. 1.2 Objetivos O trabalho realizado trata-se de um primeiro passo para o desenvolvimento de um escalonador inteligente. Este utilizaria diversas instâncias de uma aplicação paralela para o processamento de vários jobs da fila. A fim de descobrir a melhor distribuição dos recursos entre os jobs, esta ferramenta tomaria como base uma determinada informação que indicaria o custo computacional associado a cada um deles. Neste estudo objetiva-se identificar uma métrica consistente para analisar o esforço que será gasto no processamento de um job. Além disso, introduz-se uma solução paralela simples, que resolve os problemas encontrados nas estratégias previamente definidas, para futuramente ser incorporada ao escalonador. Neste sentido, realiza-se uma análise sobre o possível ganho de desempenho que poderia ser obtido através do uso deste escalonador inteligente a partir dos resultados apresentados neste trabalho.

12 1. Introdução Estrutura do trabalho Este volume organiza-se como segue: o Capítulo 2 descreve algumas tecnologias e técnicas ligadas a construção de documentos personalizáveis; o Capítulo 3 apresenta as abordagens propostas, explicitando o funcionamento do processo de renderização, relatando aspectos como a ferramenta seqüencial utilizada, a métrica indicada e a solução paralela desenvolvida; o Capítulo 4 discorre sobre o ambiente de teste utilizado para efetuar a execução das versões seqüencial e paralela, além de trazer os resultados obtidos, demonstrando a validade da nova abordagem paralela e da métrica escolhida; o Capítulo 5 conclui o estudo e apresenta possíveis pesquisas futuras a serem realizadas a partir dos resultados obtidos neste trabalho; por fim, é descrita a bibliografia utilizada.

13 2 Documentos Personalizáveis A criação de documentos personalizáveis envolve diversas técnicas e tecnologias que permitem a sua aplicação. Neste contexto, algumas foram resultado de anos de pesquisa diretamente voltada para a impressão digital de documentos, enquanto outras foram desenvolvidas para usos em diferentes cenários, mas acabaram sendo adotadas por apresentarem características desejáveis a construção de documentos variáveis. Este Capítulo apresenta algumas das linguagens e conceitos fortemente ligados aos documentos personalizáveis. 2.1 VDP Impressão de dados variáveis ou Variable Data Printing (VDP) [3] trata-se de uma tendência que reúne diversas técnicas, conceitos e padrões para possibilitar a criação de documentos com conteúdo dinâmico. Também conhecido como Variable Information Printing (VIP), Personalized Printing, Database Publishing, entre outros, VDP traz diversas facilidades para a construção de documentos flexíveis. Com o uso de VDP, o designer pode definir áreas personalizáveis de um documento que correspondem as porções variáveis deste. Contrastando com a simples impressão digital, ao invés de se criar um documento contendo uma única mensagem para diversos clientes, com VDP é possível utilizar um documento para passar tantas mensagens quanto necessárias, personalizadas para cada cliente. Portanto, a grande vantagem do uso de VDP é o que se pode chamar de personalização em massa. A Figura 2.1 ilustra a dinamicidade que pode ser encontrada em um documento com conteúdo personalizável, tal como variações de formatação, texto, imagens ou até mesmo de sua própria estrutura interna. VDP foi adotado por diversas empresas, por facilitar o processo de criação dos documentos. Tratando-se de situações reais de mercado pode-se citar o caso das olimpíadas de Sydney [4], em que os resultados da competição foram publicados através do uso de VDP. Diversas outras podem ser observadas no cotidiano, como, por exemplo, a fatura de um banco. Esta possui sempre o mesmo layout, mas difere no conteúdo, mais especificamente nos dados pessoais e financeiros de cada cliente. Desta maneira, o banco pode definir um único documento com áreas personalizáveis, onde estas correspondem as informações que diferenciam-se de um cliente para o outro. Outro exemplo muito comum que se pode citar 4

14 2. Documentos Personalizáveis 5 Figura 2.1: Flexibilidade oferecida pelo VDP é o caso dos encartes de supermercados. Este tipo de documento possui sempre a mesma estrutura: figuras de produtos espalhados na página com seus respectivos preços. Assim, o designer pode fixar as posições das imagens e de seus preços, mas considerar que tanto um quanto outro são porções variáveis em um documento. Com isso, o template criado pode ser reutilizado para a construção de diversos encartes de produtos diferentes. Contudo, para que VDP seja realmente aplicável à construção de documentos mais flexíveis são necessárias linguagens para descrever as partes variáveis e estáticas destes. Entretanto, a maioria das impressoras não é capaz de lidar diretamente com estas linguagens, gerando a necessidade da existência de uma fase de pré-processamento. Neste escopo, são utilizadas técnicas de Pretty-printing [5]. Estas tratam-se da transformação de um conteúdo com uma formatação não usual (ou óbvia) a um leitor humano para uma forma usual e inteligível (Figura 2.2). Tal fase é realizada através do processo de renderização, a fim de aplicar a formatação explicitada pelas primitivas das linguagens ao conteúdo do documento, tornando-o visualmente apropriado ao usuário final e, por fim, imprimível. Figura 2.2: Pretty-printing

15 2. Documentos Personalizáveis VDT Uma técnica amplamente utilizada no cenário de VDP, trata-se de VDT (Variable Data Templates) [6]. Esta propõe um fluxo de trabalho (Figura 2.3), com o objetivo de padronizar o processo de criação e impressão dos documentos, tornando-o confiável, previsível e aumentando a vazão de documentos impressos. Deve-se ressaltar que o fluxo de trabalho apresentado é um modelo genérico, podendo ser extendido e modificado para suprir necessidades específicas de cada empresa. Figura 2.3: Fluxo de trabalho VDT A implementação deste fluxo não estabelece o uso de uma tecnologia específica, podendo se adaptar a qualquer uma que realize a função necessária. Existem três fases básicas: criação, combinação e processamento final. A fase de criação gera como saída um template de documento que descreve o layout a ser empregado, além de elementos fixos e estáticos nele contidos. Na segunda fase, deste template são instanciados diversos documentos contendo dados específicos provenientes de uma base de dados. Cada instância é repassada para um processo de formatação, renderização e rasterização 1 (terceira fase), gerando documentos prontos para serem impressos. É importante ressaltar que os três processos pertencentes a última fase são complementares: primeiramente o documento é formatado por uma determinada linguagem, logo após é aplicado o processo de renderização transformando-o em um formato composto e, por fim, para que este seja visualizado ou impresso, faz-se o processo de rasterização, onde se converte o documento renderizado para uma representação de pontos no papel ou pixels numa tela. Diversas vantagens são obtidas através da aplicação deste fluxo de trabalho segmentado: as empresas são capazes de lidar mais facilmente com impressões de uma grande quantidade de dados, devido a existência de fases bem definidas e corretamente especificadas; separou-se o design do conteúdo, permitindo a composição do layout independen- 1 processo de transformação de um gráfico vetorial para uma representação de pixels ou pontos, podendo assim serem visualizados numa tela ou impressos.

16 2. Documentos Personalizáveis 7 temente da disponibilidade dos dados em um primeiro momento; liberdade para aplicar a tecnologia que melhor se adapta a necessidade de cada empresa, além do fluxo ser facilmente extendido. 2.3 W3C W3C (World Wide Web Consortium) [7] trata-se de um consórcio internacional de empresas e universidades preocupadas com padrões para a criação e interpretação de conteúdo para o ambiente Web (da internet). Os guias e regras providos por este grupo (chamados de W3C Recommendations) dispõe da melhor maneira de utilizar as tecnologias existentes em tal cenário. Além disso, o grupo W3C é responsável pela criação de diversas linguagens, presentes na realidade atual de mercado, como por exemplo: o HTML (HyperText Markup Language) [8], o XHTML (Extensible HyperText Markup Language) [9], CSS (Cascading Style Sheets) [10], entre outras. Como visto anteriormente, para a utilização de VDP são necessárias linguagens capazes de descrever e formatar o conteúdo variável e estático de um documento. Assim, algumas das tecnologias propostas pelo W3C foram adotadas no âmbito da impressão digital de documentos variáveis. Tal escolha decorre do fato de que o desenvolvimento destas é resultado de diversos anos de pesquisa por um grupo consolidado, que atua diretamente no mercado, apresentando diversas características desejáveis, tais como flexibilidade, portabilidade, robustez e uma especificação que condiz com o propósito de VDP. 2.4 XML XML (Extensible Markup Language) [11] é uma metalinguagem utilizada para representar dados de forma estruturada. Desenvolvido pelo W3C, a princípio, o XML deveria ser aplicado para facilitar a troca de informações através da internet. Entretanto sua utilização foi adotada em outros cenários, como na área de impressão digital de documentos, tornando-se um padrão para a descrição de informações pertinentes a determinados contextos. Nesta seção será apresentada a estrutura de um documento XML, assim como categorias de aplicações existentes para interpretar este tipo de linguagem Estrutura e Características do XML Derivado do SGML (Standard Generalized Markup Language) [12], o XML é mais especifico do que o primeiro, tornando mais fácil a sua análise gramatical e o seu processamento. Contudo, as chamadas tags (palavras delimitadas por < e > ), que se

17 2. Documentos Personalizáveis 8 tratam da estrutura utilizada no XML para delimitar um determinado conteúdo, descendem diretamente do SGML. No corpo de tais estruturas (entre <palavra e > ), podem ser definidos atributos pertinentes a tag, possuindo a sintaxe da forma nome do atributo = valor do atributo. Tratando-se de um documento XML bem formado (correto), para cada tag (de abertura) encontrada no documento, deve existir sua correspondente tag de fechamento, expressa por </palavra>, onde palavra é a mesma da primeira. Além disso, outro quesito deve ser respeitado: é preciso que uma única tag, referida como root, englobe todas as demais, representando uma forma de pacote para toda a estrutura subseqüente. Entre uma tag de abertura e sua respectiva de fechamento podem ser encontrados: nada (vazio), informações ou outras tags. Assim, uma característica marcante da metalinguagem deve ser destacada: o XML é organizado de forma hierárquica. Isto decorre do fato de que cada tag pode encapsular outros dados, sendo considerada com um nível hierárquico superior àqueles que ela contém. Além disso, o XML provê uma maneira para descrever comentários, auxiliando o usuário a manter o documento claro para outros. A Figura 2.4, ilustra um exemplo de um documento XML. Figura 2.4: Documento XML Na metalinguagem XML todas as tags são arbitrárias, significando que não são prédefinidas, ou seja, são criadas pelo usuário. Tal característica foi estabelecida para ampliar a área de aplicação desta tecnologia. Têm-se, por outro lado, casos destinados a um uso mais específico, como a metalinguagem HTML, também derivada do SGML. Da mesma forma que o XML, no HTML são utilizadas tags como estrutura de controle. Entretanto, estas não são arbitrárias, mas pré-definidas pela especificação do HTML, assim como a função realizada por cada uma delas. O HTML é puramente destinado à visualização de conteúdo em navegadores, portanto, se houver a ocorrência de alguma tag que não está contida na especificação da linguagem, o navegador não será capaz de interpretá-la. Isto restringe a utilização do HTML somente para a apresentação de conteúdo com o auxílio destes programas, enquanto o XML flexibiliza a descrição de informações para qualquer

18 2. Documentos Personalizáveis 9 aplicação, ampliando o escopo em que pode ser empregado. Outra grande vantagem obtida pelo uso de XML é a separação do conteúdo de sua formatação (ou apresentação). Como esta metalinguagem tornou-se um padrão para a representação de dados, é possível que uma ou mais aplicações troquem informações (formatadas por XML), e decidam de forma independente como apresentar o conteúdo ao usuário final. Em outras palavras, é a aplicação que decide que atitude tomar quando uma determinada tag, atributo ou conteúdo forem encontrados. Além disso, o XML provê uma maneira do usuário prefixar uma tag, com o objetivo de a definir para uma determinada situação. Tal funcionalidade é conhecida como XML Namespaces [11]. Com isso, em um mesmo documento XML, podem existir tags com nomes iguais (onde a palavra da tag é a mesma), mas com namespaces diferentes. Para utilizar o XML Namespaces deve-se colocar o prefixo desejado antes da palavra da tag, separando-os pelo caracter : (<prefixo:palavra> ou </prefixo:palavra>). Assim, a possibilidade de ocorrências de tags idênticas dentro de documentos XML distintos se torna muito baixa, permitindo a reutilização e extensão de esquemas XML já existentes. A flexibilidade apresentada pelo XML, entretanto, acaba provocando um problema: as aplicações devem ser capazes de validar a estrutura do documento XML, verificando se o documento lido condiz com a especificação original. Para auxiliar na explicação do problema, a Figura 2.5 apresenta um documento XML que descreve um conjunto de alunos de uma turma. Figura 2.5: Documento XML que descreve alunos de uma turma Analisando o caso de um único aluno, supõe-se que ele deve, obrigatoriamente, possuir pelo menos um nome (os demais dados são opcionais). Devido ao fato da criação de tags ser arbitrária, a especificação do XML não pode fixar que ao ser encontrada um elemento <aluno>, dentro deste deve necessariamente haver outra tag <nome>, contendo o nome do aluno e a respectiva terminação da tag. Desta forma, o XML provê maneiras para que seja definido que, no contexto descrito, é necessário que um aluno deva possuir um nome. Isto é feito através da utilização de documentos DTD (Document Type Definition) que podem estabelecer características mandatórias da estrutura do XML definido pelo usuário. Entre estas, atributos e tags que cada tag deve conter, tags que não devem

19 2. Documentos Personalizáveis 10 possuir conteúdo, assim como as que devem, entre diversas outras regras XML Parsers XML parsers são ferramentas ou bibliotecas utilizadas para ler dados formatados através de XML, verificando a existência de um documento sintaticamente bem formado e permitindo a realização de algumas formas de processamento sobre eles. Atualmente existem dois tipos principais de parsers XML: SAX (Simple API for XML) [13] e DOM (Document Object Model) [14]. SAX trata-se de um parser de baixo nível baseado em eventos, que provê uma especificação de API (Application Programming Interface) para lidar com estes. Este parser reporta eventos causados durante a leitura e parse do documento (como, por exemplo, uma tag inicial ou o fechamento de uma tag) através de funções de callback definidas na API. Com isso, o programador decide qual atitude tomar para os diferentes eventos. Este parser possibilita a leitura de documentos que ocupem muito mais espaço do que a memória disponível e a obtenção dos dados desejados sem a necessidade de ler o documento inteiro. O parser DOM constrói uma estrutura de árvore na memória representando o documento XML, após realizar a leitura inteira do documento em questão. Este parser, assim como o SAX, provê uma API, que neste caso serve para lidar com a árvore construída. A aplicação que está utilizando o DOM pode, então, navegar na árvore e realizar operações em cima da mesma, como, por exemplo, adicionar nodos, removê-los, editá-los e realizar conversões nos nodos já existentes. Desta forma, a manipulação do documento XML lido é realizada de forma simples e clara. Entretanto, o consumo de memória é proporcional ao tamanho do documento, desencorajando o uso deste parser para tratar com documentos muito grandes. Neste sentido, todo parser DOM e SAX pode ser classificado por duas categorias distintas, devido a realização ou não de validação. Aqueles que não realizam validação preocupam-se em processar todas as declarações do documento XML, constatando somente se este é sintaticamente bem formado. Já os que realizam validação, fazem o mesmo trabalho, mas verificam, adicionalmente, se o documento XML lido condiz com a estrutura e sintaxe definida no DTD referente a ele. Em termos de desempenho, podese notar que aqueles que não realizam validação são mais rápidos, por executarem um trabalho menor. Cabe-se ressaltar que a escolha do tipo de parser que melhor se adapta a necessidade de uma determinada aplicação é subjetiva, ao ponto de que requisitos específicos do programa devem ser analisados a fim de apontar a melhor opção. Devem ser verificados aspectos como: se é necessária a validação do documento, se será realizada de forma instigante a manipulação do XML lido, se os documentos são muito grandes, etc. Neste

20 2. Documentos Personalizáveis 11 contexto, implementações prontas de parsers DOM e SAX, que suportam validação e não validação, estão disponíveis em diversas linguagens de programação, como Java, C, C++, VB (Visual Basic), Pearl, entre outras. 2.5 XSL Pode-se constatar que a representação de dados através do formato XML provê uma maneira organizada de descrever as informações pertinentes a um determinado contexto. Entretanto, com este advento, surge a necessidade de processar estes dados para apresentálos de maneira cabível a cada situação distinta, seja para pessoas os lerem ou para aplicações os utilizarem como entrada (em um determinado formato, não necessariamente XML). Como mencionado anteriormente, o XML separa o conteúdo de sua apresentação, permitindo a sua publicação em diversos formatos, tanto em meio material, como livros, jornais, pôsters, cartas, etc., quanto em meio digital, como em texto puro, XHTML, HTML, SGML, etc. Desta maneira, deve ser possibilitada a transformação e formatação do conteúdo XML para suportar estas representações distintas. XSL (Extensible Stylesheet Language) trata-se de uma linguagem desenvolvida pelo W3C com o intuito de prover maneiras de formatar e transformar o conteúdo XML. Embasada nas linguagens CSS e DSSSL (Document Style Semantics and Specification Language) [16], em um primeiro momento, o XSL tratava-se de uma especificação única, que provia toda a sintaxe para lidar com o processamento de documentos XML. Entretanto, mais tarde, foi dividida em três linguagens diferentes: Linguagem para navegar e referenciar elementos do documento XML; Linguagem para transformar documentos XML; Linguagem para formatar documentos XML. Para possibilitar a aplicação destas tecnologias, se tornaram necessários interpretadores capazes de aplicar as instruções especificadas ao documento XML, provocando a criação dos processadores XSL, responsáveis por tal função. Esta seção apresenta as três linguagens derivadas do XSL original, assim como os processadores XSL existentes para lidar com estas XPath A linguagem XPath (XML Path language) [17] provê a sintaxe necessária para endereçar porções de um documento XML. Por fazer parte do conjunto XSL, trata-se de uma recomendação W3C e é utilizado por outras linguagens como XPointer (XML Pointer) [18] e o XQuery (XML Query) [19]. A linguagem XPath é aplicada a um documento

21 2. Documentos Personalizáveis 12 XML, assumindo que este seja bem formado. Desta maneira, o XPath não trata o XML como simples texto, mas o interpreta como uma árvore de nodos. No contexto da linguagem, sete tipos diferentes de nodos [17] podem existir: elementos, atributos, namespaces, instruções de processamento, comentários e o nodo raiz do documento. Não se deve confundir o nodo raiz do documento com a tag root deste. O primeiro se refere ao início do documento XML, ou seja, um nível acima da tag root. Além disso, a navegação implícita realizada pelo XPath lida apenas com os nodos do tipo elemento e raiz do documento, sendo necessários comandos explícitos para acessar os demais. A Figura 2.6 apresenta um documento XML, seguido de sua representação em árvore, exemplificando alguns dos tipos de nodos descritos. Figura 2.6: Documento XML versus árvore XML Além de oferecer meios de navegação na árvore formada, o XPath disponibiliza diversas maneiras para lidar com o conteúdo encapsulado pela estrutura XML. Entre elas, estão funções para manipular strings, números, valores booleanos, datas, nodos da árvore, seqüências, etc. Muitas destas foram apenas recentemente incorporadas ao XPath, com a nova versão (2.0) [20], lançada em janeiro de A sintaxe empregada no uso desta linguagem tenta se aproximar da notação de caminhos geralmente associada a sistemas de arquivos. Neste âmbito, duas categorias de sintaxe podem ser utilizadas: a abreviada e a expandida. A primeira provê uma maneira mais simples de referenciar os elementos XML, mas engloba apenas as instruções mais comuns para facilitar a navegação. Já a segunda possui um conjunto maior de recursos, mas estes devem ser descritos explicitamente através de comandos mais longos, o que pode se tornar exaustivo e repetitivo. Para atingir o potencial máximo da linguagem, é possível, então, combinar as duas sintaxes em uma única expressão XPath, obtendo as vantagens oferecidas por cada uma delas. Para facilitar a compreensão dos comandos de navegação na árvore providos pela linguagem XPath, alguns conceitos de relação entre os nodos devem ser esclarecidos. A Figura 2.7 apresenta um documento XML, juntamente com sua árvore representativa, que

22 2. Documentos Personalizáveis 13 servirá de exemplo para demonstrar os diferentes tipos de relacionamento identificados pelo uso do XPath. Figura 2.7: Árvore XML Levando em consideração a representação utilizada pela linguagem XPath para interpretar a estrutura XML (árvore de nodos), pode-se definir que cada elemento XML pode ou não possuir um pai, que se refere àquele que está exatamente a um nível superior na árvore e possui uma ligação direta com o nodo em questão. Um elemento não possuirá um pai se, e somente se, não houver nenhum outro que o encapsula no documento XML, ou seja, o elemento em questão deve estar especificamente no topo da árvore XML. Em um documento XML bem formado existe apenas um elemento que reflete tal situação: o nodo raiz do documento. Analisando o documento apresentado na Figura 2.7, pode-se constatar que o pai de <semestre1> e <semestre2> é o elemento <cienciadacomputacao>, enquanto o pai dos elementos <aluno> trata-se ou de <turma101>, ou de <turma102>, dependendo de qual elemento <aluno> se esta verificando. Por outro lado, os nodos que possuem um pai são considerados como seus filhos, portanto, no exemplo ilustrado, podese citar que <semestre1> e <semestre2> são filhos de <cienciadacomputacao>. Neste caso, todos os nodos que não são pais de nenhum outro, obviamente não possuem filhos. A partir destas duas definições podem ser construídos outros conceitos utilizados pelo XPath, como: ancestrais, descendentes e irmãos. Ancestrais de um determinado nodo tratam-se de um conjunto de nodos, do qual fazem parte: seu pai, o pai de seu pai e assim por diante até que se inclua o nodo raiz do documento. Descendentes de um nodo, por outro lado, são: seus filhos, os filhos de seus filhos e assim consecutivamente, até que os nodos incluídos até o momento não possuam mais filhos. Por fim, os irmãos de um nodo são todos aqueles que apresentam o mesmo pai que ele. Tomando como exemplo o caso do elemento <semestre1> tem-se que seus ancestrais estão contidos num conjunto formado

23 2. Documentos Personalizáveis 14 por: <cienciadacomputacao>, <pucrs>, <faculdade> e o nodo raiz do documento. Seus descendentes tratam-se de <turma101> e seus respectivos filhos: os 4 elementos <aluno>. Neste caso, os nodos texto não são inclusos na consulta, pois como dito anteriormente, a menos que descritos comandos explicítos, o XPath lida somente com nodos elementos e raiz do documento. Por fim, em termos de irmãos, <semestre1>, possui apenas um: <semestre2>. A sintaxe expandida do XPath provê comandos, chamados de axis, que condizem com as funcionalidades de todos os conceitos acima explicitados. No entanto, tais comandos não se limitam a apenas isto, fornecendo maneiras de referenciar o próprio nodo, seus atributos, seu namespace e seu nodo texto. A Tabela 2.1 apresenta os comandos fornecidos pelo XPath, juntamente com uma breve descrição sobre cada um deles. Tabela 2.1: Comandos XPath da sintaxe expandida Comando Descrição ancestor retorna todos os ancestrais de um nodo ancestor-or-self retorna o próprio nodo e todos os seus ancestrais attribute retorna todos atributos de um nodo child retorna todos os filhos de um nodo descendant retorna todos os descendentes de um nodo descendant-or-self retorna o próprio nodo e todos seus descendentes following retorna todos os elementos que ocorrem depois de um nodo com exceção de seus descendentes. following-sibling retorna todos os elementos que ocorrem depois de um nodo e são seus irmãos namespace retorna os namespaces de um nodo parent retorna o pai de um nodo preceding retorna todos os nodos que ocorrem antes de um nodo com exceção de seus ancestrais preceding-sibling retorna todos os nodos que ocorrem antes de um nodo e são seus irmãos self retorna o próprio nodo Na sintaxe expandida, o emprego destes comandos é efetuado através da forma axis::nodo [predicado 1]... [predicado N], onde os predicados são opcionais e tratam-se de alguma função ou teste que se deseja aplicar ao comando especificado. Uma construção XPath válida trata-se de um único comando ou uma conjunção de diversos deles, representando uma cadeia de referencias a nodos, cada uma executada sobre o resultado obtido com a anterior. Em termos mais práticos, pode-se, por exemplo, simplesmente desejar encontrar todos os filhos de um determinado nodo ou realizar uma busca mais complexa, como descobrir todos os filhos dos irmãos de seus ancestrais. Desta forma, a linguagem XPath provê um meio de unir os vários comandos para a composição destas expressões. Este é chamado de location path (ou caminho de localização) e consiste de um ou mais comandos separados pelo carácter / (barra), sendo avaliados da esquerda para a direita. Define-se que um caminho de localização é absoluto quando inicia por /, significando que parte do nodo raiz do documento XML. Caso contrário o caminho é relativo, o que quer dizer que se está lidando ou com uma localização previamente definida, ou com a raiz do documento, caso nenhuma tenha sido especificada. Expressões XPath com o uso da sintaxe expandida são bem intuitivas e fáceis de

24 2. Documentos Personalizáveis 15 utilizar, entretanto um pouco trabalhosas no sentido de que à medida que crescem, sua representação pode se tornar muito repetitiva e sua descrição, exaustiva. Devido a tal fato, pode-se empregar a sintaxe abreviada, facilitando a construção de expressões grandes. A Tabela 2.2 apresenta os comandos abreviados, juntamente com sua função correspondente. Tabela 2.2: Comandos XPath da sintaxe abreviada Abreviação Axis Correspondente // descendant. self.. attribute (vazio) child Desta forma, alguns dos comandos podem ser simplificados para uma notação mais enxuta, tornando possível a utilização de uma mistura da sintaxe abreviada para alguns comandos e a expandida para os demais que não possuem uma correspondente representação na primeira XSLT XSLT (Extensible Stylesheet Language Transformation) [21] é uma recomendação W3C designada para aplicar transformações em documentos XML. O próprio XSLT é baseado em XML e foi desenvolvido com o intuito de transformar um documento XML em HTML ou XSL-FO (Seção 2.5.3), desta maneira expressando a forma como seria visualizado o conteúdo encapsulado. Entretanto, sua aplicação foi expandida para a transformação de um documento XML em qualquer outro formato de texto, como WML (Wireless Markup Language) [22], XHTML, texto puro, entre outros. Para realizar tal feito, esta tecnologia se aproveita do fato de que um documento XML contém apenas o conteúdo e nenhuma referência sobre sua formatação, possibilitando a conversão dele para qualquer formato de apresentação. Além disso, o XSLT é amplamente utilizado para transformações de documentos XML em outros documentos XML, sejam eles mais simples, mais complexos ou com representações particulares. Como visto anteriormente, a tecnologia XML trouxe a liberdade de criar tags arbitrárias para ampliar a sua área de aplicação. Devido a tal fato, diferentes usuários podem representar o mesmo conteúdo através de estruturas distintas, provocando a necessidade de um processo de transformação, para que a aplicação de um possa utilizar um certo documento de outro. Por exemplo, no caso de duas empresas: a primeira pode representar seus funcionários com o uso da tag <funcionario>, enquanto a segunda pode descrevê-los com o auxílio da tag <empregado>. Nota-se que neste caso o uso de DTD não se aplica, pois sua função não é estabelecer uma forma única para a representação do conteúdo, o que não seria possível, mas sim determinar a maneira correta de utilizar o XML criado por um usuário em uma situação específica (por exemplo, em determinada aplicação). Aqui se está lidando com a situação de diferentes maneiras de se representar o

25 2. Documentos Personalizáveis 16 conteúdo, para o utilizá-lo em aplicações distintas. Isto pode naturalmente se diferenciar, pois cada usuário terá a sua própria maneira de estruturar o documento XML. Por outro lado, o XSLT não é somente utilizado para realizar transformações, mas também se aplica a circunstâncias em que se deseja descobrir informações de um certo documento XML, como, por exemplo: quantos funcionários a empresa possui, qual o nome do funcionário com algum RG específico, quem são todos os gerentes da empresa ou qual a soma dos salários de todos que participam dela. Neste sentido, a noção de XSLT se aproxima muito de querys de banco de dados e por isso é classificado, também, como uma linguagem de query XML. Inicialmente, XSLT não apresentava a base necessária para suportar tal funcionalidade, conforme descrito em [23], entretanto, a versão atual contém as primitivas necessárias, tornando-o hábil a realizar buscas complexas no documento de forma eficaz. A fim de prover as funcionalidades apresentadas acima, o XSLT utiliza o conhecimento obtido pelo uso de XPath no documento XML. O XPath é um elemento chave nesta linguagem e sem este não é possível criar documentos XSLT para efetuar as transformações ou buscas. Como mencionado anteriormente, a saída de uma transformação é o resultado do processamento do XSLT sobre um documento XML. Esta execução é realizada por um componente chamado de XSL Processor (seção 2.5.4), que tem como entrada os documentos XML e XSLT (ou XSL-FO). É importante ressaltar que o documento XML de entrada não é modificado durante a computação, pois sempre é gerado um arquivo de saída novo, contendo os resultados da aplicação das transformações. Assim, para um mesmo documento XML podem haver diversos XSLT permitindo distintas transformações sobre os mesmos dados. A linguagem XSLT utiliza uma forma modular de implementação, contendo diversos componentes templates, nos quais são especificados padrões de ocorrência (matching patterns) que definem quando cada template deve ser instanciado. Todos os padrões são descritos pelo uso de expressões XPath. Dentro de um template são colocados trechos de código descrevendo alguma transformação. Por default o template instanciado quando iniciada a transformação é aquele que possui o padrão /, referente a raiz do documento. A Figura 2.8 apresenta os módulos descritos. Assim que o template inicial é instanciado, é necessário aplicar os demais templates através de uma chamada explícita. Para tanto, existe uma função específica do XSLT (apply-templates), onde é passado um conjunto de nodos (através de uma expressão XPath) por parâmetro. Assim, o XSLT, basicamente, procura o template com o padrão de ocorrência que melhor se encaixa com estes nodos, instanciando-o. No caso em que se encontre um template que sirva, muda-se o contexto para o nodo que se encaixou com o padrão dele e realiza-se o processamento descrito. Da mesma forma, neste passo, novas aplicações de template podem ser realizadas. A Figura 2.9 ilustra, então, para o

26 2. Documentos Personalizáveis 17 Figura 2.8: Estrutura modular do XSLT exemplo anterior a chamada apply-templates. Pode-se analisar que o parâmetro select, leva em consideração que o nodo atual é aquele especificado pelo padrão de ocorrência do template em que está contido. Desta maneira, é possível utilizar caminhos relativos ao nodo contexto ou caminhos absolutos, ignorando o nodo contexto atual e partindo-se da raiz do documento XML. Da mesma forma, ambas as representações de caminhos podem estar presentes nos matching patterns dos templates. Figura 2.9: XSLT Apply-templates Além do apply-templates, o XSLT provê funcionalidades, como: condicionais baseados em valores dinâmicos obtidos através do documento XML, como if e choose (equivalente ao switch case de C); definições de variáveis estáticas, com valores pré-fixados, ou dinâmicas, obtidas por um valor lido do XML, para realizar conversões de tipos, operações aritméticas, etc.; laços sobre elementos do documento e ordenações nos valores de cada nodo do XML.

27 2. Documentos Personalizáveis XSL-FO A linguagem XSL-FO (Extensible Stylesheet Language Formatting Objects) [24] tratase de uma recomendação W3C e é utilizada para descrever o layout e formatação do conteúdo, o qual se está encapsulando. XSL-FO é inteiramente baseado em XML, facilitando o uso de XSLT para transformar um determinado conteúdo estruturado pelo XML em um documento XSL-FO contendo as diretivas referentes a apresentação do conteúdo. Entretanto, não é preciso utilizar a linguagem XSL-FO somente para formatar determinado conteúdo descrito pelo uso de XML, podendo ser destinada a uma situação em que se tenha, por exemplo, texto puro. Devido a sua proveniência ser de linguagens presentes a muito tempo no mercado, como o DSSSL e o CSS, sua especificação foi criada com o uso da experiência adquirida pela aplicação destas a diferentes situações. Deste modo, o XSL-FO foi desenvolvido atendendo diversas necessidades específicas dos usuários, cobrindo todos os pontos fracos apresentados pelas linguagens anteriores. Assim como seus predecessores, para que um documento XSL-FO seja inteligível a um leitor humano ou impresso de forma correta é necessário um processo de renderização. Neste caso, traduz-se os comandos expressados pelo XSL-FO para um formato visualizável. Na situação em que o conteúdo a ser formatado trata-se de um documento XML, todas as tags arbitrárias devem ser eliminadas, filtrando apenas o conteúdo de interesse, pois a engine de renderização não será capaz de interpretá-las. Em termos de formatação, a linguagem XSL-FO organiza o conteúdo de forma paginada. Assim são fornecidas diretivas elementares de navegação em páginas, como númeração, cabeçalhos, rodapés, entre outras. Por outro lado, o XSL-FO não se preocupa em que tipo de media o documento formatado irá ser visualizado, mas apresenta uma abordagem genérica para qualquer um deles. É a engine de renderização, a responsável pelo formato de resultado que irá ser gerado, seja ele uma página da internet ou um documento a ser impresso. Com o uso da linguagem XSL-FO as seguintes seções de um documento são descritas: Páginas: as próprias páginas de um documento, cada uma delas contendo regiões; Regiões: descrevem diferentes regiões de uma página, cada uma delas contendo blocos; Blocos: apresenta outros blocos, linhas, parágrafos, tabelas e listas; Linhas: descreve textos numa linha e podem conter elementos inline; Elementos Inline: elementos dentro de uma linha, como símbolos, textos com formatações específicas, etc. A Figura 2.10 ilustra os alguns dos diferentes elementos [24], referentes a paginação, que em conjunto formam um componente XSL-FO.

28 2. Documentos Personalizáveis 19 Figura 2.10: Componentes de um documento XSL-FO Um elemento XSL-FO é encapsulado pela tag fo:root. Logo após, encontra-se a tag fo:layout-master-set que contém diversos templates de páginas, especificando formatações como o tamanho das margens, a altura e largura das páginas. Estes são descritos pelo uso da tag fo:simple-page-master, onde as diversas regiões de uma página podem ser formatadas independentemente umas das outras. Estas tags possuem um atributo mastername onde se define um nome único para refenciá-las, aplicando assim a formatação estabelecida. No escopo de um fo:simple-page-master, a Figura 2.10 demonstra as regiões existentes em uma página. Um exemplo comum da disposição destas regiões seria o caso em que a região fo:region-start significaria a parte esquerda da página, fo:region-end, a direita, fo:region-before, o topo, fo:region-after, a base e a fo:region-body o meio (Figura 2.11). Figura 2.11: Exemplo de disposição das regiões XSL-FO em uma página Contudo, a porção referenciada por uma determinada região do XSL-FO é dinâmica, podendo assumir diferentes valores conforme alguns parâmetros especificados na definição do layout da página. Assim, é possível rotacionar as regiões, informando, por exemplo, uma configuracão alternativa em que fo:region-start correspondesse à porção direita da página, fo:region-end à esquerda, fo:region-after ao topo e fo:region-before à base. Com isso, o usuário obtém um maior controle quanto a configuração da estrutura de cada página do documento. Além disso, o XSL-FO permite especificar a direção do texto contido em

29 2. Documentos Personalizáveis 20 uma região. Isto ocorre devido ao suporte a internacionalização provido pela linguagem. Assim, é possível formatar documentos em que o texto é apresentado por exemplo, da direita para esquerda (no caso de uma língua árabe) ou de cima para baixo (no caso da língua chinesa). É devido a estas características do XSL-FO que os termos utilizados no âmbito da linguagem fornecem uma idéia mais ampla e não prefixam as porções do documento, como com o emprego de left, right, top e bottom. Outro elemento que pode estar contido dentro de um fo:layout-master-set é o fo:pagesequence-master, que define um tipo de paginação mais complexo. Todos os filhos deste, especificam regras quanto a geração de um documento, possuindo um atributo que referese a um nome único, utilizado para a aplicação de cada um deles. Além disso, estes não estabelecem a formatação propriamente dita de cada página e para tanto referenciam um fo:simple-page-master. São estes: fo:single-page-master-reference, fo:repeatable-pagemaster-reference e fo:repeatable-page-master-alternatives. No caso do uso de fo:single-page-master, é definido que para aquele que o referencia, apenas será gerada uma única página. Se o conteúdo especificado ultrapassar este limite um erro será gerado. Com o uso de fo:repeatable-page-master-reference são geradas de 0 até N páginas, onde N é um valor pré-definido pelo usuário. Se N for ultrapassado, um erro será gerado, caso contrário não, mesmo que o número de páginas for menor que N. Por fim, fo:repeatable-page-master-alternatives define diversas alternativas de formatação para uma página, quando uma determinada regra for encontrada. Estas são representadas pela tag fo:conditional-page-master-reference que referencia um fo:simple-page-master a ser utilizado. Esta regra pode ser, por exemplo, aplicar uma formatação quando a página for par e outra quando for ímpar. No conteúdo de uma página, diversos modos de cores diferentes podem ser aplicados, como RGB (Red, Green and Blue), CMYK (Cyan, Magenta, Yellow and Key) ou algum personalizado. Entretanto, para utilizá-los, estes devem ser explicitados através do uso do elemento fo:declarations. Esta tag é opcional, mas se utilizada pode conter um ou mais fo:color-profile que especificam um tipo de cores específico. Quando instanciado o conteúdo no XSL-FO, pode-se então, referenciar os diferentes modos conforme desejado. Por fim, tem-se a definição de um conjunto de páginas através da tag fo:page-sequence, que referencia algum elemento do fo:layout-master-set para definir a formatação de cada uma delas. Em um mesmo documento XSL-FO podem existir diversas fo:page-sequences. Nestas, pode ser definido um fo:title, que não produz uma saída diretamente visível no documento, mas uma propriedade. Assim, permite-se adicionar informações para descrever o conjunto correspondente, como uma espécie de comentário em uma linguagem de programação. Além disso, tem-se a tag fo:static-content que referencia uma região da página, especificando dados que podem ser reutilizados no conjunto subseqüente da fo:page-sequence, como cabeçalhos e rodapés. Por outro lado, o elemento fo:flow define o conteúdo distinto de uma determinada região das páginas. Cabe ressaltar que, caso

30 2. Documentos Personalizáveis 21 o conteúdo descrito neste elemento ultrapasse uma página, são instanciadas tantas outras quantas necessárias, sendo preenchidas com o restante do conteúdo se a formatação especificada pelo elemento do fo:layout-master-set referenciado permitir. No contexto de cada fo:flow tem-se um ou mais parágrafos, representados pela tag fo:block e neste podem ser definidos diferentes aspectos do bloco, como margens, bordas, fontes, alinhamento, etc. Estes podem ser compostos unicamente por texto, tabelas ou listas. Além disso, o XSL-FO provê uma maneira de formatar apenas uma parte do conteúdo contido dentro de um bloco, através dos elementos inline, definidos pela tag fo:inline. Estes podem ser utilizados, por exemplo, para definir um pedaço do texto com uma formatação específica, como negrito ou itálico Processadores XSL Atualmente, existem duas categorias distintas de processadores XSL: os que lidam com XSLT e os que lidam com XSL-FO. Os primeiros são responsáveis por realizar as transformações descritas nos documentos XSLT, enquanto os segundos devem gerar um documento inteligível e visualizável a partir das primitivas de formatação. Os processadores XSLT normalmente recebem como entrada um documento XML e outro XSLT, apesar de existir a possibilidade de criar documentos XML com as diretivas de transformação integradas nos próprios. Separar o o documento XML do XSLT, facilita a criação de diversas transformações distintas para o mesmo conjunto de dados XML, por isso é preferível. Devido a necessidade de verificar se o XML de entrada e o próprio documento XSLT são documentos XML bem formados, estes processadores incluem um parser XML que garante tal requisito, antes de ser aplicada quaisquer transformações. Para facilitar a transformação dos documentos, o arquivo XML de entrada é lido para uma estrutura em árvore (chamada de source tree), através da utilização de um parser XML da categoria DOM. Tendo isto em mãos, o processador XSLT pode então, navegar nesta, aplicando os templates especificados na linguagem de transformação. Assim, cria-se uma nova árvore como resultado, chamada de result tree. Esta pode, então, ser escrita em um arquivo, enviada a outro determinado fluxo de saída ou repassada para um outro documento XSLT. Os processadores XSL-FO recebem como arquivo de entrada um único documento XSL-FO, para então processar a formatação especificada. Isto ocorre, pois o conteúdo a ser formatado já está presente neste documento, juntamente com as diretivas de formatação. Neste caso também é necessário a utilização de um parser XML, avaliando se o próprio documento XSL-FO de entrada trata-se de um XML bem-formado. Normalmente, estes processadores oferecem uma variada gama de formatos de saída, o que é possível devido a flexibilidade da linguagem XSL-FO. Através da leitura do arquivo de entrada é gerada uma árvore (source tree), onde cada nodo é um objeto com o conteúdo e a for-

31 2. Documentos Personalizáveis 22 matação correspondente. A partir desta árvore, de forma iterativa cria-se outra (result tree), definindo como os objetos devem ser exibidos, com suas posições, cores, bordas, margens, etc. A leitura desta árvore demonstra, então, o documento final e como ele será apresentado. A computação realizada pelos processadores XSL-FO é conhecida como um tipo de renderização e na linguagem comercial os próprios são chamados de engines de renderização. 2.6 PODi Com o mesmo propósito do W3C, PODi (Print On Demand Initiative) [25] foi criado em 1996, com o intuito de criar padrões e descobrir a melhor maneira de utilizar as diversas tecnologias existentes no mercado. Entretanto, esta iniciativa voltou-se para um âmbito diferente do W3C, focando na impressão digital de documentos. O PODi reúne diversas empresas atuantes no mercado de impressão, formando um consórcio com fins não lucrativos. São membros deste grupo grandes empresas como: Adobe, Canon, HP (Hewlett-Packard), Xerox e Kodak. Através do PODi, os participantes podem trocar experiências e publicar estudos realizados no cenário de interesse. Através de tais pesquisas o grupo PODi promove guias, artigos, relatórios e conferências, relatando as melhores práticas para as tecnologias presentes no mercado. Estes resultados são disponibilizados para os membros do grupo, que podem então aplicá-los no funcionamento geral de sua empresa. Além disso, o PODi é responsável por criar padrões e tecnologias, ambos abertos ao público em geral, que melhor se encaixam e suprem as necessidades existentes de empresas interessadas na área de impressão digital. O consórcio é responsável pelo desenvolvimento de linguagens baseadas em XML, que é um padrão já consolidado, promovendo características desejáveis no âmbito de impressão digital de documentos como a flexibilidade e a extensibilidade. 2.7 PPML PPML (Personalized Print Markup Language) [26] é uma linguagem baseada em XML desenvolvida pelo PODi para a criação de um ou mais conjuntos de documentos personalizados de alta definição. Uma de suas grandes vantagens trata-se da possibilidade de descrição de objetos reutilizáveis, que podem ser referenciados pelos documentos, diminuindo assim a redundância e o tamanho dos documentos a ser impresso. Tal facilidade otimiza o processo de impressão como um todo, pois estes objetos são processados uma única vez pela impressora, que os armazena na sua cache, acessando-os quando necessário. Além disso, esta linguagem não pré-estabelece o formato do conteúdo dos documentos,

32 2. Documentos Personalizáveis 23 mas oferece meios para apenas demarcar a área ocupada por ele no documento, flexibilizando o uso de qualquer linguagem para descrevê-lo. Por ser baseado em XML, o PPML é uma linguagem hierárquica, que utiliza tags aninhadas para encapsular o conteúdo pertinente a cada situação. Em um documento PPML, a tag root trata-se da <ppml>. Dentro desta podem haver um ou mais conjuntos de documentos, cada um deles contidos na tag <document_set> ou <job>. Estas tags são sinônimos, portanto qualquer uma delas pode ser empregada para o mesmo fim. Normalmente, a formação de um conjunto refere-se ao tratamento dos documentos nele contidos como uma unidade única, por exemplo, quando são destinados ao mesmo cliente. Entretanto, o agrupamento dos documentos não é sempre necessário, portanto pode-se omitir tais tags, definindo um único conjunto diretamente dentro da <ppml>. Neste sentido, cada documento é descrito com o uso da tag <document>, demarcando um conjunto de páginas relacionadas. Estas são formadas pela tag <page>, cada uma contendo uma <page_design> e uma ou mais tags <mark>. A primeira descreve a área retangular da página que o conteúdo vai ocupar, através de parâmetros como a largura e altura da página. Além disso, pode-se definir áreas de sangramento (bleeding areas), que são aquelas que ultrapassam a área retangular previamente estabelecida. Os segundos também definem áreas retangulares, mas dentro de um <page_design>, que serão preenchidas com o conteúdo propriamente dito. Este conteúdo pode tratar-se de qualquer formato, como uma imagem, um componente XSL-FO ou elemento já renderizado. A Figura 2.12 apresenta a estrutura de um documento PPML descrito até então. Figura 2.12: Estrutura inicial de um documento PPML Como mencionado anteriormente, com o uso de PPML é possível estabelecer objetos reutilizáveis (reusable objects), que serão referenciados no contexto de cada documento. Estes objetos são definidos através da tag <reusable_object>, que contém zero ou uma view, um ou mais objetos filhos e uma lista opcional com diferentes views associadas a

33 2. Documentos Personalizáveis 24 cada destes. As views são elementos que determinam se alguma transformação ou corte serão feitos no objeto que referenciam. Neste sentido, a view de um reusable object é descrita através da tag <view>, os objetos contidos nele são delimitados por <object> e as views de cada elemento <object> são apresentadas por uma lista <occurrence_list> que contém uma ou mais tags <occurrence>, referenciando um dado objeto. Sendo assim, cada elemento <occurrence> terá uma <view>. O formato dos objetos, é definido através de uma tag <source> que este engloba e o próprio conteúdo pode ser descrito diretamente ou referenciado através de um arquivo externo que o possui. Para tanto, as tags <internal_data> e <external_data> são utilizadas respectivamente. Um reusable object pode ser especificado no domínio de um PPML inteiro, de um <document_set> (ou <job>), de um único documento ou de uma página. Neste sentido, existem diversas políticas para melhor definir e distribuir os reusable objects em um PPML, melhorando o desempenho do processo de impressão. Tais políticas fogem do escopo deste trabalho, para tanto o autor se refere a [27]. Com a finalidade de utilizar os reusable objects definidos, deve-se referenciá-los dentro de um <mark>. Isto é realizado através da tag <occurrence_ref>. Por outro lado, não é mandatório que um <mark> deva referenciar um reusable object, podendo conter elementos <object>, descrevendo o conteúdo diretamente. A Figura 2.13 ilustra a estrutura completa de um documento PPML, a partir dos elementos apresentados. Figura 2.13: Estrutura final de um PPML

34 2. Documentos Personalizáveis PPMLT PPMLT (Personalized Print Markup Language-Template) [28, 29] trata-se de um padrão PODi, empregado na descrição de templates que servirão para a criação de documentos personalizados. É baseado totalmente em XML e foi desenvolvido com o intuito de facilitar o processo de criação, tornando possível o processo de design do documento antes mesmo de se obter todas as informações variáveis de cada um deles. Este formato pode ser dividido em três porções representativas, encapsuladas pela tag root <ppmlt>: Template, Data-Mapper e Data. O primeiro elemento, expressado com o uso da tag <template>, descreve o protótipo de um documento PPML, definindo suas as porções fixas e dinâmicas (personalizáveis). Este protótipo será combinado com os dados contidos no próprio documento PPMLT (presentes na porção Data), gerando diversas instâncias de documentos PPML. Para realizar tal feito, o PPMLT utiliza a linguagem XSLT, que descreve as porções variáveis dos documentos. Ainda mais, através do auxílio desta é possível aumentar o grau de flexibilidade do documento, fazendo com que o mesmo apresente layouts variados conforme os dados presentes na seção Data. Por exemplo, se os dados descrevem clientes de uma loja qualquer, é possível adaptar o PPML gerado passando uma mensagem se o cliente for do sexo masculino e outra, se feminino. O elemento Data-Mapper é descrito pelo uso da tag <data_mapper> e tem a função de mapear o conteúdo presente no elemento Data para o próprio template. Este elemento é opcional, pois tal mapeamento pode ser feito diretamente com uso de XSLT, estabelecendo certas condições para a aplicação que processa o documento PPMLT ser capaz de entender qual campo, definido na porção Data, corresponde a cada parte variável do template. Figura 2.14: Records de um PPMLT Por fim, a seção Data é definida pela tag <data>, podendo conter dados externos, presentes em outro arquivo, ou internos definidos no próprio PPMLT. Se externos, é feito o uso da tag <external_data> referenciando um arquivo, caso contrário, da tag <internal_data>. Na última o conjunto de informações é descrito diretamente no PPMLT. Neste sentido a tag <records> engloba um ou mais elementos <r> (representando um

35 2. Documentos Personalizáveis 26 record), cada um deles responsáveis por gerar uma instância de documento PPML. No contexto de um record são definidas diversas tags, cada uma delas com o nome referente ao campo que representam na instância de documento e contendo o valor do dado campo. A Figura 2.14 apresenta uma estrutura válida de um documento PPMLT, exemplificando o formato dos elementos <r>. A utilização de PPMLT oferece uma grande vantagem quanto ao tamanho em disco que um documento irá ocupar. A Tabela 2.3, retirada de [29], demonstra a significativa diferença de tamanho quando comparado a um simples PPML. Tabela 2.3: Comparativo do tamanho de um arquivo PPMLT e um PPML 25 documentos documentos documentos documentos PPMLT 18Kb 154Kb 1,41Mb 14Mb PPML 140Kb 4,52Mb 45Mb 450Mb 2.9 PDL PDL (Page Description Language), também conhecido como PCL (Printer Control Language), trata-se de uma linguagem de alto nível de abstração, utilizada para descrever o conteúdo de uma ou mais páginas. Através do emprego deste tipo de linguagem, o texto e imagens de um documento são descritos através de comandos específicos, ao invés de um mero conjunto de pontos (Figura 2.15). Estes comandos são computados na própria impressora, que através de um processo de rasterização gera a sua representação específica do documento a ser impresso. Figura 2.15: Impressão de dados com e sem o uso de PDL Sem o auxílio deste tipo de tecnologia, para se imprimir um objeto, como, por exemplo, uma frase, seria necessário enviar todos os pontos da página que este irá ocupar, para que então, a impressora os lesse e conseguisse imprimí-los. Assim, esta abordagem traria diversas limitações, pois conforme o tamanho do documento crescia, a informação enviada para as impressoras se tornava gigantesca, prejudicando o desempenho da impressão dele. Além disso, à medida que se desejava utilizar uma resolução maior para as imagens e os texto contidos no documento, maior era o conjunto de pontos submetidos a impressora, atrasando mais ainda a impressão do documento.

36 2. Documentos Personalizáveis 27 PDL otimiza o processo de impressão por diminuir a quantidade de informação a ser transmitida para o dispositivo e facilita a capacidade de integração com esquemas complexos de texto e imagem. Esta linguagem flexibiliza o uso de altas definições de objetos de um documento e é independente do dispositivo no qual será impressa, portanto portável. Dois exemplos de PDL são o PDF (Portable Document Format) [30] e o PS (PostScript) [31] SVG SVG (Scalable Vector Graphics) [32,33] trata-se de um tipo de PDL com grande aplicação na área de impressão de documentos digitais. É uma linguagem open source utilizada para descrever gráficos bidimensionais. O único PDL baseado totalmente em XML, SVG foi desenvolvido pelo grupo W3C com amplo suporte empresarial, como Adobe, Apple, HP, IBM, Microsoft, entre outras. Estas organizações trabalharam em conjunto com o W3C para tornar o SVG no formato padrão para a descrição de gráficos vetoriais. Inicialmente esta tecnologia surgiu para ser utilizada na internet, entretanto sua aplicação extrapolou tal ambiente, sendo incorporada à diversos outros cenários, entre eles o de impressão digital de documentos variáveis. Com o uso de SVG podem se obter gráficos de alta qualidade que independem de resolução. A tradução literal para o acrônimo SVG nada mais é do que gráficos vetoriais escaláveis. Em outras palavras, um gráfico escalável significa que ao aumentar ou diminuir a resolução da imagem, não haverá perda quanto a definição da mesma. Isto ocorre, porque esta linguagem utiliza instruções baseadas em vetores (portanto gráficos vetoriais escaláveis) para descrever os objetos contidos na imagem, diferentemente de outros formatos de imagens (formatos bitmap) como GIF (Graphics Interchange Format), JPEG (Joint Photographics Experts Group) e PNG (Portable Network Graphics), que utilizam uma matriz de pontos (pixels) individuais que compõe uma imagem. No caso de SVG, ao ocorrer alguma mudança na resolução, as instruções descritas por este formato são capazes de se adaptar, enquanto no caso do uso da matriz, os pixels são apenas replicados, causando uma perda de definição da imagem em questão (Figura 2.16). Com isso, é possível imprimir gráficos SVG em qualquer resolução sem a perda de definição, nem o efeito pixelado (ou escadinha ) que pode ser observado em formatos bitmap. Além disso, por basear-se em XML, a tecnologia SVG contém muitos fragmentos de texto repetidos, o que facilita a sua compressão, tornando-o significantemente menor do que formatos bitmap. Existem três tipos de objetos que podem ser descritos pelo uso de SVG: formas gráficas vetoriais (compostas por linhas e curvas), imagens (podendo incluir imagens de outro formato, como JPEG e PNG) e texto. Estes objetos podem ser agrupados, estilizados e transformados (com a aplicação de filtros de imagens, máscaras, regiões de corte, etc). Por ser baseado em XML, o usuário pode facilmente manipular ou visualizar seus objetos

37 2. Documentos Personalizáveis 28 Figura 2.16: SVG versus bitmap através da utilização de um parser DOM, que provê acesso aos atributos, propriedades e elementos da árvore XML descrita pela linguagem. Além disso, é um formato que é facilmente integrado com os demais padrões XML, como por exemplo, XSLT e XSL-FO. O uso desta linguagem provê outras funcionalidades como o suporte a animações e interação com o usuário. Uma área amplamente beneficiada pelas características do formato SVG trata-se da geografia, mais especificamente da cartografia [34], onde técnicas como o Zoom podem ser aplicadas sem a perda de definição da área a qual se está analisando. Contudo, a linguagem SVG ainda apresenta algumas limitações quanto ao suporte para animações, interabilidade e alguns aspectos para flexibilizar a visualização de imagens em diferentes formatos de tela. Todavia, por ter como base o XML, é uma linguagem extensível, facilitando a criação de novas funções para lidar com os problemas correntes. O CSVG (Constraint SVG) [35] trata de alguns dos problemas existentes do formato SVG e mantém a compatibilidade com o SVG original. Entretanto, o uso de SVG puro já provê todos os requisitos necessários para a impressão digital de documentos variáveis de alta definição, não sendo necessário (até então) o uso de tais extensões.

38 3 Abordagem Proposta Neste Capítulo propõe-se estudos e novas estratégias referentes ao funcionamento de ferramentas e documentos ligados ao escopo da renderização de documentos. A renderização por si só trata-se do processo de interpretação de uma determinada linguagem de formatação crua, objetivando apresentar o conteúdo por ela encapsulado de forma inteligível a um leitor humano. Esta computação é empregada no pré-processamento de documentos personalizáveis, permitindo que estes sejam impressos. Como apresentado anteriormente, existem diversas tecnologias que podem estar presentes na construção de um documento variável. Este Capítulo fornece, em um primeiro momento, uma breve apresentação sobre as linguagens aplicadas aos arquivos de entrada utilizados neste estudo e aos arquivos de saída resultantes. Logo após, descreve o funcionamento da ferramenta seqüencial responsável por efetuar a renderização dos documentos, seguindo da métrica escolhida para medir o custo computacional associado ao processamento de cada um destes. Por fim, discorre sobre nova estratégia paralela proposta para acelerar a computação. 3.1 Estrutura dos Arquivos de Entrada e Saída Neste trabalho, os documentos de entrada utilizados pela versão seqüencial, paralela e para validar a métrica proposta são compostos pela união das tecnologias PPMLT e XSL-FO. Tal escolha foi feita, pois esta situação representa a grande maioria dos casos de diversas print shops que utilizam a técnica de VDT. Com esta combinação, é possível alcançar um alto grau de flexibilidade, reusabilidade e otimização de impressão. Neste contexto, a linguagem PPMLT é responsável por descrever o conteúdo estático de um documento, enquanto o XSL-FO é aplicado na formatação do conteúdo dinâmico encapsulado dentro de cada <mark> do próprio PPMLT. Além disso, por este trabalho focar exatamente na fase de renderização do processo de impressão, o conteúdo personalizado proveniente da base de dados já está contido em todos os arquivos de entrada. Mais especificamente, o elemento <data> do template descrito através de PPMLT, já contém todos os records necessários para gerar um número determinado de instâncias de documentos de um job a ser impresso. Assim, cada instância gerada terá o formato PPML, contendo partes descritas pela linguagem XSL-FO. 29

39 3. Abordagem Proposta 30 Por outro lado, este estudo será focado para o processo de renderização dos elementos XSL-FO para um PDL específico. Um dos PDLs mais utilizados no âmbito da impressão digital trata-se de SVG, por apresentar características como, extensibilidade, flexibilidade e capacidade de descrição de gráficos de alta qualidade. Portanto, a saída gerada pelas ferramentas trata-se de um conjunto de documentos definidos em um arquivo PPML, cada um contendo porções descritas em linguagem SVG. 3.2 Composition Tool Composition Tool (CTool) é a aplicação responsável por realizar a renderização de arquivos PPML ou PPMLT. Por lidar com estas tecnologias, a ferramenta engloba um parser XML, para verificar a corretude do documento de entrada, um processador XSLT, responsável por aplicar as diretivas especificadas pela linguagem XSLT presentes no PPMLT e um processador XSL-FO que realiza a renderização dos componentes necessários. A CTool utiliza um parser XML do tipo SAX, obtendo a capacidade de lidar com documentos grandes e entre os diversos processadores XSL-FO disponíveis e a engine de renderização adotada trata-se da aplicação FOP (Formatting Objects Processor) [36]. A ferramenta FOP é capaz de renderizar elementos XSL-FO para uma variada gama de formatos PDL, entre eles SVG. É uma aplicação Java open source, implementada com o uso de padrões de programação, sendo flexível e extensível. Considerando a situação em que o formato do arquivo de entrada é um PPMLT, o processamento realizado por esta ferramenta pode ser divida em duas fases complementares. A primeira fase corresponde a geração das instâncias de documentos descritos pela linguagem PPML, contendo os dados pertinentes a cada uma delas. Ao receber um PPMLT, toda a formatação, mapeamento e dados estão dispostos separadamente nos componentes correspondentes. Para cada elemento <r>, descrito no PPMLT é necessário gerar uma instância de documento <document> no PPML de saída. Portanto, primeiramente a CTool aplica o template de documento descrito a cada record existente no PPMLT gerando diversos elementos <document>, cada um representando um documento real de um job. Os dados gerados não são armazenados na memória, pois podem ser muito grandes, mas são escritos em disco, sendo utilizados como entrada na próxima fase de processamento. A primeira fase é ilustrada na Figura 3.1. Com isso, é realizada a segunda parte do processo em que é necessário efetuar a renderização propriamente dita. Analisando o documento PPML de saída pode-se perceber que ele possui a mesma estrutura do PPML de entrada, mas com as porções descritas por XSL-FO substituídas por SVGs correspondentes. Assim, o processamento consiste em um parse do documento de entrada, copiando as porções PPML diretamente para o arquivo de saída e quando encontrado um XSL-FO, extraindo-o para renderizá-lo. Para tanto, à medida que não aparecer nenhum conteúdo renderizável, a aplicação simplesmente o

40 3. Abordagem Proposta 31 Figura 3.1: Primeira fase do processamento da CTool escreve no arquivo de saída. Assim que encontrada a tag correspondente ao início de um XSL-FO (a tag <fo:root>), passa-se a armazenar todo o conteúdo em um buffer temporário até que se encontre o final da mesma (</fo:root>). Este buffer, então, é repassado a engine de renderização, que retorna um SVG correspondente. O resultado é recolocado em sua posição original e o processo continua. A segunda fase do processamento é apresentado na Figura 3.2. Figura 3.2: Segunda fase do processamento da CTool 3.3 Métrica Com o objetivo de definir uma métrica que seja capaz de prever o esforço gasto na renderização de um job, uma análise sobre os passos desta computação e da estrutura da entrada do programa deve ser realizada. Como visto anteriormente, um arquivo PPMLT é composto basicamente por um template de documento que será aplicado a todos os records existentes. O resultado será um conjunto de documentos <document> que estarão dispostos em um arquivo PPML. Esta fase trata-se simplesmente da aplicação de um layout específico preenchendo as lacunas com os dados variáveis disponíveis. Em outras palavras, se refere apenas a leitura de um arquivo XML e escrita de outro em disco. Para avaliar o impacto desta fase quanto ao tempo total de execução, medições foram realizadas e são apresentadas na Tabela 3.1. Como se pode observar, a geração de uma grande quantia de documentos ultrapassa por pouco os 2 minutos e em nenhum dos casos apresentados é representativo se comparado

41 3. Abordagem Proposta 32 Tabela 3.1: Tempo gasto na primeira fase versus tempo de execução total Número de Documentos Tempo da Primeira Fase (segundos) Tempo Total (segundos) ,50 758, , , , , , ,31 ao tempo total de execução da CTool. Devido a tal constatação, pode-se concluir que a maior parte da computação está focada na próxima fase do processamento. A segunda fase é inteiramente focada sobre as porções XSL-FO de cada documento. Como mencionado anteriormente, nesta fase, a CTool busca por estes componentes em cada instância de documento do job, para então submetê-los a engine FOP. Esta realiza a renderização e retorna um SVG que será escrito no documento final. Desta maneira, à medida que a computação dos XSL-FOs se torna mais custosa, mais tempo será gasto no processamento do job inteiro. Assim, deve-se analisar qual característica influencia no peso da renderização de um componente XSL-FO. Na maioria dos casos da impressão digital de documentos, os XSL-FOs são constituídos puramente por texto, fazendo com que o trabalho da engine seja a aplicação da formatação especificada para cada palavra descrita. Além disso, é responsabilidade da engine posicionar o texto dentro da página de um documento, construindo parágrafos e linhas na área reservada de cada XSL-FO. Deste modo, à medida que a quantia de texto aumenta, a engine terá mais trabalho para fazer, se preocupando em formatar e posicionar mais conteúdo. Assim, um dado consistente para medir o esforço gasto na fase de renderização trata-se do número de palavras contidas dentro de todos os XSL-FOs do arquivo de entrada. Para avaliar esta métrica testes foram realizados e seus resultados são apresentados no Capítulo Solução Paralela Em estudos passados [1, 2], foram apresentadas estratégias para melhorar o desempenho do processo de renderização. Estas, foram implementadas no nível de XSL-FO, significando que o parse e escrita no arquivo de saída eram centralizados em dois componentes, enquanto as engines de renderização eram replicadas. Contudo, à medida que o tamanho dos documentos passava a crescer, estes dois processos responsáveis pelas funções de parse e escrita, tornavam-se sobrecarregados, comprometendo o desempenho do sistema como um todo. Para lidar com esta situação, desenvolveu-se uma nova abordagem de paralelização. Como o problema principal das soluções anteriores tratava-se dos componentes que centralizavam as operações com o disco, optou-se por replicar não somente as engines FOP, mas também o parse, a extração dos componentes XSL-FOs, além da escrita do arquivo de saída. A Figura 3.3 apresenta a nova abordagem proposta.

42 3. Abordagem Proposta 33 Figura 3.3: Nova abordagem paralela Cada processo irá executar a CTool em paralelo, recebendo o mesmo arquivo de entrada. A divisão do trabalho é baseada no id dos processos, onde cada um irá realizar a computação de uma porção diferente do documento. Entretanto, o arquivo de entrada contém cabeçalhos e outras informações indispensáveis que podem ser referenciadas em todas as partes do documento, como os reusable objects. Devido a isso, cada processo cria um novo documento, que apenas possui sua porção correspondente e estas informações. Sobre o documento criado será realizada a renderização, resultando na geração de diversos arquivos de saída, correspondentes as porções computadas por cada processo. Em um primeiro momento, não há a necessidade de juntá-los, porque estes podem ser enviados as impressoras de forma independente.

43 4 Resultados Experimentais Com o objetivo de avaliar a métrica escolhida e a nova abordagem paralela propostas, alguns experimentos foram realizados. Este Capítulo discorre sobre os arquivos de entrada selecionados, o conjunto de máquinas utilizado para executar as versões seqüencias e paralelas, e descreve uma análise sobre os resultados obtidos neste estudo, ressaltando os possíveis benefícios que poderiam ser obtidos com uma alocação inteligente dos recursos disponíveis para os diversos jobs da fila. 4.1 Ambiente de Teste Esta seção apresenta a arquitetura paralela utilizada para executar a nova abordagem proposta e provê uma breve discussão sobre as tecnologias aplicadas na implementação desta. Além disso, ela descreve os casos de testes escolhidos para a avaliar a métrica proposta e o ganho obtido com a nova solução Descrição do Ambiente A arquitetura escolhida para executar a versão paralela trata-se de um multicomputador, mais especificamente um cluster composto por 10 blades interligadas por uma rede GigaBit Ethernet (poder de transmissão de até 1Gb por segundo). Cada um dos nodos possui 4 cores, com um processador Opteron 2.4Ghz e 8Gb de memória RAM. A plataforma de software adotada na solução proposta é composta pela linguagem de programação Java (Java Standard Development Kit versão 1.4.2), juntamente com a bilbioteca MPICH (MPI Chameleon) [37] que provê as funcionalidades do padrão MPI (Message Passing Interface) [38]. Devido a utilização da linguagem de programação Java, a biblioteca mpijava [39] foi empregada na solução paralela Casos de Teste Sabe-se que os arquivos de entrada da aplicação CTool tratam-se de um arquivo PPML ou PPMLT. Devido a motivos previamente explicitados, optou-se pelo formato PPMLT para descrever os jobs que servirão para avaliar a métrica e a nova abordagem paralela apresentadas neste trabalho. Analisando as diferentes características que um job poderá 34

44 4. Resultados Experimentais 35 conter, neste momento existem 4 principais que devem ser ressaltadas, são elas o número de: XSL-FOs, páginas, documentos e palavras contidas nos componentes XSL-FOs. Todos os casos de teste, presentes neste trabalho representam situações reais de mercado e seus nomes, imagens e textos foram modificados a fim de proteger direitos autorais, pertinentes as empresas que os concederam. O layout de cada um deles pode ser classificado quanto a um determinado tipo de layout, como por exemplo: pôster, carta, cartão postal e brochura 1. As características dos casos de teste são expostas na Tabela 4.1. Para ressaltar o número de instâncias que serão criadas, assim que a conversão de PPMLT para PPML for realizada pela aplicação CTool, o número de records de cada arquivo de entrada é especificado pelo termo documentos na Tabela 4.1. Tabela 4.1: Características dos casos de teste Caso de Teste Documentos Páginas Imagens XSL-FOs Total de Palavras Tipo de Layout Signage Pôster Signage Pôster Letter Carta Letter Carta Postcard Cartão postal Postcard Cartão postal Brochure Brochura Brochure Brochura O primeiro caso de teste é chamado de Signage10000, onde cada um de seus documentos é composto por 1 página, 5 imagens e 7 XSL-FOs. Este arquivo engloba um total de records, o que representa a geração do mesmo número de documentos no PPML de saída. Desta maneira, dispõe de um conteúdo de palavras dentro dos componentes XSL-FOs a serem renderizados, com aproximadamente 10 palavras por documento. O layout apresentado por este arquivo de entrada é do tipo pôster. O segundo caso de teste, Signage20000, trata-se de uma variação do primeiro, contendo documentos ao invés de Com isso, este arquivo totaliza palavras a serem renderizadas, sendo que a média de palavras por documento se mantém a mesma. A Figura 4.1 ilustra três documentos renderizados do primeiro e segundo casos de teste. Figura 4.1: Três documentos dos casos de teste Signage 1 Uma brochura trata-se de uma espécie de panfleto, contendo uma única página ou diversas, que são dispostas uma do lado da outra e dobradas, formando uma espécie de livreto.

45 4. Resultados Experimentais 36 O terceiro PPMLT de entrada é o Letter Este contém documentos, com 2 páginas, 5 imagens e um total de 8 XSL-FOs cada. Um documento possui em torno de 185 palavras, somando um total de palavras. Seu layout é do tipo carta. Assemelhando-se ao terceiro caso, o quarto (Letter20000) contém documentos e palavras a serem renderizadas. A Figura 4.2 apresenta uma instância de um documento renderizado, correspondente aos casos de teste Letter10000 e Letter Figura 4.2: Um documento dos casos de teste Letter O arquivo Postcard10000 (quinto caso de teste) apresenta cerca de palavras (com aproximadamente 358 palavras por documento), sendo composto por documentos. Individualmente, os documentos possuem um layout de cartão postal, incluindo 2 páginas, 18 imagens e 8 XSL-FOs. Uma variação do quinto caso de teste, trata-se do arquivo denominado Postcard20000 (sexto caso de teste). Este possui documentos, com a mesma configuração do Postcard20000, totalizando palavras. A Figura 4.3 demonstra um exemplo de documento renderizado, correspondente ao quinto e sexto casos de teste. Figura 4.3: Um documento dos casos de teste Postcard Por fim, os casos de teste Brochure10000 (sétimo caso de teste) e Brochure20000 (oitavo de teste) apresentam e documentos respectivamente. Seus documentos são compostos por 12 páginas, 38 imagens e 14 XSL-FOs. Com em torno de 785

46 4. Resultados Experimentais 37 palavras por documento, o penúltimo soma uma quantia de palavras, enquanto o último, palavras a serem renderizadas. O tipo de layout apresentado por ambos é do tipo brochura e a Figura 4.4 ilustra algumas páginas dos documentos neles contidos. Figura 4.4: Algumas páginas de um documento dos casos de teste Brochure 4.2 Análise dos Resultados Para avaliar se a métrica escolhida é representativa à medida que é um dado significativo para medir o custo computacional de cada caso de teste, execuções dos arquivos de entrada apresentados neste trabalho foram realizados. Estas foram feitas através da utilização das versões seqüencial e paralela. Assim, a partir da primeira pôde-se analisar se a métrica escolhida condiz com o esforço gasto no processamento de cada caso de teste e com a segunda avaliou-se o possível ganho que poderia ser obtido através da análise do perfil dos documentos, aplicando a métrica proposta, para executar diversos jobs em paralelo. Além disso, verificou-se o ganho obtido com a nova abordagem e se os empecilhos existentes nas versões previamente criadas, foram superados. Os resultados, então, são apresentados a seguir Validação da Métrica Através do uso da versão seqüencial, os oito casos de teste descritos neste trabalho foram executados com a finalidade de validar a métrica proposta. A Tabela 4.2 apresenta os tempos de execução obtidos. Analisando os tempos obtidos apresentados na Tabela 4.2, pode-se perceber que a métrica estipulada condiz com o esforço gasto para processar um documento PPMLT. Os casos de teste Brochure10000 e Brochure20000, os que contêm o maior número de palavras, foram aqueles que demoraram mais tempo para serem renderizados, sendo computados em 4875,7382 segundos e 9478,3134 segundos respectivamente. Os arquivos de entrada

47 4. Resultados Experimentais 38 Tabela 4.2: Tempo de execução seqüencial Caso de Teste Tempo de Execução (segundos) Signage ,4850 Signage ,8060 Letter ,7814 Letter ,1552 Postcard ,7032 Postcard ,8176 Brochure ,7382 Brochure ,3134 Postcard10000 e Postcard20000 foram renderizados em 2449,7032 segundos e 4818,8176 segundos. O processamento dos arquivos Letter10000 e Letter20000 foi finalizado em 1380,7814 segundos e 2762,1552 segundos. Por fim, os casos de teste Signage10000 e Signage20000 foram os mais rápidos a serem renderizados, com 456,4850 e 902,8060 segundos respectivamente. Uma questão interessante pode ser observada: para cada par de documentos com as mesmas características, à medida que a quantidade de documentos dobra, o tempo de renderização praticamente duplica. Tal fato acontece, pois dobrando o número de documentos, duplica-se o número de palavras a serem renderizadas, portanto o mesmo efeito é observado no tempo de execução. Além disso, pode-se perceber que a métrica escolhida serve para avaliar o custo computacional de casos de teste que possuem diversas características diferentes, como a situação do Postcard20000 e Brochure É possível observar que o tempo de processamento de ambos é muito parecido, pois apesar de se diferenciarem por diversos aspectos, o número de palavras a serem renderizadas é semelhante. Por outro lado, o caso de teste Letter20000 supera o tempo de execução do arquivo Postcard10000, pois o seu número de palavras é maior, considerando seus 20,000 documentos. As constatações supracitadas demonstram que a informação levada em consideração para medir o esforço gasto na fase de renderização, o número de palavras, é uma escolha válida e consistente para os casos apresentados Execução Paralela Os oito casos de teste foram executados através do uso da nova abordagem paralela proposta. Para tanto, optou-se por utilizar como unidade de processamento cada core disponível na arquitetura paralela escolhida, ao invés de lidar com um nodo propriamente dito. Desta maneira, poder-se-ia executar a solução com até 40 processos, ao invés de apenas 10. Assim, seria possível realizar uma análise mais profunda do comportamento da aplicação em termos de escalabilidade. Esta escolha pode ser facilmente aplicada, pois não há nenhum tipo de comunicação efetivo entre os processos que venha a causar algum impacto de desbalanceamento de carga, quando agrupando até 4 processos em um mesmo nodo do cluster. Entretanto, para avaliar se alguma perda de desempenho quando processando um documento em 4 cores, provavelmente causada por disputas a

48 4. Resultados Experimentais 39 barramentos do disco e memória, pudessem ocorrer, testes foram feitos, comparando o tempo de execução da versão paralela em 4 nodos e em 4 cores. A Tabela 4.3 apresenta os resultados obtidos. Tabela 4.3: Tempo de execução em 4 cores versus em 4 nodos Caso de Teste 4 Nodos (segundos) 4 Cores (segundos) Signage , ,0327 Signage , ,9540 Letter ,4881 Letter ,0234 Postcard , ,8414 Postcard , ,3315 Brochure , ,1714 Brochure , ,5481 Como se pode observar o tempo de execução permanece em torno da mesma faixa, possibilitando a adoção de cores como unidades de processamento propriamente ditas. A seguir são apresentados o tempo de execução, uma análise sobre o perfil dos jobs e o speedup obtidos através do processamento dos oito casos de teste descritos na seção 4.1.2, variando de 2 à 40 processos. Tempo de Execução Com a finalidade de realizar uma breve análise do ganho de desempenho apresentado pela versão paralela e para prover parâmetros para verificar as vantagens que poderiam ser obtidas com uma estratégia de escalonamento inteligente, executou-se a solução paralela proposta. A Figura 4.5 ilustra um gráfico dos tempos de processamento, juntamente com uma tabela contendo alguns destes valores, ambos referentes a computação dos dois primeiros casos de teste, Signage10000 e Signage Figura 4.5: Tempo de execução - Signage10000 e Signage20000 Pode-se constatar que os tempos obtidos chegam ao mínimo de 27,2462 segundos para o PPMLT Signage10000 (com 40 processos) e 36,5156 segundos para o PPMLT Sig-

49 4. Resultados Experimentais 40 nage20000 (com 40 processos), representando uma grande melhoria de 429,2388 e 866,2904 segundos se comparados respectivamente aos tempos da versão seqüencial. Seguindo com os testes nesta versão, o gráfico de execução e tabela abaixo (Figura 4.6) referem-se aos casos de teste Letter10000 e Letter Figura 4.6: Tempo de execução - Letter10000 e Letter20000 Com estes PPMLTs o tempo de execução atingiu um total de 73,3160 segundos, a partir da utilização de 40 processos e de 133,1620 segundos, com o uso de 40 processos, para o terceiro e quarto arquivos respectivamente. Estes tempos demonstram um ganho de até 1307,4654 (Letter10000) e 2628,9932 (Letter20000) segundos em relação a ferramenta seqüencial. Figura 4.7: Tempo de execução - Postcard10000 e Postcard20000 Analisando a Figura 4.7, que apresenta os tempos de execução dos casos de teste Postcard10000 e Postcard20000, pode-se constatar que houve uma redução de até 2334,4652 e 4587,8606 segundos com o uso de 40 processos.

XML e Banco de Dados. Prof. Daniela Barreiro Claro DCC/IM/UFBA

XML e Banco de Dados. Prof. Daniela Barreiro Claro DCC/IM/UFBA XML e Banco de Dados DCC/IM/UFBA Banco de Dados na Web Armazenamento de dados na Web HTML muito utilizada para formatar e estruturar documentos na Web Não é adequada para especificar dados estruturados

Leia mais

XML e Banco de Dados de Internet. Tópicos Especiais em Tecnologia da Informação Profa. Késsia R. C. Marchi

XML e Banco de Dados de Internet. Tópicos Especiais em Tecnologia da Informação Profa. Késsia R. C. Marchi XML e Banco de Dados de Internet Tópicos Especiais em Tecnologia da Informação Profa. Késsia R. C. Marchi Motivação Diversas aplicações Web utilizam Fontes de Dados (BD); Arquitetura Cliente-Servidor (2

Leia mais

XML. 1. XML: Conceitos Básicos. 2. Aplicação XML: XHTML 3. Folhas de Estilo em Cascata XML

XML. 1. XML: Conceitos Básicos. 2. Aplicação XML: XHTML 3. Folhas de Estilo em Cascata XML 1 1. : Conceitos Básicos 2. Aplicação : XHTML 3. Folhas de Estilo em Cascata 2 é um acrônimo para EXtensible Markup Language é uma linguagem de marcação muito parecida com HTML foi designada para descrever

Leia mais

4 Conversor EDTV Raw. 4.1 Arquitetura

4 Conversor EDTV Raw. 4.1 Arquitetura 4 Conversor EDTV Raw O conversor EDTV Raw é o programa que lê um documento escrito no perfil NCL EDTV e gera um documento Raw equivalente, i.e. que define a mesma apresentação. Este capítulo, apresenta

Leia mais

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) XML Origens. HTML Problemas

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) XML Origens. HTML Problemas Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) (extensible( Markup Language ) Origens (extensible Markup Language linguagem de marcação extensível) Criada em 1996 pelo W3C (World

Leia mais

WXDC: Uma Ferramenta para Imposição e Validação de Restrições de Integridade baseadas na Linguagem XDCL

WXDC: Uma Ferramenta para Imposição e Validação de Restrições de Integridade baseadas na Linguagem XDCL 232 - Encontro Anual de Tecnologia da Informação WXDC: Uma Ferramenta para Imposição e Validação de Restrições de Integridade baseadas na Linguagem XDCL Stevan D. Costa1, Alexandre T. Lazzaretti1, Anubis

Leia mais

Aplicando Estratégias de Escalonamento através da Análise do Perfil de Jobs para Ambientes de Impressão Distribuídos. Thiago Tasca Nunes

Aplicando Estratégias de Escalonamento através da Análise do Perfil de Jobs para Ambientes de Impressão Distribuídos. Thiago Tasca Nunes Aplicando Estratégias de Escalonamento através da Análise do Perfil de Jobs para Ambientes de Impressão Distribuídos Thiago Tasca Nunes Porto Alegre 2009 Pontifícia Universidade Católica do Rio Grande

Leia mais

Introdução a XML X100

Introdução a XML X100 Introdução a XML X100 Helder da Rocha (helder@argonavis.com.br) Atualizado em setembro de 2001 1 O que é XML? extensible Markup Language: padrão W3C Uma maneira de representar informação não é uma linguagem

Leia mais

XPath. Resumo Descrever um esquema específico XML (XPath) para identificar subestruturas

XPath. Resumo Descrever um esquema específico XML (XPath) para identificar subestruturas XPath Resumo Descrever um esquema específico XML (XPath) para identificar subestruturas de documentos Xpath É uma linguagem para referenciar partes de um documento XML Projetada para ser usada por XSLT

Leia mais

XML. na gestão de informações. Helder da Rocha Consultor. Integração total de negócios usando XML. Integração total de negócios usando XML

XML. na gestão de informações. Helder da Rocha Consultor. Integração total de negócios usando XML. Integração total de negócios usando XML Integração total de negócios usando XML Integração total de negócios usando XML São Paulo, 08 de maio de 2002 XML na gestão de informações Helder da Rocha Consultor 1 Objetivos Responder às questões Como

Leia mais

Introdução à Tecnologia Web. Ferramentas e Tecnologias de Desenvolvimento Web. Profª MSc. Elizabete Munzlinger www.elizabete.com.

Introdução à Tecnologia Web. Ferramentas e Tecnologias de Desenvolvimento Web. Profª MSc. Elizabete Munzlinger www.elizabete.com. IntroduçãoàTecnologiaWeb FerramentaseTecnologiasde DesenvolvimentoWeb ProfªMSc.ElizabeteMunzlinger www.elizabete.com.br ProfªMSc.ElizabeteMunzlinger www.elizabete.com.br FerramentaseTecnologiasde DesenvolvimentoWeb

Leia mais

XML XML. XML extensible Markup Language HTML. Motivação. W3C: World Wide Web Consortium XML 1.0. Mário Meireles Teixeira DEINF-UFMA

XML XML. XML extensible Markup Language HTML. Motivação. W3C: World Wide Web Consortium XML 1.0. Mário Meireles Teixeira DEINF-UFMA Mário Meireles Teixeira DEINF-UFMA Motivação extensible Markup Language W3C: World Wide Web Consortium http://www.w3.org 1.0 W3C Recommendation, 10/Fev/1998 (inicial) W3C Recommendation, 04/Fev/2004, 3

Leia mais

Impressão de dados variáveis

Impressão de dados variáveis 2014 Electronics For Imaging. As informações nesta publicação estão cobertas pelos termos dos Avisos de caráter legal deste produto. 11 de junho de 2014 Conteúdo 3 Conteúdo Visão geral da impressão de

Leia mais

Processamento de dados XML

Processamento de dados XML Processamento de dados XML César Vittori cvittori@inf.ufrgs.br Outubro de 2000 Resumo Considerações no desenvolvimento de software para processar dados XML. Processamento de uma DTD para interpretar marcação

Leia mais

GERÊNCIA DE DADOS SEMI ESTRUTURADOS -XML. Prof. Angelo Augusto Frozza, M.Sc.

GERÊNCIA DE DADOS SEMI ESTRUTURADOS -XML. Prof. Angelo Augusto Frozza, M.Sc. GERÊNCIA DE DADOS SEMI ESTRUTURADOS -XML Prof. Angelo Augusto Frozza, M.Sc. O QUE É XML? Tecnologia desenvolvida pelo W3C http://www.w3c.org W3C: World Wide Web Consortium consórcio formado por acadêmicos

Leia mais

Sumário. HTML CSS JQuery Referências IHC AULA 6 5-09-2011 1

Sumário. HTML CSS JQuery Referências IHC AULA 6 5-09-2011 1 Sumário HTML CSS JQuery Referências IHC AULA 6 5-09-2011 1 Linguagem HTML HTML é a abreviação de HyperText Markup Language, que pode ser traduzido como Linguagem de Marcação de Hipertexto. Não é uma linguagem

Leia mais

GERÊNCIA DE DADOS SEMIESTRUTURADOS -XML. Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza

GERÊNCIA DE DADOS SEMIESTRUTURADOS -XML. Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza GERÊNCIA DE DADOS SEMIESTRUTURADOS -XML Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza O QUE É XML? Tecnologia desenvolvida pelo W3C http://www.w3c.org W3C: World Wide Web Consortium consórcio

Leia mais

Fiery Print Server. Impressão de dados variáveis

Fiery Print Server. Impressão de dados variáveis Fiery Print Server Impressão de dados variáveis 2009 Electronics for Imaging, Inc. As informações nesta publicação estão cobertas pelos termos dos Avisos de caráter legal deste produto. 45088546 30 de

Leia mais

XML Básico. Murillo Vasconcelos Henriques B. Castro. 17 de maio de 2011

XML Básico. Murillo Vasconcelos Henriques B. Castro. 17 de maio de 2011 XML Básico Murillo Vasconcelos Henriques B. Castro 17 de maio de 2011 O QUE É? Sigla para extensible Markable Language É uma linguagem de marcação, assim como HTML Desenvolvida para ser auto explicativa

Leia mais

BCValidador VALIDAÇÃO DE ARQUIVOS XML RECEBIDOS PELO BANCO CENTRAL DO BRASIL

BCValidador VALIDAÇÃO DE ARQUIVOS XML RECEBIDOS PELO BANCO CENTRAL DO BRASIL BCValidador VALIDAÇÃO DE ARQUIVOS XML RECEBIDOS PELO BANCO CENTRAL DO BRASIL Deinf/Dine4 Versão 1.3 20/05/2013 Histórico de Revisão Data Versão Descrição Autor 06/11/2007 1.0 Elaboração da primeira versão

Leia mais

GERÊNCIA DE DADOS SEMIESTRUTURADOS -XML. Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza

GERÊNCIA DE DADOS SEMIESTRUTURADOS -XML. Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza GERÊNCIA DE DADOS SEMIESTRUTURADOS -XML Prof. Angelo Augusto Frozza, M.Sc. http://about.me/tilfrozza O QUE É XML? Tecnologia desenvolvida pelo W3C http://www.w3c.org W3C: World Wide Web Consortium consórcio

Leia mais

QUEM FEZ O TRABALHO?

QUEM FEZ O TRABALHO? Introdução a Linguagem HTML: Conceitos Básicos e Estrutura ANA PAULAALVES DE LIMA 1 QUEM FEZ O TRABALHO? Com as tagsaprendidas hoje, faça uma página HTML sobre você com as seguintes informações: Seu nome

Leia mais

Guia de Consulta Rápida. PHP com XML. Juliano Niederauer. Terceira Edição. Novatec

Guia de Consulta Rápida. PHP com XML. Juliano Niederauer. Terceira Edição. Novatec Guia de Consulta Rápida PHP com XML Juliano Niederauer Terceira Edição Novatec Copyright 2002 da Novatec Editora Ltda. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida

Leia mais

Sumário. Cópia de Sumário Crystal 10 Guia Prático.pmd 285

Sumário. Cópia de Sumário Crystal 10 Guia Prático.pmd 285 Sumário 1 Crystal Reports...1 1.1 Introdução... 1 1.2 Um pouco de História... 1 1.3 Novidades e Melhorias da Versão 10... 2 1.3.1 Acesso a Dados Simplificados (Business Views)... 3 1.3.2 Repositório...

Leia mais

Unidade 4 Concepção de WEBSITES. Fundamentos do planeamento de um website 1.1. Regras para um website eficaz 1.1.1.

Unidade 4 Concepção de WEBSITES. Fundamentos do planeamento de um website 1.1. Regras para um website eficaz 1.1.1. Unidade 4 Concepção de WEBSITES Fundamentos do planeamento de um website 1.1. Regras para um website eficaz 1.1.1. Sobre o conteúdo 1 Regras para um website eficaz sobre o conteúdo Um website é composto

Leia mais

XML. Introdução Ferramentas para Internet Marx Gomes Van der Linden. ( Material baseado no original de Marcelo José Siqueira Coutinho de Almeida )

XML. Introdução Ferramentas para Internet Marx Gomes Van der Linden. ( Material baseado no original de Marcelo José Siqueira Coutinho de Almeida ) XML Introdução Ferramentas para Internet Marx Gomes Van der Linden ( Material baseado no original de Marcelo José Siqueira Coutinho de Almeida ) Objetivos Apresentar a linguagem de marcação XML bem como

Leia mais

Introdução. Definição. Validação. Universo XML. Apresentação. Processamento. Prof. Enzo Seraphim. Banco de Dados

Introdução. Definição. Validação. Universo XML. Apresentação. Processamento. Prof. Enzo Seraphim. Banco de Dados Introdução Definição Validação Apresentação Processamento Banco de Dados Universo XML Prof. Enzo Seraphim Popularidade do HTML Extremamente simples Estilo próprio para formatação de documentos Ligações

Leia mais

MÓDULO 1 - xhtml Básico

MÓDULO 1 - xhtml Básico MÓDULO 1 - xhtml Básico 1. Introdução xhtml significa Extensible Hypertext Markup Language (Linguagem de Marcação Hipertextual Extensível) e é a linguagem de descrição de documentos usada na World Wide

Leia mais

UNIVERSIDADE PRESBITERIANA MACKENZIE FACULDADE DE COMPUTAÇÃO E INFORMÁTICA

UNIVERSIDADE PRESBITERIANA MACKENZIE FACULDADE DE COMPUTAÇÃO E INFORMÁTICA EDITAL DO PROGRAMA DE CERTIFICAÇÕES EM COMPUTAÇÃO MACK COMPUTING CERTIFICATION MCC 2º SEMESTRE DE 2014 O Diretor da Faculdade de Computação e Informática (FCI), no uso de suas atribuições estatutárias

Leia mais

Visual Library: Uma Biblioteca para Criação de Ferramentas de Modelagem Gráfica

Visual Library: Uma Biblioteca para Criação de Ferramentas de Modelagem Gráfica Visual Library: Uma Biblioteca para Criação de Ferramentas de Modelagem Gráfica Tiago A. Gameleira 1, Raimundo Santos Moura 2, Luiz Affonso Guedes 1 1 Universidade Federal do Rio Grande do Norte (UFRN)

Leia mais

O que é XML? A Linguagem de Marcação Extensível (Extensible Markup Language - XML) é:

O que é XML? A Linguagem de Marcação Extensível (Extensible Markup Language - XML) é: 1.264 Aula 13 XML O que é XML? A Linguagem de Marcação Extensível (Extensible Markup Language - XML) é: Uma recomendação proposta pelo World Wide Web Consortium (W3C) Um formato de arquivo Documentos eletrônicos

Leia mais

XML (extensible Markup Language)

XML (extensible Markup Language) Sumário 1. Introdução a Aplicações Não-Convencionais 2. Revisão de Modelagem Conceitual 3. BD Orientado a Objetos (BDOO) 4. BD Objeto-Relacional (BDOR) 5. BD Temporal (BDT) 6. BD Geográfico (BDG) 7. BD

Leia mais

Renderização de Documentos XSL-FO com Uso da Ferramenta FOP

Renderização de Documentos XSL-FO com Uso da Ferramenta FOP Pontifícia Universidade Católica do Rio Grande do Sul Faculdade de Informática Pós-Graduação em Ciência da Computação Estratégias de Paralelização para Renderização de Documentos XSL-FO com Uso da Ferramenta

Leia mais

2 Trabalhos Relacionados

2 Trabalhos Relacionados 2 Trabalhos Relacionados Os trabalhos relacionados podem ser classificados em três categorias: abordagens baseadas em metamodelos para a definição de formalismos, uso de metamodelos em editores de diagrama

Leia mais

Interface BVS-Site. Arquiteturta e Personalização da Interface

Interface BVS-Site. Arquiteturta e Personalização da Interface Interface BVS-Site Arquiteturta e Personalização da Interface Julio Takayama takayama@bireme.ops-oms.org Desenho Gráfico e Interfaces DGI-GA BIREME/PAHO/WHO Tópicos Arquitetura da BVS Modelo de Interfaces

Leia mais

Pág 31. UC Introdução a Informática Docente: André Luiz Silva de Moraes 1º sem Redes de Computadores. 5 Introdução ao uso do BrOffice Impress

Pág 31. UC Introdução a Informática Docente: André Luiz Silva de Moraes 1º sem Redes de Computadores. 5 Introdução ao uso do BrOffice Impress 5 Introdução ao uso do BrOffice Impress O pacote BrOffice é um pacote de escritório muito similar ao já conhecido Microsoft Office e ao longo do tempo vem evoluindo e cada vez mais ampliando as possibilidades

Leia mais

2 Conceitos relativos a Web services e sua composição

2 Conceitos relativos a Web services e sua composição 15 2 Conceitos relativos a Web services e sua composição A necessidade de flexibilidade na arquitetura das aplicações levou ao modelo orientado a objetos, onde os processos de negócios podem ser representados

Leia mais

Roteiro 2: Conceitos de Tags HTML

Roteiro 2: Conceitos de Tags HTML Roteiro 2: Conceitos de Tags HTML Objetivos Detalhar conceitos sobre TAGS HTML: elementos, atributos, elemento vazio, links. Implementar páginas de internet com uso da linguagem HTML; Ferramentas Necessárias

Leia mais

Uma Integração entre Ferramentas de Gerência de Projetos Utilizando XML

Uma Integração entre Ferramentas de Gerência de Projetos Utilizando XML Uma Integração entre Ferramentas de Gerência de Projetos Utilizando XML Edson Leandro de Araújo Silva 2, Adailton Magalhães Lima 1,2, Ernani de Oliveira Sales 1, Anderson Jorge Serra da Costa 2 1 Laboratório

Leia mais

Curso de Desenvolvimento Web com HTML5, CSS3 e jquery

Curso de Desenvolvimento Web com HTML5, CSS3 e jquery Curso de Desenvolvimento Web com HTML5, CSS3 e jquery Professor: Marcelo Ricardo Minholi CH: 32 horas anuais (4 dias de 8 horas) Umuarama - 2012 Fundamentação Teórica: HTML (acrônimo para a expressão inglesa

Leia mais

Análise Comparativa dos Recursos e Diferenças das Tecnologias de Programação HTML5 e HTML4

Análise Comparativa dos Recursos e Diferenças das Tecnologias de Programação HTML5 e HTML4 Análise Comparativa dos Recursos e Diferenças das Tecnologias de Programação HTML5 e HTML4 Guilherme Miranda Martins 1, Késsia Rita da Costa Marchi 1 1 Universidade paranaense (Unipar) Paranavaí PR Brasil

Leia mais

Desenvolvimento em Ambiente Web. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com

Desenvolvimento em Ambiente Web. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Desenvolvimento em Ambiente Web Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com No início A Web é criada em 1989, para ser um padrão de publicação e distribuição de textos científicos e acadêmicos.

Leia mais

INDICE 3.APLICAÇÕES QUE PODEM SER DESENVOLVIDAS COM O USO DO SAXES

INDICE 3.APLICAÇÕES QUE PODEM SER DESENVOLVIDAS COM O USO DO SAXES w w w. i d e a l o g i c. c o m. b r INDICE 1.APRESENTAÇÃO 2.ESPECIFICAÇÃO DOS RECURSOS DO SOFTWARE SAXES 2.1. Funcionalidades comuns a outras ferramentas similares 2.2. Funcionalidades próprias do software

Leia mais

RICARDO TERRA NUNES BUENO VILLELA XSLT:

RICARDO TERRA NUNES BUENO VILLELA XSLT: RICARDO TERRA NUNES BUENO VILLELA XSLT: Manipulação de documentos XML BELO HORIZONTE 2006 RICARDO TERRA NUNES BUENO VILLELA XSLT: Manipulação de documentos XML Trabalho apresentado à disciplina Trabalho

Leia mais

> Herbet Ferreira Rodrigues > contato@herbetferreira.com

> Herbet Ferreira Rodrigues > contato@herbetferreira.com Curso HTML & CSS > Herbet Ferreira Rodrigues > contato@herbetferreira.com Sumário > Apresentação > Introdução ao HTML História Começando a Programar > Tags em HTML Headings (Cabeçalhos) Parágrafos Formatação

Leia mais

HTML5 E WEB SEMÂNTICA, A WEB COM SIGNIFICADO

HTML5 E WEB SEMÂNTICA, A WEB COM SIGNIFICADO HTML5 E WEB SEMÂNTICA, A WEB COM SIGNIFICADO Djalma Gonçalves Costa Junior¹, Willian Barbosa Magalhães¹ ¹Universidade Paranaense (Unipar) Paranavaí - PR - Brasil djalma.g.costajr@gmail.com wmagalhaes@unipar.br

Leia mais

Introdução à Tecnologia Web

Introdução à Tecnologia Web Introdução à Tecnologia Web JavaScript Sintaxe da Linguagem: Delimitadores e etc Profª MSc. Elizabete Munzlinger JavaScript Sintaxe da Linguagem Índice 1 SINTAXE DA LINGUAGEM... 2 1.1 Delimitadores de

Leia mais

Ambientes Visuais. Ambientes Visuais

Ambientes Visuais. Ambientes Visuais Ambientes Visuais Inicialmente, apenas especialistas utilizavam os computadores, sendo que os primeiros desenvolvidos ocupavam grandes áreas e tinham um poder de processamento reduzido. Porém, a contínua

Leia mais

Fiery EX4112/4127. Impressão de dados variáveis

Fiery EX4112/4127. Impressão de dados variáveis Fiery EX4112/4127 Impressão de dados variáveis 2008 Electronics for Imaging, Inc. As informações nesta publicação estão cobertas pelos termos dos Avisos de caráter legal deste produto. 45074302 23 de junho

Leia mais

Este relatório tem por objetivo, abordar a sintaxe XML.

Este relatório tem por objetivo, abordar a sintaxe XML. Relatório do GPES Este relatório tem por objetivo, abordar a sintaxe XML. XML Estrutura do documento Um documento XML é uma árvore rotulada onde um nó externo consiste de: [1] Dados de caracteres (uma

Leia mais

DESENVOLVIMENTO WEB DENTRO DOS PARADIGMAS DO HTML5

DESENVOLVIMENTO WEB DENTRO DOS PARADIGMAS DO HTML5 DESENVOLVIMENTO WEB DENTRO DOS PARADIGMAS DO HTML5 Alex de Andrade Catini¹, Tiago Piperno Bonetti¹ ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil Alex.catini@gmail.com, bonetti@unipar.br Resumo:

Leia mais

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0 DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0 Índice 1 - Objetivo 2 - Descrição do ambiente 2.1. Tecnologias utilizadas 2.2. Estrutura de pastas 2.3. Bibliotecas já incluídas 3 - Características gerais 4 - Criando

Leia mais

3 Serviços na Web (Web services)

3 Serviços na Web (Web services) 3 Serviços na Web (Web services) 3.1. Visão Geral Com base na definição do Word Wide Web Consortium (W3C), web services são aplicações autocontidas, que possuem interface baseadas em XML e que descrevem

Leia mais

Minicurso introdutório de desenvolvimento para dispositivos Android. Cristiano Costa

Minicurso introdutório de desenvolvimento para dispositivos Android. Cristiano Costa Minicurso introdutório de desenvolvimento para dispositivos Android Cristiano Costa Desenvolvimento da interface estática Sobre mim Graduando em Engenharia Eletrônica - UNIFEI Trabalhou em desenvolvimento

Leia mais

5 Detalhes da Implementação

5 Detalhes da Implementação Detalhes da Implementação 101 5 Detalhes da Implementação Neste capítulo descreveremos detalhes da implementação do Explorator que foi desenvolvido usando o paradigma MVC 45 e o paradigma de CoC 46 (Convention

Leia mais

XHTML 1.0 DTDs e Validação

XHTML 1.0 DTDs e Validação XHTML 1.0 DTDs e Validação PRnet/2012 Ferramentas para Web Design 1 HTML 4.0 X XHTML 1.0 Quais são os três principais componentes ou instrumentos mais utilizados na internet? PRnet/2012 Ferramentas para

Leia mais

Lista de Revisão. 3. Analise a afirmativa a seguir como verdadeira ou falsa e justifique.

Lista de Revisão. 3. Analise a afirmativa a seguir como verdadeira ou falsa e justifique. Lista de Revisão 1. Nos sistemas web, geralmente os usuários apresentam dois problemas típicos, a desorientação e a sobrecarga cognitiva. Discorra sobre esses problemas. 2. Apresente as principais diferenças

Leia mais

Fiery EXP4110 SERVER & CONTROLLER SOLUTIONS. Impressão de dados variáveis

Fiery EXP4110 SERVER & CONTROLLER SOLUTIONS. Impressão de dados variáveis Fiery EXP4110 SERVER & CONTROLLER SOLUTIONS Impressão de dados variáveis 2005 Electronics for Imaging, Inc. As informações nesta publicação estão cobertas pelos termos dos Avisos de caráter legal deste

Leia mais

WWW - World Wide Web

WWW - World Wide Web WWW World Wide Web WWW Cap. 9.1 WWW - World Wide Web Idéia básica do WWW: Estratégia de acesso a uma teia (WEB) de documentos referenciados (linked) em computadores na Internet (ou Rede TCP/IP privada)

Leia mais

Desenvolver ou adquirir um software de acordo com as especificações técnicas do Manual de integração;

Desenvolver ou adquirir um software de acordo com as especificações técnicas do Manual de integração; O projeto NFe Conforme a definição, o Projeto de Nota Fiscal Eletrônica tem como objetivo a implantação de um modelo nacional de documento fiscal eletrônico para a substituição da sistemática atual de

Leia mais

Guia de Consulta Rápida XML. Otávio C. Décio. Novatec Editora

Guia de Consulta Rápida XML. Otávio C. Décio. Novatec Editora Guia de Consulta Rápida XML Otávio C. Décio Novatec Editora Guia de Consulta Rápida XML de Otávio C. Décio Copyright@2000 da Novatec Editora Ltda. Todos os direitos reservados e protegidos pela Lei 9.610

Leia mais

MAPEAMENTO DE CONSULTAS SQL EM XML ENTRE SISTEMAS GERENCIADORES DE BANCO DE DADOS RELACIONAIS

MAPEAMENTO DE CONSULTAS SQL EM XML ENTRE SISTEMAS GERENCIADORES DE BANCO DE DADOS RELACIONAIS Universidade Federal de Santa Catarina Centro Tecnológico Departamento de Informática e Estatística Curso de Sistemas de Informação RENATO SULZBACH MAPEAMENTO DE CONSULTAS SQL EM XML ENTRE SISTEMAS GERENCIADORES

Leia mais

Desenvolvimento Web. Saymon Yury C. Silva Analista de Sistemas. http://www.saymonyury.com.br

Desenvolvimento Web. Saymon Yury C. Silva Analista de Sistemas. http://www.saymonyury.com.br Desenvolvimento Web Saymon Yury C. Silva Analista de Sistemas http://www.saymonyury.com.br Vantagens Informação em qualquer hora e lugar; Rápidos resultados; Portabilidade absoluta; Manutenção facilitada

Leia mais

Fiery Color Server para Xerox DocuColor 242/252/260. Impressão de dados variáveis

Fiery Color Server para Xerox DocuColor 242/252/260. Impressão de dados variáveis Fiery Color Server para Xerox DocuColor 242/252/260 Impressão de dados variáveis 2007 Electronics for Imaging, Inc. As informações nesta publicação estão cobertas pelos termos dos Avisos de caráter legal

Leia mais

Bem-vindo ao XML. Apostila de XML

Bem-vindo ao XML. Apostila de XML Bem-vindo ao XML Bem-vindo a Extensible Markup Language, XML, a linguagem para tratamento de dados em uma forma compacta, fácil de gerenciar sem mencionar o mais poderoso avanço visto na Internet nos últimos

Leia mais

geral@centroatlantico.pt www.centroatlantico.pt Impressão e acabamento: Inova 1ª edição: Outubro de 2003 ISBN: 972-8426-73-9 Depósito legal: 201828/03

geral@centroatlantico.pt www.centroatlantico.pt Impressão e acabamento: Inova 1ª edição: Outubro de 2003 ISBN: 972-8426-73-9 Depósito legal: 201828/03 FICHEIROS COM EXEMPLOS Envie um e-mail* para software@centroatlantico.pt para conhecer os endereços de Internet de onde poderá fazer o download dos ficheiros com os exemplos deste livro. * O leitor consente,

Leia mais

Justificativa do uso da Linguagem XML no Projeto RIVED

Justificativa do uso da Linguagem XML no Projeto RIVED Justificativa do uso da Linguagem XML no Projeto RIVED Índice Introdução... 1 Sobre a linguagem XML... 2 O que é XML (extensible Markup Language)?... 2 Características da Linguagem...3 Sobre o seu uso...

Leia mais

Fiery EXP50 Color Server. Impressão de dados variáveis

Fiery EXP50 Color Server. Impressão de dados variáveis Fiery EXP50 Color Server Impressão de dados variáveis 2006 Electronics for Imaging, Inc. As informações nessa publicação são cobertas pelos termos dos Avisos de caráter legal deste produto. 45055404 12

Leia mais

Introdução e motivação SGBD XML Nativo Consultas em SGBDs XML Prática. Bancos de dados XML. Conceitos e linguagens de consulta

Introdução e motivação SGBD XML Nativo Consultas em SGBDs XML Prática. Bancos de dados XML. Conceitos e linguagens de consulta Bancos de dados XML Conceitos e linguagens de consulta Sidney Roberto de Sousa MC536 - Bancos de Dados: Teoria e prática Material base: W3Schools XPath and XQuery Tutorial http://www.w3schools.com/xpath/

Leia mais

Desenvolvimento Web Introdução a XHTML. Prof. Bruno Gomes

Desenvolvimento Web Introdução a XHTML. Prof. Bruno Gomes Desenvolvimento Web Introdução a XHTML Prof. Bruno Gomes 2014 Introdução HTML e XHTML Estrutura básica do documento DTDs Validação do documento Exercícios HTML e XHTML HTML (Hipertext Markup Language)

Leia mais

Universidade da Beira Interior

Universidade da Beira Interior Universidade da Beira Interior Relatório Apresentação Java Server Pages Adolfo Peixinho nº4067 Nuno Reis nº 3955 Índice O que é uma aplicação Web?... 3 Tecnologia Java EE... 4 Ciclo de Vida de uma Aplicação

Leia mais

BREVE INTRODUÇÃO À LINGUAGEM XML

BREVE INTRODUÇÃO À LINGUAGEM XML BREVE INTRODUÇÃO À LINGUAGEM XML Por Carlos H. Marcondes marcon@vm.uff.br Rio de Janeiro Abril 2008 PROGRAMA 1.Problema, motivações e conceitos 2.Estrutura de um documento XML 1.DTDs, Schemas 2.Folhas

Leia mais

Sistema Operacional. Processo e Threads. Prof. Dr. Márcio Andrey Teixeira Sistemas Operacionais

Sistema Operacional. Processo e Threads. Prof. Dr. Márcio Andrey Teixeira Sistemas Operacionais Sistema Operacional Processo e Threads Introdução a Processos Todos os computadores modernos são capazes de fazer várias coisas ao mesmo tempo. Enquanto executa um programa do usuário, um computador pode

Leia mais

ESTUDO COMPARATIVO DE BIBLIOTECAS GRÁFICAS I TEGRADAS COM OPE GL

ESTUDO COMPARATIVO DE BIBLIOTECAS GRÁFICAS I TEGRADAS COM OPE GL ESTUDO COMPARATIVO DE BIBLIOTECAS GRÁFICAS I TEGRADAS COM OPE GL Francisco Tiago Avelar, Vitor Conrado F. Gomes, Cesar Tadeu Pozzer Universidade Federal de Santa Maria UFSM Curso de Ciência da Computação

Leia mais

Algoritmos em Javascript

Algoritmos em Javascript Algoritmos em Javascript Sumário Algoritmos 1 O que é um programa? 1 Entrada e Saída de Dados 3 Programando 4 O que é necessário para programar 4 em JavaScript? Variáveis 5 Tipos de Variáveis 6 Arrays

Leia mais

Programação web Prof. Wladimir

Programação web Prof. Wladimir Programação web Prof. Wladimir HTML @wre2008 1 Sumário Histórico; Resumo XHTML; Tags; Edição de documentos HTML; Publicação de um documento; Estrutura básica de um documento HTML; Edição de documentos

Leia mais

Análise da Nova Linguagem HTML5 para o Desenvolvimento Web

Análise da Nova Linguagem HTML5 para o Desenvolvimento Web Análise da Nova Linguagem HTML5 para o Desenvolvimento Web Sergio N. Ikeno¹, Késsia Rita da Costa Marchi¹ ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil sergioikn@gmail.com, kessia@unipar.br Resumo.

Leia mais

Um documento XML possui Unidade lógica - os elementos Usuário "inventa" as marcas através de DTDs

Um documento XML possui Unidade lógica - os elementos Usuário inventa as marcas através de DTDs XML Um documento XML possui Unidade lógica - os elementos Usuário "inventa" as marcas através de DTDs Unidade física - as entidades Armazenamento separado dos dados Como toda linguagem de marcação: XML

Leia mais

5.3.6 Impressão de Dados Variáveis Para concluir essa fase de testes práticos, resolveu-se testar uma solução para um tipo de produto gráfico que

5.3.6 Impressão de Dados Variáveis Para concluir essa fase de testes práticos, resolveu-se testar uma solução para um tipo de produto gráfico que 105 5.3.6 Impressão de Dados Variáveis Para concluir essa fase de testes práticos, resolveu-se testar uma solução para um tipo de produto gráfico que está se tornando cada vez mais disseminado e requisitado

Leia mais

ATIVIDADES PRÁTICAS SUPERVISIONADAS

ATIVIDADES PRÁTICAS SUPERVISIONADAS ATIVIDADES PRÁTICAS SUPERVISIONADAS CST em Análise e Desenvolvimento de Sistemas 4ª. Série Linguagem para Organização e Transferência de Dados para Web A Atividade Prática Supervisionada (ATPS) é um procedimento

Leia mais

Fiery Network Controller para DocuColor 250/240 SERVER & CONTROLLER SOLUTIONS. Exemplos de fluxo de trabalho

Fiery Network Controller para DocuColor 250/240 SERVER & CONTROLLER SOLUTIONS. Exemplos de fluxo de trabalho Fiery Network Controller para DocuColor 250/240 SERVER & CONTROLLER SOLUTIONS Exemplos de fluxo de trabalho 2005 Electronics for Imaging, Inc. As informações nesta publicação estão cobertas pelos termos

Leia mais

3.1.7. Definição do fundo da página

3.1.7. Definição do fundo da página 3.1.7. Definição do fundo da página 1 Definição do fundo da página A definição do fundo de uma página pode ser feita através da atribuição de uma cor ou de uma imagem Quando é feita através da utilização

Leia mais

Engenharia de Software I

Engenharia de Software I Engenharia de Software I Rogério Eduardo Garcia (rogerio@fct.unesp.br) Bacharelado em Ciência da Computação Aula 05 Material preparado por Fernanda Madeiral Delfim Tópicos Aula 5 Contextualização UML Astah

Leia mais

Guia de Consulta Rápida XHTML. Juliano Niederauer. Novatec Editora. www.novateceditora.com.br

Guia de Consulta Rápida XHTML. Juliano Niederauer. Novatec Editora. www.novateceditora.com.br Guia de Consulta Rápida XHTML Juliano Niederauer Novatec Editora www.novateceditora.com.br Guia de Consulta Rápida XHTML de Juliano Niederauer Copyright 2002 da Novatec Editora Ltda. Todos os direitos

Leia mais

ORIGEM E OBJETIVO DO XML

ORIGEM E OBJETIVO DO XML INTRODUÇÃO XML é um subconjunto de SGML, foi publicado pela primeira vez em 1.986, a qual oferece um esquema de marcação simples, independente e de plataforma extremamente flexível, ou seja, uma linguagem

Leia mais

Sistemas de Informação James A. O Brien Editora Saraiva Capítulo 5

Sistemas de Informação James A. O Brien Editora Saraiva Capítulo 5 Para entender bancos de dados, é útil ter em mente que os elementos de dados que os compõem são divididos em níveis hierárquicos. Esses elementos de dados lógicos constituem os conceitos de dados básicos

Leia mais

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2 Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V. 2009-2 Aula 2 Computação em Nuvem Desafios e Oportunidades A Computação em Nuvem

Leia mais

XPath e XSLT. Ferramentas para Internet Marx Gomes Van der Linden. ( Material baseado no original de Marcelo José Siqueira Coutinho de Almeida )

XPath e XSLT. Ferramentas para Internet Marx Gomes Van der Linden. ( Material baseado no original de Marcelo José Siqueira Coutinho de Almeida ) XPath e XSLT Ferramentas para Internet Marx Gomes Van der Linden ( Material baseado no original de Marcelo José Siqueira Coutinho de Almeida ) XSL XSL Extensible Stylesheet Language Uma família de linguagens

Leia mais

Sintaxe XML. César Vittori cvittori@inf.ufrgs.br. Outubro de 2000. Resumo Introdução à sintaxe XML. Marcação tradicional x marcação de documentos

Sintaxe XML. César Vittori cvittori@inf.ufrgs.br. Outubro de 2000. Resumo Introdução à sintaxe XML. Marcação tradicional x marcação de documentos Sintaxe XML César Vittori cvittori@inf.ufrgs.br Outubro de 2000 Resumo Introdução à sintaxe XML. Marcação tradicional x marcação de documentos XML. Sintaxe XML Marcação de documentos eletrônicos XML é

Leia mais

GLOSSÁRIO. ActiveX Controls. É essencialmente uma interface usada para entrada e saída de dados para uma aplicação.

GLOSSÁRIO. ActiveX Controls. É essencialmente uma interface usada para entrada e saída de dados para uma aplicação. GLOSSÁRIO Este glossário contém termos e siglas utilizados para Internet. Este material foi compilado de trabalhos publicados por Plewe (1998), Enzer (2000) e outros manuais e referências localizadas na

Leia mais

Criação do Sistema Integrado de Bibliotecas do Sistema ACAFE: utilizando JAVA e XML

Criação do Sistema Integrado de Bibliotecas do Sistema ACAFE: utilizando JAVA e XML Criação do Sistema Integrado de Bibliotecas do Sistema ACAFE: utilizando JAVA e XML Alberto Pereira de Jesus (FURB) albertop@furb.br Jefferson José Gomes(ACAFE) jeffer@acafe.org.br Resumo. Este artigo

Leia mais

WebUML: Uma Ferramenta Colaborativa de Apoio ao Projeto e Análise de Sistemas Descritos em Classes UML

WebUML: Uma Ferramenta Colaborativa de Apoio ao Projeto e Análise de Sistemas Descritos em Classes UML Carlos Henrique Pereira WebUML: Uma Ferramenta Colaborativa de Apoio ao Projeto e Análise de Sistemas Descritos em Classes UML Florianópolis - SC 2007 / 2 Resumo O objetivo deste trabalho é especificar

Leia mais

API e Integraç ão. Inoxnet WebServices. Versã o 1.10. (c) EBASE Lda. www.inoxnet.com

API e Integraç ão. Inoxnet WebServices. Versã o 1.10. (c) EBASE Lda. www.inoxnet.com API e Integraç ão Inoxnet WebServices Versã o 1.10 (c) EBASE Lda www.inoxnet.com Índice INFORMAÇ ÃO SOBRE ESTE DOCUMENTO...3 Descrição geral... 3 Requisitos... 3 Termos... 4 Convenções... 4 INTRODUÇ ÃO...4

Leia mais

Folhas de estilo. Jomi Fred Hübner jomi@inf.furb.br. (XSL e XPath) FURB / DSC

Folhas de estilo. Jomi Fred Hübner jomi@inf.furb.br. (XSL e XPath) FURB / DSC Folhas de estilo (XSL e XPath) Jomi Fred Hübner jomi@inf.furb.br FURB / DSC Fevereiro, 2004 XML Stylesheet Language (XSL) XSL é uma linguagem para descrever folhas de estilo para documentos XML. Transformer

Leia mais

1º No módulo de Gestão Contábil é possível acessar o relatório através do menu Relatórios Razão.

1º No módulo de Gestão Contábil é possível acessar o relatório através do menu Relatórios Razão. Impairment Produto : TOTVS Gestão Contábil 12.1.1 Processo : Relatórios Subprocesso : Razão Data publicação da : 12/11/2014 O relatório razão tem a finalidade de demonstrar a movimentação analítica das

Leia mais

Estudo comparativo de diferentes linguagens de interfaces baseadas em XML

Estudo comparativo de diferentes linguagens de interfaces baseadas em XML Estudo comparativo de diferentes linguagens de interfaces baseadas em XML Ricardo Alexandre G. C. Martins, José Carlos Ramalho, and Pedro Rangel Henriques \{ram,jcr,prh\}@di.uminho.pt Departamento de Informática

Leia mais

Fiery EXP8000 Color Server SERVER & CONTROLLER SOLUTIONS. Impressão de dados variáveis

Fiery EXP8000 Color Server SERVER & CONTROLLER SOLUTIONS. Impressão de dados variáveis Fiery EXP8000 Color Server SERVER & CONTROLLER SOLUTIONS Impressão de dados variáveis 2004 Electronics for Imaging, Inc. As informações contidas nesta publicação estão cobertas pelos termos das Avisos

Leia mais

Web Design Aula 01: Conceitos Básicos

Web Design Aula 01: Conceitos Básicos Web Design Aula 01: Conceitos Básicos Professora: Priscilla Suene priscilla.silverio@ifrn.edu.br Motivação Motivação Motivação Motivação Roteiro Introdução Papéis e Responsabilidades Construindo um site

Leia mais