A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

1 © FEUP, Maio 2002XML/XSL FEUP Faculdade de Engenharia da Universidade do Porto XSL Gabriel David Porto, Maio de 2002.

Apresentações semelhantes


Apresentação em tema: "1 © FEUP, Maio 2002XML/XSL FEUP Faculdade de Engenharia da Universidade do Porto XSL Gabriel David Porto, Maio de 2002."— Transcrição da apresentação:

1 1 © FEUP, Maio 2002XML/XSL FEUP Faculdade de Engenharia da Universidade do Porto XSL Gabriel David gtd@fe.up.pt Porto, Maio de 2002

2 2 © FEUP, Maio 2002XML/XSL Estilo vs Conteúdo Reutilização de fragmentos de dados: o mesmo conteúdo pode ter um aspecto diferente em contextos diferentes. Múltiplos formatos de saída: diferentes tipos de media (papel, online), tamanhos diferentes (manuais, relatórios), diferentes tipos de hardware de saída (palms, workstations). Estilos talhados de acordo com as preferências do leitor: tamanho de impressão, côr, layout simplificado para dispositivos áudio. Estilos normalizados: normas de estilo organizacionais podem ser aplicados em qualquer altura. Autores não precisam de se preocupar com assuntos de estilo: podem escrever os seus artigos técnicos sem se preocuparem com o layout porque o estilo correcto pode ser aplicado depois.

3 3 © FEUP, Maio 2002XML/XSL Maneiras de mostrar XML Autor DTD Folha de estilos Documentos Apresentação

4 4 © FEUP, Maio 2002XML/XSL Maneiras de mostrar XML XSLT XSL doc Novo doc XSLT stylesheet DTD FO DTD apresentação

5 5 © FEUP, Maio 2002XML/XSL Maneiras de mostrar XML

6 6 © FEUP, Maio 2002XML/XSL XSL Transformação opcional do documento inicial noutra estrutura Descrição de como apresentar a informação transformada Transformação: –Geração de texto constante –Supressão de conteúdo –Mover texto –Duplicar texto –Ordenação –Transformações mais complexas capazes de gerar nova informação a partir da existente Descrição da informação: –Especificação do layout do ecrã ou página –Introdução do texto transformado em containers básicos (listas, parágrafos, tabelas...) –Especificação de propriedades de formatação (margem, fontes, alinhamento...)

7 7 © FEUP, Maio 2002XML/XSL Componentes do XSL XSL: Extensible Stylesheet Language – principais componentes –XPath: XML Path Language – uma linguagem para referenciar partes específicas de um documento XML –XSLT: XSL Transformations – uma linguagem para descrever como transformar um documento XML (representado como uma árvore) noutro. –Formatting Objects e Formatting Properties

8 8 © FEUP, Maio 2002XML/XSL XML -> Árvore XML resultante

9 9 © FEUP, Maio 2002XML/XSL Árvores de partida Árvore XML para processador XML –Hierarquia de elementos Árvore XML para processador XSL –Nó raiz (diferente do elemento raiz) –Elementos –Texto –Atributos –Espaços de nomes –Instruções de processamento –Comentários

10 10 © FEUP, Maio 2002XML/XSL Hydrogen H 1 1.00794 20.28 13.81 0.0899 Helium He 2 4.0026 4.216 0.95 0.1785 Exemplo

11 11 © FEUP, Maio 2002XML/XSL

12 12 © FEUP, Maio 2002XML/XSL Árvores resultantes Outro documento XML –XHTML –Árvore contendo Formatting Objects O facto de a árvore resultante ser um documento XML coloca algumas restrições –Não é possível produzir HTML genérico, que não seja ele próprio XML –As ferramentas para analisar as árvores são as mesmas

13 13 © FEUP, Maio 2002XML/XSL Ligando XSL com XML Incluir após a declaração do xml, uma directiva de processamento que aponta para o stylesheet a utilizar. Exemplo: Comparar com folha de estilo em cascata:

14 14 © FEUP, Maio 2002XML/XSL Folha de estilo PERIODIC_TABLE {display : block; text-align : center} NAME {display : block; font-size : 24pt} ATOM {color : red} SYMBOL {display : block; font-size : 18pt; color : yellow} ATOMIC_NUMBER, ATOMIC_WEIGHT, BOILING_POINT, MELTING_POINT, DENSITY {display : inline; font-size : 12pt}

15 15 © FEUP, Maio 2002XML/XSL Visualizador de XML por omissão (IE5)

16 16 © FEUP, Maio 2002XML/XSL Primeiro exemplo Tabela periodica Resultado Tabela periodica

17 17 © FEUP, Maio 2002XML/XSL Esquema básico de funcionamento Uma especificação XSLT é constituída por um conjunto de regras (templates) –Cada regra só se aplica aos nós que correspondam ao padrão especificado no atributo match –Aplicar uma regra significa incluir na árvore de saída o conteúdo da regra, executando as instruções que este possa conter –Uma instrução manda tentar aplicar as regras a cada um dos filhos directos do nó corrente O processamento XSLT começa pelo nó raiz da árvore de entrada e tenta aplicar-lhe as regras que existem –O nó raiz é designado por "/" –Não confundir com o elemento raiz, que vem abaixo e é, neste exemplo, –A distinção permite pendurar instruções de processamento em "/" mas que não têm, neste caso, nenhum template para activarem

18 18 © FEUP, Maio 2002XML/XSL Folha de estilo simples

19 19 © FEUP, Maio 2002XML/XSL Comentários Tentativa de aplicação recursiva dos templates, percorrendo os filhos do nó corrente na árvore A aplicação efectiva-se quando o nó a ser processado corresponde ao elemento indicado no match A instrução produz na árvore de saída o valor do nó seleccionado no atributo select –O valor de um nó é o texto do seu conteúdo (sem as marcas) –O "." refere-se ao nó corrente (neste caso o elemento NAME)

20 20 © FEUP, Maio 2002XML/XSL Valor de um nó

21 21 © FEUP, Maio 2002XML/XSL Selecção de nós Neste caso o nó corrente é o ATOM, por isso a segunda chamada a value-of produz o seu valor –A instrução produz o conteúdo de um elemento NAME, que seja filho do nó corrente (se houvesse mais do que um, teríamos apenas o primeiro; para ter todos seria necessário uma instrução xsl:apply-templates, para iterar, e um template para NAME com value-of de "." A instrução tem o mesmo efeito que a do exemplo anterior –há mais do que uma maneira de especificar o mesmo resultado, jogando com a indicação de caminhos ao longo da árvore e com a posição corrente

22 22 © FEUP, Maio 2002XML/XSL Definição de uma tabela Atomic Number vs. Atomic Weight Atomic Number vs. Atomic Weight Element Atomic Number Atomic Weight <xsl:value-of select="NAME"/> <xsl:value-of select="ATOMIC_NUMBER"/> <xsl:value-of select="ATOMIC_WEIGHT"/>

23 23 © FEUP, Maio 2002XML/XSL Tabela

24 24 © FEUP, Maio 2002XML/XSL Aplicação selectiva É possível especificar um critério de selecção em apply-templates de forma a só percorrer os filhos que satisfaçam o critério (nó do elemento indicado) O atributo select nas primeiras regras é redundante pois os únicos filhos existentes já são nós desses elementos

25 25 © FEUP, Maio 2002XML/XSL Valor de um atributo

26 26 © FEUP, Maio 2002XML/XSL Mais valores de nós Tipo de nó –Raiz –Elemento –Texto –Atributo –Espaço de nomes –Instrução de processamento –Comentário Valor –o do elemento raiz –concatenação de todos os dados de caracteres analisados do elemento, incluindo os dos descendentes –o próprio nó –o valor do atributo, com as entidades resolvidas e sem espaços –o URI respectivo –o valor da instrução, sem nome nem limitadores –o texto do comentário, sem limitadores

27 27 © FEUP, Maio 2002XML/XSL Má solução

28 28 © FEUP, Maio 2002XML/XSL Ambiguidade O problema da solução anterior é o facto de o elemento PERIODIC_TABLE ter vários filhos ATOM o que deixa a instrução value-of ambígua (só mostra o primeiro) Melhor

29 29 © FEUP, Maio 2002XML/XSL Iteração Uma solução alternativa é forçar a iteração com for-each

30 30 © FEUP, Maio 2002XML/XSL Condições de selecção Gases

31 31 © FEUP, Maio 2002XML/XSL Condições A condição [@PHASE='GAS'] filtra os átomos de forma a reter apenas os gasosos e procura regras apenas para esse (daí que não seja preciso repetir a condição no template de ATOM)

32 32 © FEUP, Maio 2002XML/XSL Caminhos de comprimento variável Elements with known Melting Points

33 33 © FEUP, Maio 2002XML/XSL Pattern Matching XPath city/building :building cujo pai é city city//building:building com um antepassado city ancestor(city)/building:buildings descendentes directos de um antepassado de city */building:buildings que sejam filhos directos de qualquer elemento building/*:elementos que tenham como antecedente directo building./building:buildings que sejam filhos do nó corrente../building:buildings que sejam sibling (filhos do pai) do nó corrente city|building:buildings ou cities do nó corrente id(identificador):elemento marcado com identificador (absoluto) node():um nó text():um nó de texto (idem para processing-instruction() ) /ArcWorld/:caminho absoluto

34 34 © FEUP, Maio 2002XML/XSL Testes city[church]/building:buildings das cities com church descendente directo building[@name]: buildings com atributo name building[@name=Louvre]:buildings com nome Louvre Outros testes: –not() –first-of-type(): primeiro sibling do seu tipo –last-of-type() –first-of-any(): primeiro sibling de qualquer tipo –last-of-any() –comment(): comentário –pi(): processing instruction

35 35 © FEUP, Maio 2002XML/XSL Relacões possíveis

36 36 © FEUP, Maio 2002XML/XSL Requisitos p/ um stylesheet XSL Todos os documentos XSL devem: –Ser documentos XML bem-formados –Cada tag deve usar o namespace xsl: –Começar com a tag e acabar com (root element) –Dentro da tag inicial o namespace xsl deve ser definido: –Após o root element podem importar-se ou incluir-se outros dados XSL usando ou –Depois podem usar-se quaisquer dos elementos seguintes:,,,, ou. Sempre ANTES de quaisquer regras nossas usando o elemento

37 37 © FEUP, Maio 2002XML/XSL Elementos

38 38 © FEUP, Maio 2002XML/XSL Elementos

39 39 © FEUP, Maio 2002XML/XSL Elementos

40 40 © FEUP, Maio 2002XML/XSL Document Object Model (DOM) DOM 1.0 API

41 41 © FEUP, Maio 2002XML/XSL DOM 1.0 Plataforma-neutral Linguagem-neutral API para manipular a estrutura e conteúdo de documentos XML Todas as marcas e declarações de tipos são disponibilizadas Também permite a criação integral de documentos em memória Produtos suportando DOM expõem interfaces para as suas estruturas internas

42 42 © FEUP, Maio 2002XML/XSL Fragmento de documento Shady Grove Aeolian Over the River, Charlie Dorian

43 43 © FEUP, Maio 2002XML/XSL DOM (Core) Estabelece um conjunto de definições de objectos –suficientes para representar instâncias contidas em documentos HTML 4.0 e XML1.0 Programas encontram objectos dos tipos: – Node um pai e vários filhos – Element conteúdo e lista de atributos – DocFragment nó raiz de um fragmento – Document raiz de um documento standalone e podem encontrar também: – NodeIterator para iterar num conjunto especificado por um filtro – AtributeList colecção de atributos indexados por nome – Attribute atributo de um elemento – DocumentContext repositório de meta-informação – DOM operações dependentes da instância

44 44 © FEUP, Maio 2002XML/XSL DOM (XML) Estende DOM (Core) para suportar DTDs, entidades, CDATA Os objectos e interfaces de DOM (XML) são suficientes para escrever processadores usando DTDs – XMLNode métodos adicionais – DocumentType declarações de tipos de elementos, entidades e notações – ElementDefinition definição de elemento – AtributeDefinition atributo dentro de um elemento – ModelGroup representa o modelo de conteúdo de elemento – EntityDefinition definição de entidade – EntityReference referência a entidade – Notation notação

45 45 © FEUP, Maio 2002XML/XSL ArcWorld.xml

46 46 © FEUP, Maio 2002XML/XSL ArcWorld.dom Start document Start element: ArcWorld Text: " " Start element: Country Attribute: name="USA" End element: Country Text: " " Start element: Country Attribute: name="France" End element: Country Text: " " Start element: Country Attribute: name="China" End element: Country Text: " " Start element: City Attribute: name="Washington" Attribute: country="USA" End element: City Text: " " Start element: City Attribute: name="Paris" Attribute: country="France" End element: City Text: " " Start element: City Attribute: name="Beijing" Attribute: country="China" End element: City Text: " " Start element: Building Attribute: name="Lincoln Memorial" Attribute: city="Washington" End element: Building Text: " " Start element: Building Attribute: name="National Gallery" Attribute: city="Washington" End element: Building... Start element: Building Attribute: name="Eiffel Tower" Attribute: city="Paris" End element: Building Text: " " Start element: Building Attribute: name="Louvre" Attribute: city="Paris" End element: Building Text: " " Start element: Building Attribute: name="Great Wall" Attribute: city="Beijing" End element: Building Text: " " Start element: Building Attribute: name="Tiananmen" Attribute: city="Beijing" End element: Building Text: " " End element: ArcWorld


Carregar ppt "1 © FEUP, Maio 2002XML/XSL FEUP Faculdade de Engenharia da Universidade do Porto XSL Gabriel David Porto, Maio de 2002."

Apresentações semelhantes


Anúncios Google