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
Objetivo do Curso
 Apresentar
 XML com exemplos
 Transformações
• XPATH
• XSLT
• XSL-FO
 Aplicações
 Considerações sobre a linguagem
 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)
XML: Sumário
 Origem
 Definição
 Aplicação
 Vantagens x Limitações
 Conceitos Fundamentais
 Terminologia
 Sintaxe
 Estrutura Hierárquica
Origem
 SGML
 Standard Generalized Markup Language
 Linguagem Padronizada de Marcação
Genérica
 Permite descrever diversos tipos de dados
 Facilita o compartilhamento de informações
via Internet
 Poderosa mas complexa
Definição
 XML: Extensible Markup Language
 Linguagem de Marcação padrão
 Descreve
 Armazena
 Transporta
 Manipula
• Dados estruturados
 Recomendação da W3C
• Em 10 de fevereiro de 1998
Objetivos
 Manter a flexibilidade da SGML
 E a simplicidade do HTML
 Separação de conteúdo e apresentação
 Legibilidade
 Criação de tags
 Estruturação semântica de informação
 Portabilidade
Aplicação
 Criação de documentos estruturados
 Criação de linguagens
 Textos formatados
 Imagens vetoriais
 Banco de Dados
 Fórmulas Químicas
 Equações Matemáticas
Diferenças HTML x XML
 XML não substitui HTML
 XML
• Transporta dados
• XML armazena dados
• XML descreve dados
 HTML
• Formata e apresenta dados
 São complementares
Exemplo de Documento
<?xml version="1.0" encoding="ISO-8859-1"?>
<recado>
  <para>João</para>
  <de>Maria</de>
  <assunto>Aviso</assunto>
  <mensagem>Sua mãe ligou.</mensagem>
</recado>
Elementos: declaração e tipo de codificação do
XML, raiz e filhos
Codificação
 Para evitar erros com documentos XML que
têm caracteres especiais é necessário
 Especificar a codificação adequada
 Ou salvar o arquivo como unicode (double bit
unicode ou UTF-16)
 Tipos de Codificação
 Windows-1252
 ISO-88-59-1
 UTF-8
 Não recomendadas para caracteres não ASCII
Codificação
 Recomendações
 Sempre coloque o atributo encoding
 Use um editor que suporte codificação
 Certifique-se qual a codificação usada pelo
editor
 Utilize a mesma codificação do editor no
atributo do arquivo
Estrutura Hierárquica
 Aninhamento em Árvore
 Todo documento deve ter raiz (pai
dos elementos restantes)
livro
título autor assunto
nó pai
filhos
irmãos
preço
moeda
atributo
Regras de Sintaxe
 Simples e Lógicas
 Todo elemento possui uma tag de
fechamento: <nome>Maria</nome>
• Exceto a declaração do XML
 As tags são sensíveis à capitalização
 O aninhamento deve estar correto
 Todo documento tem nó raiz
 Valores de atributos devem estar entre
aspas
Terminologia
 Referências a entidades
 Caracteres reservados como < devem
ser substituídos por um equivalente &lt;
aspas duplas"&quot;
apóstrofe'&apos;
e comercial&&amp;
maior>&gt;
menor<&lt;
Terminologia
 Comentários
 <!– iguais em HTML -->
 Um documento XML é composto por
elementos
 Elementos podem conter
 Texto (conteúdo)
 Outros elementos
 Ambos
 Atributos
Elementos
 Simples
 Sem atributos
 Sem filhos
 Complexos
 Têm ao menos um atributo
 Ou um filho
Atributo
 Provê informação adicional sobre um
elemento
 Informações que não sejam parte do
dado
 Irrelevantes ao dado
 Mas importantes para manipular o
elemento
<arquivo formato="gif">logo.gif</arquivo>
Elementos x Atributos
 Atributos detalham informação
sobre o elemento
 <preço moeda="R$">30,00</preço>
 Todo valor de atributo deve estar
entre aspas
 Simples ou duplas
 Não existem regras de uso, mas
recomendações
Elementos x Atributos
 Atributos
• Não podem ter múltiplos valores
• Não possuem estrutura em árvore
• Não são facilmente expandidos
• São mais difíceis para ler
 Portanto
 Use elementos para dados
 E atributos para informações menos relevantes
 Exemplo: <recado id="01">...</recado>
Tags
 Regras de nomes
 Contêm letras, números e outros
caracteres
 Não começam com números nem
pontuação
 Não começam com XML (nem Xml,
xml...)
 Não contêm espaços
 Não há palavras reservadas
Boas Práticas
 Nomes devem ser descritivos
 Curtos e simples
 Evitar hífens (sinal de subtração)
 Evitar ponto (propriedades de objeto)
 Evitar dois pontos (reservados para
namespaces)
 Acentos podem ser usados, mas nem
todos os softwares têm suporte a eles
Vantagens
 O próprio autor define as tags
 E a estrutura do documento (que é
extensível)
 Separação do conteúdo e da
apresentação
 Dados armazenados em formato texto
 Independente de hardware e software
 Permite transporte e compartilhamento
Vantagens
 Buscas facilitadas
 Pela semântica no armazenamento dos
dados
 Múltiplas formas de apresentação
 Compressão
 Devido à natureza repetitiva das tags
Desvantagens
 Informações repetidas
 Linguagem verbosa
 Dependente
 Não tem suporte a tipos de dados
Limitações
 XML é informação pura em tags
auto-descritivas
 São necessários outros documentos
para
• Enviar
• Receber ou
• Apresentar a informação
Namespaces
 Permitem que elementos e atributos
sejam únicos
 Para cada vocabulário é criado um
namespace
 Resolve a ambiguidade entre elementos
e atributos com mesmo nome mas
semântica diferentes
Namespaces
 Qualificam nomes de elementos e
atributos do XML
 São identificados por referências URI
 Nome expandido
 Nome do namespace + nome local
 Um nome qualificado está sujeito à
interpretação por namespace
 Pré-fixado ou não-pré-fixado
Namespaces
<?xml version="1.0" encoding="UTF-16"?>
<livro>
  <nome>Introdução à XML</nome>
  <editora>O'Reilly</editora>
  <tipo>Técnico</tipo>
  <tipo>Impresso</tipo>
</livro>
Namespaces
<?xml version="1.0" encoding="ISO-8859-1"?>
<livro xlmns:midia="http://www.modos.org">
  <nome>Introdução à XML</nome>
  <editora>O'Reilly</editora>
  <tipo>Técnico</tipo>
  <midia:tipo>Impresso</tipo>
</livro>
Documentos Bem-Formados
 Iniciam com a declaração do XML
 Obedecem à sintaxe do XML
 Têm um único elemento raiz
 Todo elemento tem tag de fechamento
 Tags são sensíveis à capitalização
 Elementos são aninhados corretamente
 Valores de atributos entre aspas (' ou ")
 Usam entidades para caracteres especiais
Editores XML
 Para criação, edição, validação,
documentação, visualização e debug
de documentos XML
 Xeena
 Oxygen
 XMLSpy
 Versão gratuita para teste
Validação
 Além de bem-formado o documento
XML deve estar de acordo com
regras do DTD
 Document Type Definition
 Define a estrutura e os elementos do
documento XML
 Ao invés do DTD, pode-se usar um
Schema
Validação
 Um documento válido foi verificado
 Sua estrutura, seus elementos e seus
atributos estão consistentes com as
declarações
 Declaração de Tipo de Documento
 DTD
 Schema
Documento XML
<?xml version="1.0" encoding="UTF-16"?>
<recado>
  <para>João</para>
  <de>Maria</de>
  <assunto>Aviso</assunto>
  <mensagem>Sua mãe ligou.</mensagem>
</recado>
DTD
<!DOCTYPE recado
[
<!ELEMENT recado (
para,de,assunto,mensagem)>
<!ELEMENT para(#PCDATA)>
<!ELEMENT de (#PCDATA)>
<!ELEMENT assunto (#PCDATA)>
<!ELEMENT mensagem (#PCDATA)>
]>
DTD
 !DOCTYPE define o elemento raiz
 recado
 !ELEMENT recado
 Define que o elemento recado é composto
por 4 elementos nesta ordem
 !ELEMENT de (#PCDATA)
 Define que o elemento de é do tipo
caractere
Declarações DTD
 Elementos vazios
 <!ELEMENT br EMPTY>
 Elementos compostos
 <!ELEMENT recado (para,de,assunto,mensagem)>
 No mínimo 1 ocorrência
 <!ELEMENT recado (para+)>
 Zero ou mais ocorrências
 <!ELEMENT recado (assunto*)>
Declarações DTD
 Zero ou uma ocorrência
 <!ELEMENT recado (assunto?)>
 Alternativa
 <!ELEMENT recado(de,para,assunto,(msg|img))>
 Conteúdo misto
 <!ELEMENT recado(#PCDATA|de|para|assunto)*>
Declaração de atributos
<!ATTLIST pagamento tipo CDATA "cheque">
 Tipos possíveis
 CDATA: caractere
 (1|2|3...): lista enumerada
 ID: identificador único
 Valor Padrão
 #REQUIRED: não pode ser vazio
 #IMPLIED: pode ser vazio
 #FIXED valor: define uma constante
Entidades
 São variáveis que definem
constantes, abreviações para textos
ou caracteres especiais
 No DTD
 <!ENTITY max "100">
 <!ENTITY min "5">
 No XML
 <de>&min;</de>
 <ate>&max;</ate>
DTD
 Document Type Definition
 Define a estrutura de um documento
XML
 Verifica se a estrutura de um
documento XML está válida
 Pode ser declarado dentro ou como
uma referência externa em um
documento XML
Associando o DTD
 Como referência externa
 No documento original
 Após a declaração do xml
 <!DOCTYPE recado SYSTEM "recado.dtd">
 Interno ao documento XML original
 Após declaração do XML
 Antes do conteúdo XML
DTD
 Permite 5 itens em um documento
XML
 Elementos
 Atributos
 Entidades
 PCDATA (parsed character data)
 CDATA (character data)
PCDATA x CDATA
 PCDATA
 As tags são tratadas como marcação
 As entidades são expandidas
 CDATA
 O texto não será analisado pelo parser
do XML
DTD
 Valida o XML
 Limitado
 Todos os dados são interpretados como
texto
 Não tem suporte a namespaces
 Exigem sequência fixa dos elementos
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>
XSD (XML Schema Definition)
 Esquemas
 Baseados em XML
 Definem regras de validação
 São uma alternativa ao DTD
 Definem a estrutura de um documento XML
 Recomendação da W3C desde 2001
 Permitem construir tipos de dados próprios
 E relacionamentos entre elementos
XSD (XML Schema Definition)
 Declaração dos elementos
 Declaração dos atributos
 Tipos de dados
 44 possíveis
 Grupos de modelos
Schemas
 Definem
 Elementos e atributos possíveis
 Relação entre elementos
 Ordem dos elementos filhos
 Quantidade de elementos filhos
 Elementos vazios
 Tipos de dados para elementos e atributos
 Valores padrão e fixo
Schemas x DTD
 Schemas são extensíveis
 Fornecem mais opções
 São escritos em XML
 Têm suporte a
 Tipos de dados
 Namespaces
Considerações Finais
 XML permite
 Buscas mais precisas
 Apresentações diferentes de um mesmo
documento
 Transferência de dados
 Tornar documentos mais acessíveis
 Aplicações em diferentes domínios
Referências
DTD: http://www.w3schools.com/DTD/dtd_examples.asp
XSD: http://www.w3.org/XML/Schema
XML: http://www.slideshare.net/yht4ever/introduction-to-xml?
src=related_normal&rel=86621
XSD: http://www.w3.org/TR/xmlschema-2/
Namespaces: http://www.w3.org/TR/REC-xml-names/

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

  • 1.
    Aplicando Transformações em XMLusando 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
  • 2.
    Objetivo do Curso Apresentar  XML com exemplos  Transformações • XPATH • XSLT • XSL-FO  Aplicações  Considerações sobre a linguagem
  • 3.
     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)
  • 4.
    XML: Sumário  Origem Definição  Aplicação  Vantagens x Limitações  Conceitos Fundamentais  Terminologia  Sintaxe  Estrutura Hierárquica
  • 5.
    Origem  SGML  StandardGeneralized Markup Language  Linguagem Padronizada de Marcação Genérica  Permite descrever diversos tipos de dados  Facilita o compartilhamento de informações via Internet  Poderosa mas complexa
  • 6.
    Definição  XML: ExtensibleMarkup Language  Linguagem de Marcação padrão  Descreve  Armazena  Transporta  Manipula • Dados estruturados  Recomendação da W3C • Em 10 de fevereiro de 1998
  • 7.
    Objetivos  Manter aflexibilidade da SGML  E a simplicidade do HTML  Separação de conteúdo e apresentação  Legibilidade  Criação de tags  Estruturação semântica de informação  Portabilidade
  • 8.
    Aplicação  Criação dedocumentos estruturados  Criação de linguagens  Textos formatados  Imagens vetoriais  Banco de Dados  Fórmulas Químicas  Equações Matemáticas
  • 9.
    Diferenças HTML xXML  XML não substitui HTML  XML • Transporta dados • XML armazena dados • XML descreve dados  HTML • Formata e apresenta dados  São complementares
  • 10.
    Exemplo de Documento <?xmlversion="1.0" encoding="ISO-8859-1"?> <recado>   <para>João</para>   <de>Maria</de>   <assunto>Aviso</assunto>   <mensagem>Sua mãe ligou.</mensagem> </recado> Elementos: declaração e tipo de codificação do XML, raiz e filhos
  • 11.
    Codificação  Para evitarerros com documentos XML que têm caracteres especiais é necessário  Especificar a codificação adequada  Ou salvar o arquivo como unicode (double bit unicode ou UTF-16)  Tipos de Codificação  Windows-1252  ISO-88-59-1  UTF-8  Não recomendadas para caracteres não ASCII
  • 12.
    Codificação  Recomendações  Semprecoloque o atributo encoding  Use um editor que suporte codificação  Certifique-se qual a codificação usada pelo editor  Utilize a mesma codificação do editor no atributo do arquivo
  • 13.
    Estrutura Hierárquica  Aninhamentoem Árvore  Todo documento deve ter raiz (pai dos elementos restantes) livro título autor assunto nó pai filhos irmãos preço moeda atributo
  • 14.
    Regras de Sintaxe Simples e Lógicas  Todo elemento possui uma tag de fechamento: <nome>Maria</nome> • Exceto a declaração do XML  As tags são sensíveis à capitalização  O aninhamento deve estar correto  Todo documento tem nó raiz  Valores de atributos devem estar entre aspas
  • 15.
    Terminologia  Referências aentidades  Caracteres reservados como < devem ser substituídos por um equivalente &lt; aspas duplas"&quot; apóstrofe'&apos; e comercial&&amp; maior>&gt; menor<&lt;
  • 16.
    Terminologia  Comentários  <!–iguais em HTML -->  Um documento XML é composto por elementos  Elementos podem conter  Texto (conteúdo)  Outros elementos  Ambos  Atributos
  • 17.
    Elementos  Simples  Sematributos  Sem filhos  Complexos  Têm ao menos um atributo  Ou um filho
  • 18.
    Atributo  Provê informaçãoadicional sobre um elemento  Informações que não sejam parte do dado  Irrelevantes ao dado  Mas importantes para manipular o elemento <arquivo formato="gif">logo.gif</arquivo>
  • 19.
    Elementos x Atributos Atributos detalham informação sobre o elemento  <preço moeda="R$">30,00</preço>  Todo valor de atributo deve estar entre aspas  Simples ou duplas  Não existem regras de uso, mas recomendações
  • 20.
    Elementos x Atributos Atributos • Não podem ter múltiplos valores • Não possuem estrutura em árvore • Não são facilmente expandidos • São mais difíceis para ler  Portanto  Use elementos para dados  E atributos para informações menos relevantes  Exemplo: <recado id="01">...</recado>
  • 21.
    Tags  Regras denomes  Contêm letras, números e outros caracteres  Não começam com números nem pontuação  Não começam com XML (nem Xml, xml...)  Não contêm espaços  Não há palavras reservadas
  • 22.
    Boas Práticas  Nomesdevem ser descritivos  Curtos e simples  Evitar hífens (sinal de subtração)  Evitar ponto (propriedades de objeto)  Evitar dois pontos (reservados para namespaces)  Acentos podem ser usados, mas nem todos os softwares têm suporte a eles
  • 23.
    Vantagens  O próprioautor define as tags  E a estrutura do documento (que é extensível)  Separação do conteúdo e da apresentação  Dados armazenados em formato texto  Independente de hardware e software  Permite transporte e compartilhamento
  • 24.
    Vantagens  Buscas facilitadas Pela semântica no armazenamento dos dados  Múltiplas formas de apresentação  Compressão  Devido à natureza repetitiva das tags
  • 25.
    Desvantagens  Informações repetidas Linguagem verbosa  Dependente  Não tem suporte a tipos de dados
  • 26.
    Limitações  XML éinformação pura em tags auto-descritivas  São necessários outros documentos para • Enviar • Receber ou • Apresentar a informação
  • 27.
    Namespaces  Permitem queelementos e atributos sejam únicos  Para cada vocabulário é criado um namespace  Resolve a ambiguidade entre elementos e atributos com mesmo nome mas semântica diferentes
  • 28.
    Namespaces  Qualificam nomesde elementos e atributos do XML  São identificados por referências URI  Nome expandido  Nome do namespace + nome local  Um nome qualificado está sujeito à interpretação por namespace  Pré-fixado ou não-pré-fixado
  • 29.
    Namespaces <?xml version="1.0" encoding="UTF-16"?> <livro>  <nome>Introdução à XML</nome>   <editora>O'Reilly</editora>   <tipo>Técnico</tipo>   <tipo>Impresso</tipo> </livro>
  • 30.
    Namespaces <?xml version="1.0" encoding="ISO-8859-1"?> <livroxlmns:midia="http://www.modos.org">   <nome>Introdução à XML</nome>   <editora>O'Reilly</editora>   <tipo>Técnico</tipo>   <midia:tipo>Impresso</tipo> </livro>
  • 31.
    Documentos Bem-Formados  Iniciamcom a declaração do XML  Obedecem à sintaxe do XML  Têm um único elemento raiz  Todo elemento tem tag de fechamento  Tags são sensíveis à capitalização  Elementos são aninhados corretamente  Valores de atributos entre aspas (' ou ")  Usam entidades para caracteres especiais
  • 32.
    Editores XML  Paracriação, edição, validação, documentação, visualização e debug de documentos XML  Xeena  Oxygen  XMLSpy  Versão gratuita para teste
  • 33.
    Validação  Além debem-formado o documento XML deve estar de acordo com regras do DTD  Document Type Definition  Define a estrutura e os elementos do documento XML  Ao invés do DTD, pode-se usar um Schema
  • 34.
    Validação  Um documentoválido foi verificado  Sua estrutura, seus elementos e seus atributos estão consistentes com as declarações  Declaração de Tipo de Documento  DTD  Schema
  • 35.
    Documento XML <?xml version="1.0"encoding="UTF-16"?> <recado>   <para>João</para>   <de>Maria</de>   <assunto>Aviso</assunto>   <mensagem>Sua mãe ligou.</mensagem> </recado>
  • 36.
    DTD <!DOCTYPE recado [ <!ELEMENT recado( para,de,assunto,mensagem)> <!ELEMENT para(#PCDATA)> <!ELEMENT de (#PCDATA)> <!ELEMENT assunto (#PCDATA)> <!ELEMENT mensagem (#PCDATA)> ]>
  • 37.
    DTD  !DOCTYPE defineo elemento raiz  recado  !ELEMENT recado  Define que o elemento recado é composto por 4 elementos nesta ordem  !ELEMENT de (#PCDATA)  Define que o elemento de é do tipo caractere
  • 38.
    Declarações DTD  Elementosvazios  <!ELEMENT br EMPTY>  Elementos compostos  <!ELEMENT recado (para,de,assunto,mensagem)>  No mínimo 1 ocorrência  <!ELEMENT recado (para+)>  Zero ou mais ocorrências  <!ELEMENT recado (assunto*)>
  • 39.
    Declarações DTD  Zeroou uma ocorrência  <!ELEMENT recado (assunto?)>  Alternativa  <!ELEMENT recado(de,para,assunto,(msg|img))>  Conteúdo misto  <!ELEMENT recado(#PCDATA|de|para|assunto)*>
  • 40.
    Declaração de atributos <!ATTLISTpagamento tipo CDATA "cheque">  Tipos possíveis  CDATA: caractere  (1|2|3...): lista enumerada  ID: identificador único  Valor Padrão  #REQUIRED: não pode ser vazio  #IMPLIED: pode ser vazio  #FIXED valor: define uma constante
  • 41.
    Entidades  São variáveisque definem constantes, abreviações para textos ou caracteres especiais  No DTD  <!ENTITY max "100">  <!ENTITY min "5">  No XML  <de>&min;</de>  <ate>&max;</ate>
  • 42.
    DTD  Document TypeDefinition  Define a estrutura de um documento XML  Verifica se a estrutura de um documento XML está válida  Pode ser declarado dentro ou como uma referência externa em um documento XML
  • 43.
    Associando o DTD Como referência externa  No documento original  Após a declaração do xml  <!DOCTYPE recado SYSTEM "recado.dtd">  Interno ao documento XML original  Após declaração do XML  Antes do conteúdo XML
  • 44.
    DTD  Permite 5itens em um documento XML  Elementos  Atributos  Entidades  PCDATA (parsed character data)  CDATA (character data)
  • 45.
    PCDATA x CDATA PCDATA  As tags são tratadas como marcação  As entidades são expandidas  CDATA  O texto não será analisado pelo parser do XML
  • 46.
    DTD  Valida oXML  Limitado  Todos os dados são interpretados como texto  Não tem suporte a namespaces  Exigem sequência fixa dos elementos
  • 47.
    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>
  • 48.
    XSD (XML SchemaDefinition)  Esquemas  Baseados em XML  Definem regras de validação  São uma alternativa ao DTD  Definem a estrutura de um documento XML  Recomendação da W3C desde 2001  Permitem construir tipos de dados próprios  E relacionamentos entre elementos
  • 49.
    XSD (XML SchemaDefinition)  Declaração dos elementos  Declaração dos atributos  Tipos de dados  44 possíveis  Grupos de modelos
  • 50.
    Schemas  Definem  Elementose atributos possíveis  Relação entre elementos  Ordem dos elementos filhos  Quantidade de elementos filhos  Elementos vazios  Tipos de dados para elementos e atributos  Valores padrão e fixo
  • 51.
    Schemas x DTD Schemas são extensíveis  Fornecem mais opções  São escritos em XML  Têm suporte a  Tipos de dados  Namespaces
  • 52.
    Considerações Finais  XMLpermite  Buscas mais precisas  Apresentações diferentes de um mesmo documento  Transferência de dados  Tornar documentos mais acessíveis  Aplicações em diferentes domínios
  • 53.
    Referências DTD: http://www.w3schools.com/DTD/dtd_examples.asp XSD: http://www.w3.org/XML/Schema XML:http://www.slideshare.net/yht4ever/introduction-to-xml? src=related_normal&rel=86621 XSD: http://www.w3.org/TR/xmlschema-2/ Namespaces: http://www.w3.org/TR/REC-xml-names/