Aplicando Transformação em XML usando XSLT e XSL-FO - 2
-
Upload
vivian-motti -
Category
Technology
-
view
202 -
download
1
description
Transcript of 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
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
Referências[XPath, 1999] Definição de XPath disponível em: http
://www.w3.org/TR/xpath[XPath, 2009] Tutorial sobre XPath disponível em: http
://www.w3schools.com/xpath/ [XSL, 2009] Tutorial sobre XSL da W3C. Disponível em:
http://www.w3schools.com/Xsl/xsl_languages.asp