aplicando transformação em xml usando xslt e xsl-fo - 2

57
Aplicando Transformações em XML usando XSLT e XSL-FO Ms Vivian Genaro Motti Profª Drª Maria da Graça Pimentel Prof Dr Rudinei Goularte Ilhéus, maio de 2009. ERBASE

Upload: vivian-motti

Post on 18-Dec-2014

200 views

Category:

Technology


1 download

DESCRIPTION

Minicurso em 4 módulos apresentado durante o ERBASE em 2009.

TRANSCRIPT

Page 1: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Aplicando Transformações em XML usando XSLT e

XSL-FO

Ms Vivian Genaro MottiProfª Drª Maria da Graça Pimentel

Prof Dr Rudinei Goularte

Ilhéus, maio de 2009.

ERBASE

Page 2: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Parte I: XML, conceitos e definições Parte II: XSD, XSL, X-PATH Parte III: CSS, XSL-T, XSL-FO Parte IV: XSL-FO (Formatting

Objects)

Page 3: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Sumário XSD

Schemas XSL

Origem Definição Aplicação

XPATH

Page 4: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Documento XML

<?xml version="1.0" encoding="UTF-8"?><recado>  <para>João</para>  <de>Maria</de>  <assunto>Aviso</assunto>  <mensagem>Sua mãe ligou.</mensagem></recado>

Page 5: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Schema <xs:element name="recado"> <xs:complexType><xs:sequence> <xs:element name="para" type="xs:string"/>  <xs:element name="de" type="xs:string"/>  <xs:element name="assunto" type="xs:string"/>  <xs:element name="mensagem" type="xs:string"/> </xs:sequence></xs:complexType>

</xs:element>

Page 6: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Associando Schema ao XML<?xml version="1.0"encoding="UTF-8"?><recado xmlns="http://www.w3schools.com"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.w3schools.com recado.xsd">

  <para>João</para>...

  <mensagem>Sua mãe ligou.</mensagem>

</recado>

Page 7: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Associando Schema ao XMLxmlns="http://www.w3schools.com" Especifica a declaração do namespace padrão

Todos os elementos usados no XML original estão declarados no namespace da URL

Tendo o namespace disponível:xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

Declara-se o namespace a ser usado E o Schema

xsi:schemaLocation="http://www.w3schools.com recado.xsd"

Page 8: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Restrições Elementos do Schema que

restringem a definição de simpleType simpleContent complexContent

Page 9: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Elementos Simples São elementos compostos apenas

por texto Não possuem atributos nem outros

elementos No entanto o texto pode ser de

diferentes tipos Boolean, string, date

É possível restringir seu conteúdo

Page 10: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Elementos Simples São definidos assim<xs:element name="x" type="y"> Tipos

xs:string xs:decimal xs:integer xs:boolean xs:date xs:time

Page 11: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Exemplos <nome>Maria</nome> <idade>16</idade> <nascimento>1993-02-27</nascimento>

<xs:element name="nome" type="xs:string"/><xs:element name="idade" type="xs:integer"/><xs:element name="nascimento" type="xs:date"/>

Page 12: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Valores Padrão e Fixo É possível especificar um valor fixo ou

padrão para elementos simples <xs:element name="sexo" type="xs:string" default="M"/> O valor padrão é usado caso nenhum outro

seja definido Já o valor fixo não pode ser alterado <xs:element name="cor" type="xs:string" fixed="azul"/>

Page 13: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Exemplo de Atributo Exemplo<nome prefixo="Sr">Smith</nome> Declaração<xs:attribute name="prefixo" type="xs:string"/>

Opções Valor padrão ou constante Opcional ou Requerido Conteúdos Restritos

Page 14: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Atributos São definidos assim<xs:attribute name="x" type="y"> Tipos

xs:string xs:decimal xs:integer xs:boolean xs:date xs:time

Page 15: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Atributo Elemento Vazio<aluno id="01" /> Declaração<xs:element name="aluno" type="xs:string">

<xs:complexType name="aluno"><xs:attribute name="id" type="xs:string"/></xs:complexType>

Page 16: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Ocorrências Quantidade de elementos

DTD: *, ?, + Schema: minOccurs, maxOccurs

<xs:element name="cel" type="xs:string" minOccurs="1" maxOccurs="2"/>

Valor especial maxOccurs="unbounded" Sem limites

Page 17: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Tipos de Dados É possível criar tipos de dados próprios<xs:element name="nomecompleto"> <xs:complexType><xs:sequence><xs:element name="nome" type="xs:string"/><xs:element name="sobrenome" type="xs:string"/></xs:sequence>

</xs:complexType></xs:element>

Page 18: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Ordem dos elementos Há três opções

Sequence: atribui uma ordem fixa aos elementos

All: qualquer ordem é possível Choice: um elemento da lista aparece

Page 19: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Exemplo Para escolha: choice<xs:element name="setor"> <xs:complexType><xs:choice> <xs:element name="venda" type="xs:string"/> <xs:element name="caixa" type="xs:string"/></xs:choice>

</xs:complexType></xs:element>

Page 20: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Tipo Simples Enumeration

Opções de conteúdo<xs:simpleType name="cor"> <xs:restriction base="xs:string"> <xs:enumeration value="branco"/> <xs:enumeration value="azul"/> <xs:enumeration value="verde"/> </xs:restriction></xs:simpleType>

Page 21: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Parsing Análise

É feita uma leitura integral do documento

A informação é estrutura de acordo com a definição de seus elementos

Page 22: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Parsers Lêem o documento XML Analisam a formatação e gramática Convertem em um objeto DOM

Para ser acessado via JavaScript Expat

Desenvolvido em C XML4J

Suporta DOM e SAX

Page 23: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

SAX (Simple API for XML) É um conjunto de interfaces Java Permite criação de aplicativos para

ler dados em um documento XML Parsing

Page 24: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

DOM (Document Object Model)

Define um modo padrão para acessar e manipular documentos XML Interpreta como estrutura em árvore Permitindo acesso, alteração, criação e

remoção de nós Armazena o documento todo na

memória Não recomendado para arquivos grandes

Page 25: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

DOM

Para navegação e manipulação de conteúdo

Adição de modelos de folhas de estilo Visualização da formatação dos

documentos Método para recuperar dados

getElementsByTagName()

Page 26: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Linguagens Derivadas XHTML última versão do HTML SVG formato de imagens SMIL para descrever multimídia na web WSDL para descrever webservices WAP linguagem de marcação para PDAs RSS para feeds RDF e OWL para descrever recursos e

ontologias MathML, CML

Page 27: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

SVG Scalable Vector Graphics Especificação para gráficos

Escaláveis Interativos

Padrão W3C

Page 28: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

SMIL (smile) Synchronized Multimedia Integration

Language Descreve o tempo em uma

apresentação Descreve o layout da apresentação na

tela Associa links aos objetos de mídia

Page 29: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

MathML Mathematical Markup Language Recomendação W3C Linguagem para descrições

matemáticas Provê acessibilidade E consultas mais precisas

Page 30: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

MathML Usa a notação pré-fixa (6+2)<math> <apply> <plus/> --> Operador vem antes. <cn>6</cn> --> 1º operando <cn>2</cn> --> 2º operando </apply></math>

Page 31: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

CML – H2O<?xml version="1.0"?> <cml xmlns="http://www.xml-cml.org/schema/cml2/core"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation= "http://www.xml-cml.org/schema/cml2/core cmlCore.xsd">

<molecule title="Water"> <atomArray> <atom id="a1" elementType="H" hydrogenCount="0"/> <atom id="a2" elementType="O" hydrogenCount="2"/> <atom id="a3" elementType="H" hydrogenCount="0"/> </atomArray> <bondArray> <bond atomRefs2="a1 a2" order="1"/> <bond atomRefs2="a2 a3" order="1"/> </bondArray> </molecule> </cml>

Page 32: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Considerações Importantes

XML: Extensible Markup Language Não substitui o HTML DTD: Document Type Definition XSL: Extensible Stylesheet Language <?xml version="1.0"?> Documentos válidos x bem-formados

Page 33: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

XSL

Extensible Stylesheet Language

Page 34: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Definição de XSL XSL: Extensible Stylesheet Language

Transforma o XML adicionando folhas de estilo a ele

Usa linguagem de transformação e de formatação

XSL É um conjunto de recomendações para

definir a transformação e a apresentação de um documento XML

Page 35: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Transformação do XML Reorganiza o conteúdo

Adicionando Movendo ou Excluindo elementos

XSL Associa regras de formatação aos

elementos

Page 36: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Folhas de Estilo Arquivos que descrevem a formatação

de documentos XML Consistem em:

XPATH Transformações ou XSLT XSL-FO

Page 37: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Comparação CSS

Folhas de estilo para apresentar conteúdo HML

XSL Folhas de estilo para apresentar

conteúdo XML

Page 38: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

X-PATH

Page 39: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

XPATH Sintaxe para navegar por conteúdo

XML Possui uma biblioteca de funções

padrão É o principal elemento de XSLT É um recomendação da W3C

Page 40: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

XPATH Linguagem para acesso ao conteúdo

de um documento XML Manipula strings, números, booleanos

Navega pela estrutura hierárquica de um documento XML

Classifica os nós em 5 tipos Pai, filho, irmão, ancestral e

descendente

Page 41: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Nós em XPATH São de 7 tipos diferentes

Elemento Atributo Texto Namespaces Instruções de processamento Comentários Raiz

Documentos XML são sempre tratados como árvores

Page 42: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Nós em XPATH Valores Atômicos

São nós sem filhos ou sem pais Ex: <nome>Maria</nome>

Nós Pais Todo elemento e atributo possui um pai

Filhos Elementos podem ter zero, um ou mais

filhos

Page 43: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Nós em XPATH Irmãos

Nós com o mesmo pai Nó Ancestral

O pai, ou avó ... de um nó Nós Descendentes

Os filhos, ou netos ... de um nó

Page 44: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Expressões em XPATH São utilizadas para

Selecionar nós e conjuntos de nós em um documento XML

Sua sintaxe é similar à de navegação por sistemas de arquivos

Page 45: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Expressões em XPATH

seleciona os atributos do nó@

seleciona o pai do nó atual..

seleciona o nó atual.

seleciona nós do documento a partir do nó atual//

seleciona do nó raiz/

seleciona todos os nós filhos do nó correspondentenome do nóDescriçãoExpressão

Page 46: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Exemplos de expressões XPATH

todos os elementos telefone que tenham um atributo tipo de valor celular

//telefone[@tipo='celular']

o primeiro elemento nome que é filho de agenda

/agenda/nome[1]

todos os elementos telefone que tenham um atributo tipo

//telefone[@tipo]

os dois primeiros elemento nome que é filho de agenda

/agenda/nome[position() < 3]

o penúltimo elemento nome que é filho de agenda

/agenda/nome[last() - 1]

o último elemento nome que é filho de agenda

/agenda/nome[last()]

o primeiro elemento nome que é filho de agenda

/agenda/nome[1] SeleçãoExpressão

Page 47: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Expressões Genéricas *

Seleciona qualquer elemento @*

Seleciona qualquer atributo de qualquer elemento

node() Seleciona qualquer nó de qualquer tipo

| Seleciona mais de um caminho Ex://agenda/nome | //agenda/telefone

Page 48: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Eixos em XPATH Definem um conjunto de nós relativos

todos os atributos do nó atual attribute

todos os filhos do nó atual child

e ele própriodescendant-or-self

todos os descendentes descendant

e ele próprio ancestor-or-self

todos os ancestrais ancestor

Page 49: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Eixos em XPATH Definem um conjunto de nós relativos

todos os nós de namespaces do nó atual namespace

todos os filhos do nó atual child

tudo no documento que está antes do nó atual

preceding

o pai do nó atual parent

todos os irmão após o nó atual following-sibling

tudo no documento que vier na sequência do nó atual

following

Page 50: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Operadores em XPATH

divisão div

subtração -

igual =

multiplicação *

adição +

processa dois conjuntos de nós|

Page 51: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Operadores em XPATH

maior que >

menor ou igual a <=

maior ou igual a >=

menor que <

diferente !=

Page 52: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Operadores em XPATH

módulo (resto da divisão) mod

e and

ou or

Page 53: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Expressão de local Um caminho de localização pode ser

Absoluto ou Relativo

Caminhos absolutos são iniciados por um barra /nome

Caminhos relativos não nome

Page 54: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Funções Padrão XPATH possui uma biblioteca com

mais de 100 funções padrão para Comparação de strings, valores

numéricos, booleanos, e tempo Manipulação de nós e de sequências

XPATH é usada em XSLT

Page 55: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Considerações Importantes XSL

Transforma os elementos usando XSLT Formata os elementos usando XSL-FO

XPATH Linguagem para seleção e manipulação

de nós XML

Page 56: Aplicando Transformação em XML usando XSLT e XSL-FO - 2

Considerações Finais XML é uma linguagem dependente,

portanto é necessário XSD para validar um documento (ou

DTD) XSL para transformar e formatar XPATH para navegar pelo documento

fonte