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

Preview:

DESCRIPTION

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

Citation preview

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

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)

Sumário XSD

Schemas XSL

Origem Definição Aplicação

XPATH

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>

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>

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>

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"

Restrições Elementos do Schema que

restringem a definição de simpleType simpleContent complexContent

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

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

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"/>

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"/>

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

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

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

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>

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

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>

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

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>

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>

Parsing Análise

É feita uma leitura integral do documento

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

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

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

ler dados em um documento XML Parsing

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

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()

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

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

Escaláveis Interativos

Padrão W3C

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

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

matemáticas Provê acessibilidade E consultas mais precisas

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>

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>

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

XSL

Extensible Stylesheet Language

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

Transformação do XML Reorganiza o conteúdo

Adicionando Movendo ou Excluindo elementos

XSL Associa regras de formatação aos

elementos

Folhas de Estilo Arquivos que descrevem a formatação

de documentos XML Consistem em:

XPATH Transformações ou XSLT XSL-FO

Comparação CSS

Folhas de estilo para apresentar conteúdo HML

XSL Folhas de estilo para apresentar

conteúdo XML

X-PATH

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

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

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

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

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ó

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

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

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

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

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

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

Operadores em XPATH

divisão div

subtração -

igual =

multiplicação *

adição +

processa dois conjuntos de nós|

Operadores em XPATH

maior que >

menor ou igual a <=

maior ou igual a >=

menor que <

diferente !=

Operadores em XPATH

módulo (resto da divisão) mod

e and

ou or

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

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

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

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

Recommended