Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
XML: Utilização, validação e transformação
Ricardo Terra rterrabh [at] gmail.com
XML 1
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
CV
Nome: Ricardo Terra Email: rterrabh [at] gmail.com www: ricardoterra.com.br Twitter: rterrabh Lattes: lattes.cnpq.br/ 0162081093970868
Ph.D. (UFMG/UWaterloo), Post-Ph.D. (INRIA/Université Lille 1)
Background Acadêmico: UFLA (desde 2014), UFSJ (1 ano), FUMEC (3 anos), UNIPAC (1 ano), FAMINAS (3 anos)
Profissional: DBA Eng. (1 ano), Synos (2 anos), Stefanini (1 ano)
XML 2
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
Sumário
1. Introdução à Linguagem XML
2. Sintaxe XML
3. Esquemas de validação (DTD e XML Schema)
4. XSLT
3 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
1. INTRODUÇÃO À LINGUAGEM XML
4 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
1.1. W3C
§ World Wide Web Consortium (W3C) é um consórcio de várias empresas mundiais de tecnologia (aproximadamente 500 empresas) fundada por Tim Berners Lee no ano de 1994 com o objetivo de levar a Internet ao seu potencial máximo, através de desenvolvimento de protocolos comuns e fóruns abertos que promovem a sua evolução e garantem a sua interoperabilidade.
§ O W3C desenvolve tecnologias, ou melhor, padrões para a criação e a interpretação dos conteúdos para a Internet. Sites desenvolvidos segundo esses padrões, podem ser acessados e visualizados por qualquer pessoa ou tecnologia independente do hardware ou do software utilizados, por exemplo, PC com Linux, PDA com Windows CE, entre outros exemplos.
5 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009 XML
§ Apesar do W3C não ser muito conhecido no Brasil, seus padrões como Hyper Text Markup Language (HTML), Extensible Hypertext Markup Language (XHTML), Extensible Markup Language (XML) e Cascading Style Sheets (CSS), são muito populares, contudo em muitos casos são usados de forma errônea devido ao não conhecimento da especificação.
§ É da responsabilidade do desenvolvedor Web respeitar e seguir os padrões deste órgão, pois se assim não fizer, estará impondo barreiras tecnológicas a diversas pessoas e, com isto, desestimulando e até mesmo impedindo o acesso a suas páginas.
1.1. W3C
6
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
1.2. XML
§ 1.2.1. Conceitos
§ 1.2.2. Motivação
§ 1.2.3. Características
§ 1.2.4. Vantagens e Desvantagens
7 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
1.2.1. Conceitos
§ Extensible Markup Language (XML) se tornou uma recomendação da W3C no dia 10 de fevereiro de 1998 cujo objetivo seria a geração de linguagens de marcação para necessidades especiais.
§ O W3C começou a trabalhar em um projeto de uma linguagem de marcação que combinasse a flexibilidade do SGML (Standard Generalized Markup Language) com a simplicidade do HTML. O principio do projeto era criar uma linguagem que pudesse ser lida por software, e se integrar com as demais linguagens. Sua filosofia seria incorporada por vários princípios importantes:
8 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
1.2.1. Conceitos
§ separação do conteúdo e da formatação: é uma linguagem cujo aspecto importante é o conteúdo. A formatação poderia ser realizada por uma outra linguagem.
§ possibilidade de criação de tags sem limitação: o uso de tags pode ser altamente utilizado, sem nenhuma limitação, contudo a estrutura deve ser respeitada e seguida.
§ legibilidade tanto pelas pessoas quanto por máquinas: a estrutura do XML é bem completa e ilimitada e, ao mesmo tempo, simples tornando de fácil leitura por pessoas.
§ criação de arquivos para validação de estrutura: arquivos de validação, a serem visto posteriormente neste estudo, permitem verificar se um XML além de bem formado, é também válido de acordo com uma estrutura.
§ interligação: sua utilização permite interligar SGBDs (Sistema de Gerenciamento de Banco de Dados) distintos.
§ simplicidade
Existem linguagens baseadas em XML como RDF, SMIL, MathML, NCL, XSIL e SVG. O SVG, por exemplo, é um formato gráfico vetorial (graphics scalar vector) e o MathML é uma linguagem de marcação desenvolvida para o aspecto matemático.
9 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
1.2.2. Motivação
§ Maioria dos formatos de troca de dados eram: § proprietários (custo); § necessidades específicas (solução específica); § binários (diferentes aplicações e plataformas).
10 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
1.2.3. Características
§ Provê uma forma baseada em texto: § caractere é sua unidade principal; § aplica uma estrutura baseada em árvore para armazenar a informação; § facilidade na edição e manutenção.
§ Foco na informação. § Simplicidade e legibilidade. § Criação de marcações sem limitação.
11 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
1.2.4. Vantagens e Desvantagens
§ Dentre as principais vantagens, destacam-se: § Formato legível para pessoas e máquinas. § Suporta UNICODE, permitindo que quase qualquer linguagem escrita possa ser
comunicada. § Representa a maioria das estruturas de dados da computação: registros, listas e
árvores. § Seu próprio formato descreve a estrutura e os nomes dos campos.
§ Dentre algumas desvantagens, destacam-se:
§ Sintaxe cheia e redundante. § A redundância pode afetar a eficiência através do armazenamento alto e do
custo de transmissão. § A interpretação não suporta diretamente tipos de dados. § Mapear o XML em um paradigma relacional ou orientado a objetos é uma tarefa
custosa, entretanto o inverso é fácil. § Algumas pessoas insistem em dizer que o XML pode ser utilizado para
armazenamento de dados somente se o arquivo é de baixo volume; Todavia, este informação não é verdadeira, grandes estruturas XML podem ser acessadas muito rapidamente.
12 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
1.3. XML x HTML
§ Tanto o XML quanto o HTML são linguagens derivadas do SGML. O que alguns pensam é que o XML foi criado com o propósito de substituir o HTML. Isto não é verdade e, antes de comentarmos o porquê, falaremos um pouco sobre o HTML.
§ O HTML é uma linguagem de marcação cujo objetivo é produzir páginas na internet. Suas tags consistem em uma marca de início e outra de término, suas marca de início é simbolizada por < e sua marca de término por />.
§ O XML funciona como o HTML, possui tags de início e término, utiliza os mesmos símbolos, todavia não possui a maior característica do HTML: tags pré-estabelecidas. O XML é amplo, as tags são ilimitadas e qualquer tag pode ser criada desde que a estrutura seja mantida.
§ Enquanto o HTML é mais flexível, permitindo que não se feche algumas das tags, o XML é altamente estruturado. Isto indica que no XML, ao criar uma tag deve-se obrigatoriamente fechá-la, caso contrário, sua estrutura não será validada e o arquivo estará inválido; problema que não ocorre com o HTML no quais algumas de suas tags geralmente não são fechadas ou possuem alguma flexibilidade de estruturação.
13 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
2. SINTAXE XML
14 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
2.1. Sintaxe HTML
15 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
2.2. Partes do documento
Um documento XML bem-formado compreende três partes: § Prólogo: Opcional. § Corpo: Contém um ou mais elementos, na forma de uma árvore hierárquica. § Epílogo: Opcional.
16 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
2.2.1. Prólogo
Um documento XML começa com um prólogo. O prólogo é usado para sinalizar o começo dos dados XML, descrever seu método de codificação de caractere,e apresentar algumas outras dicas de configuração ao parser XML. O mais importante componente do prólogo é a declaração XML. Todos os documento XML podem (e devem) começar com uma única declaração XML. Apesar da declaração usar uma sintaxe similar a uma instrução de processamento, tecnicamento falando dentro dos termos da recomendação XML não se trata de uma instrução. Veja a sintaxe completa da declaração XML: <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>!
17 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
2.2.1. Prólogo
Os atributos definidos pela especificação XML 1.0: § version à obrigatória; valor tem que ser "1.0"; este atributo permite o suporte de
futuras versões do XML. § encoding à opcional. O valor tem que ser uma codificação de caractere legal,
como "UTF-8", "UTF-16" ou "ISO-8859-1" (a codificação de latin1). Todos os parses XML devem oferecer suporte a pelo menos UTF-8 e UTF-16.
§ standalone ! opcional. O valor tem que ser “yes” ou “no”; onde “yes“ significa que todas as declarações de entidade necessárias estão contidas no elemento, e “no” significa que um DTD externo é necessário.
18 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
2.3. Elementos
Os elementos são blocos de construção básicos de uma marcação XML. Eles podem conter outros elementos, dados de caractere, referência de caractere, referências de entidade, instruções de processamento, comentários e/ou seções de CDATA. Todos estes termos serão abordados. Os elementos são delimitados usando tags que consistem em nome de tipo de elemento fechada por um par de parênteses angulares (“< >”). Todo elemento deve conter uma tag inicial e outra tag final (que não pode ser esquecida como no HTML): <h1>Olá</h1> à válido. <br> à inválido. Deve ser: <br></br> Exceção única quando é um elemento sem conteúdo, onde o elemento é representado por um par de tags inicial/final, ou usando-se uma forma híbrida abreviada, a tag de elemento vazia. Ex: <br> à inválido. <br /> à válido. Uma vez que representam objetos discretos, os elementos podem ser considerados como “substantivos”.
19 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
2.4. Elementos do documento
20 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
2.5. Aninhamento de elementos
21 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
2.6. Atributos
22 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
2.7. Referências de caractere e entidade
23 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
2.7.1. Referências de caractere
24 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
2.7.2. Referências de entidade
25 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
2.8. Instruções de processamento
26 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
2.9. Comentário
27 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
2.10. Seções CDATA
28 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3. ESQUEMAS DE VALIDAÇÃO
29 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.1. Modelagem de dados
30 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.2. XML bem formado e válido
31 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.3. Esquemas de validação
32 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.3. Esquemas de validação
33 XML
Nós pensamos que tão logo XML Schemas serão utilizados na maioria das aplicações Web como uma substituição aos DTDs. Estas são algumas razões: ! XML Schemas são extensíveis para adições futuras. ! XML Schemas são mais ricos e mais úteis que os DTDs. ! XML Schemas são escritos em XML ! XML Schemas suportam tipos de dados ! XML Schemas suportam namespaces (INTRODUCTION TO XML SCHEMA, W3C, 2006. Tradução nossa).
O mais interessante do XML Schema é o suporte aos tipos de dados. O DTD
somente consegue validar se é um tipo binário (PCDATA) ou tipo alfanumérico (CDATA) enquanto o XML Schema possui vários tipos de dados o que o torna mais ricos e com validações mais úteis. Por ser escrito em formato XML pode ser transformado em outro XML Schema utilizando o XSLT conferindo a ele a extensibilidade citada pelo W3C. Observando a quantidade de novos recursos que o XML Schema oferece, conclui-se que o XML Schema sucederá o DTD em pouco tempo. Veremos na Figura 3, um exemplo demonstrando um XML vinculado a uma validação DTD e uma validação pelo XML Schema.
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.3. Esquemas de validação
34 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.3. Esquemas de validação
35 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.4. DTD
36 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.4.1. Declaração Interna
37 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.4.2. Declaração Externa
38 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.4.3. Blocos de Construção de Documento XML
39 XML
No ponto de vista do DTD, todos os documentos XML são formados pela os seguintes simples blocos de construção:
! Elementos Elementos são os principais blocos de construção de documentos. Como já foi visto, elementos pode conter texto, outros elementos ou, simplesmente, ser vazios. Exemplos: <body>body text in between</body> <message>some message in between</message>
! Atributos Atributos provêm informações extras sobre os elementos. Atributos são sempre inseridos dentro na tag inicial do elemento. Atributos sempre vem na forma de pares de nome/valor. O elemento “img” tem informação adicional, observe: <img src="computer.gif" /> O nome do elemento é “img”. O nome do atributo é “src”. O valor do atributo é "computer.gif". Partindo do pressuposto que o elemento é vazio, ele é fechado utilizando uma marcação híbrida de abertura/fechamento.
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.4.3. Blocos de Construção de Documento XML
40 XML
! Entidades
Como já visto, entidades são variáveis usadas para definir texto comum.
! PCDATA PCDATA significa dados de caracteres a ser feito o parser. O texto sera examinado pelo parser para entidades e marcações. As marcações e entidades serão reconhecidas pelo parser.
! CDATA CDATA significa também dados de caractere. CDATA é um texto que NÃO será tratado pelo parser. Elementos e
entidades não serão tratados como elementos e entidades, respectivamente.
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.4.4. Elementos
41 XML
Em DTD, a declaração de elementos possui uma sintaxe própria: <!ELEMENT element-name category>
ou <!ELEMENT element-name (element-content)>
! Elementos Vazios: são declarados utilizando a palavra-chave de
categoria EMPTY: <!ELEMENT element-name EMPTY> example: <!ELEMENT br EMPTY> XML example: <br />
Obs: Vale observar que a sintaxe <br></br> também é válida, mas a sintaxe de marcação híbrida é muito mais elegante.
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.4.4. Elementos
42 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.4.4. Elementos
43 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.4.4. Elementos
44 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.4.4. Elementos
45 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.4.4. Elementos
46 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.4.4. Elementos
47 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.4.5. Atributos
48 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.4.5. Atributos
49 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.4.5. Atributos
50 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.4.5. Atributos
51 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.4.5. Atributos
52 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.4.5. Atributos
53 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.4.5. Atributos
54 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.4.6. Entidades
55 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5. XML Schema
56 XML
Existem algumas características do XML Schema que devem ser lembradas e nunca esquecidas:
! XML Schema também é um padrão W3C; ! XML Schema é um alternativa baseada em XML para o DTD; ! Um XML Schema, como o DTD, descreve a estrutura de um documento
XML; ! XML Schema também é conhecido como XML Schema Definition, o que é
faz com que sua extensão seja (XSD). ! XML Schema vem como sucessor do DTD, principalmente por:
o ser extensível; o ser mais rico e mais poderoso; o ser escrito em XML; o suportar tipos de dados; o suportar espaço de nomes (namespaces)
O nosso interesse não é dominar todo o XML Schema, pois o mesmo é muito
amplo. Nosso intuito é aprender a utilizá-lo visando os mais utilizados recursos da linguagem.
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.1. Declaração
57 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.2. O elemento Schema
58 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.2. O elemento Schema
59 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.3. Referenciando um Schema em um XML
60 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.3. Referenciando um Schema em um XML
61 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.4. Elementos XSD Simples
62 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.4. Elementos XSD Simples
63 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.4. Elementos XSD Simples
64 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.4. Elementos XSD Simples
65 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.4. Elementos XSD Simples
66 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.4. Elementos XSD Simples
67 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.4. Elementos XSD Simples
68 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.4. Elementos XSD Simples
69 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.4. Elementos XSD Simples
70 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.4. Elementos XSD Simples
71 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.4. Elementos XSD Simples
72 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.4. Elementos XSD Simples
73 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.4. Elementos XSD Simples
74 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.4. Elementos XSD Simples
75 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.4. Elementos XSD Simples
76 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.4. Elementos XSD Simples
77 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.4. Elementos XSD Simples
78 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.5. Elementos XSD Complexos
79 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.5. Elementos XSD Complexos
80 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.5. Elementos XSD Complexos
81 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.5. Elementos XSD Complexos
82 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.5. Elementos XSD Complexos
83 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.5. Elementos XSD Complexos
84 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.5. Elementos XSD Complexos
85 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.5. Elementos XSD Complexos
86 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.5. Elementos XSD Complexos
87 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.5. Elementos XSD Complexos
88 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.5. Elementos XSD Complexos
89 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.5. Elementos XSD Complexos
90 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.5. Elementos XSD Complexos
91 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.5. Elementos XSD Complexos
92 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.5. Elementos XSD Complexos
93 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.5. Elementos XSD Complexos
94 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.5. Elementos XSD Complexos
95 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.5. Elementos XSD Complexos
96 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.5. Elementos XSD Complexos
97 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.5. Elementos XSD Complexos
98 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.5. Elementos XSD Complexos
99 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.5. Elementos XSD Complexos
100 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
3.5.5. Elementos XSD Complexos
101 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
4. XSLT
102 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
4. XSLT
103 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
4. XSLT
104 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
4.1. XSLT e CSS
105 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
4.2. Características, objetivos e cenários aplicáveis
106 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
4.2. Características, objetivos e cenários aplicáveis
107 XML
! XSLT deve ser desenvolvida para ser livre de efeitos colaterais. Em outras palavras, XSLT é desenvolvida para que várias diferentes regras de estilo possam ser aplicadas simultaneamente. O maior impacto disto é que as variáveis não podem ser modificadas (static binding). Uma vez iniciada a variável, você não poderá alterar seu valor; se as variáveis pudessem ser alteradas, então o processamento de uma regra de estilo poderia gerar efeitos laterais, que impactaria outras regras de estilo.
XSLT é altamente influenciada pelo projeto de linguagens de programação funcional, tal como Lisp, Scheme e Haskell. Estas linguagens também possuem variáveis imutáveis como característica. Ao invés de definir regras como o XSLT, linguagens de programação funcional definem programas como uma série de funções, cada uma delas gera uma saída bem definida (livre de efeitos colaterais, com certeza) em resposta a uma entrada bem definida. O objetivo é executar as instruções de uma dada regra XSLT sem afetar a execução de qualquer outra regra. (TIDWELL, 2001, p. 03. Tradução nossa).
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
4.2. Características, objetivos e cenários aplicáveis
108 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
4.2. Características, objetivos e cenários aplicáveis
109 XML
Acima observamos várias características e objetivos do XSLT. Estas informações são altamente relevantes, pois nos faz pensar na seguinte questão: Onde poderemos utilizar esta tecnologia? E, ainda a partir das idéias do Tidwell, cito:
! Seu website necessita entregar informações para uma variedade de dispositivos, isto é, computadores, celulares, notebooks, palmtops, entre outros dispositivos. Seria excelente disponibilizar estas informações em documentos estruturados e, então transformá-los em qualquer formato que necessite.
! Você necessita trocar informações de uma de suas empresas com outras, mas você utiliza diferentes sistemas de banco de dados. Seria excelente se pudesse definir um XML comum de formato de dado e, então transformá-lo no arquivo de importação que necessita (SQLs, comma-separated values , entre outros formatos de importação de dados existentes).
! Informação XML de um outro sistema deve ter sua estrutura modificada para que seja armazenada no sistema local.
! Sistemas como J2EE, .NET, Natural Web pode responder a uma requisição de um usuário com uma página XML e, este XML ser convertido em HTML na máquina-cliente.
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
4.2. Características, objetivos e cenários aplicáveis
110 XML
Como pôde ser visto, existem vários cenários no qual a aplicação do XSLT é altamente apropriada. Estes vários cenários, na visão de Kay (2004) podem ser descritos simplesmente em dois cenários principais:
! Conversão de dados; ! Apresentação (publicação) de dados.
Em uma visão altamente superficial cujo propósito é expor o que será visto a
frente podemos definir como conversão de dados, toda situação em que você necessita de converter um XML em um outro XML, com as mesmas ou a grande maioria das informações em uma estrutura igual ou diferente para uma outra aplicação. Em contrapartida, podemos definir como apresentação de dados, toda situação em que você, a partir de um documento XML, necessite publicar seu conteúdo de uma forma mais apresentável, seja HTML, PDF ou até gráficos, músicas (MIDI), etc.
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
4.3. Prática do XSLT
111 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
4.3. Prática do XSLT
112 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
4.3. Prática do XSLT
113 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
4.3. Prática do XSLT
114 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
4.3. Prática do XSLT
115 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
4.3.1. Regras (Templates)
116 XML
Uma folha de estilos XSLT consiste em 1 ou mais grupo de regras chamados templates.
Cada template contém regras para serem aplicadas quando um nodo específico é encontrado.
! O elemento <xsl:template>
O elemento <xsl:template> é utilizado para construir templates.
• O atributo match é utilizado para associar um template com um elemento
XML. Este atributo também pode ser utilizado para definir um template para o documento XML inteiro. O valor deste atributo é uma expressão XPath (que não será abordada a fundo na disciplina), isto é, quando você disser match=”/”, indica o elemento raiz do documento.
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
4.3.1. Regras (Templates)
117 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
4.3.2. O elemento <xsl:value-of>
118 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
4.3.2. O elemento <xsl:value-of>
119 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
4.3.3. O elemento <xsl:for-each>
120 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
4.3.3. O elemento <xsl:for-each>
121 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
4.3.3. O elemento <xsl:for-each>
122 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
4.3.3. O elemento <xsl:for-each>
123 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
4.3.4. O elemento <xsl:sort>
124 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
4.3.4. O elemento <xsl:sort>
125 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
4.3.5. O elemento <xsl:if>
126 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
4.3.5. O elemento <xsl:if>
127 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
4.3.5. O elemento <xsl:if>
128 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
4.3.6. O elemento <xsl:choose>
129 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
4.3.6. O elemento <xsl:choose>
130 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
4.3.6. O elemento <xsl:choose>
131 XML
A saída do campo departamento será de acordo com o seu valor, caso nenhum bata, será o valor do próprio documento XML, observe a saída:
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
4.3.7. O elemento <xsl:apply-templates>
132 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
4.3.7. O elemento <xsl:apply-templates>
133 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
4.3.7. O elemento <xsl:apply-templates>
134 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
4.3.8. O elemento <xsl:output>
135 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
4.3.9. O elemento <xsl:variable>
136 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
4.3.9. O elemento <xsl:variable>
137 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
Bibliografia
§ ABOUT the World Wide Web Consortium, W3C. Disponível em: <http://www.w3.org/Consortium/>. Acesso em: 16 abr. 2006.
§ BOOLEAN, Wikipédia. Disponível em: <http://en.wikipedia.org/wiki/Boolean>. Acesso em: 11 jun. 2006.
§ BRAGANHOLO, Vanessa de Paula; HEUSER, Carlos A. XML Schema, RDF(S) e UML: uma comparação. Disponível em: <http://www.dcc.ufrj.br/~braganholo/ artigos/ideas2001.pdf >. Acesso em: 04 jun. 2006.
§ DUCHARME, Bob. XSLT. Rio de Janeiro: Ciência Moderna, 2002. § EXTENSIBLE Markup Language (XML), W3C. Disponível em: <http://
www.w3.org/XML/>. Acesso em: 21 fev. 2006. § FLAG: computing, Wikipédia. Disponível em: <http://en.wikipedia.org/ wiki/
Flag_(computing)>. Acesso em: 11 jun. 2006. § HTML, Wikipédia. Disponível em: <http://pt.wikipedia.org/wiki/HTML/>. Acesso
em: 16 abr. 2006. § HYPERTEXT Markup Language (HTML) Home Page, W3C. Disponível em:
<http://www.w3.org/MarkUp/>. Acesso em: 16 abr. 2006. § INTRODUCTION TO DTD, W3C. Disponível em: <http://www.w3schools.com/
dtd/dtd_intro.asp>. Acesso em: 27 maio 2006.
138 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
Bibliografia
§ INTRODUCTION TO XML SCHEMA, W3C. Disponível em: <http://www.w3schools.com/schema/schema_intro.asp>. Acesso em: 21 maio 2006.
§ KAY, Michael. XSLT programmer’s reference. Birmingham: Wrox Press, 2000. § KAY, Michael. XSLT 2.0 programmer’s reference. 3 ed. Indianapolis: Wiley
Publishing, 2004. § MACORATTI, José Carlos. Conceitos básicos de modelagem de dados.
Disponível em: <http://www.macoratti.net/cbmd1.htm>. Acesso em: 27 maio 2006.
§ MYER, Tom. A really, really, really good introduction to XML. Disponível em: <http://www.sitepoint.com/article/really-good-introduction-xml>. Acesso em: 21 maio 2006.
§ NAMESP ACE: Computer science. Wikipédia. Disponível em: <http://en.wikipedia.org/wiki/Namespace_(computer_science)#XML>. Acesso em: 27 maio 2006.
§ REFSNES, Jan Egil. XML DTD: an introduction to XML document type definitions. Disponível em: <http://www.xmlfiles.com/dtd/default.asp>. Acesso em: 21 maio 2006.
§ SERIALIZATION, Wikipédia. Disponível em: <http://en.wikipedia.org/wiki/ Serialization>. Acesso em: 10 jun. 2006.
139 XML
Ricardo Terra (rterrabh [at] gmail.com) Dezembro, 2009
Bibliografia
§ SISTEMA DE GERENCIAMENTO de banco de dados, Wikipédia. Disponível em: <http://pt.wikipedia.org/wiki/SGBD>. Acesso em: 11 jun. 2006.
§ TIDWELL, Doug. XSLT. Sebastopol: O'Reilly Media, 2001. § W3C, Wikipédia. Disponível em: <http://pt.wikipedia.org/wiki/W3C/>. Acesso em:
16 abr. 2006. § XML, Wikipédia. Disponível em: <http://pt.wikipedia.org/wiki/XML/>. Acesso em:
16 abr. 2006. § XML Path Language (XPath) 2.0, W3C, 03 nov. 2005. Disponível em: <http://
www.w3.org/TR/xpath20/>. Acesso em: 05 mar. 2006. § XML Schema Part 0: Primer Second Edition, W3C, 28 out. 2004. Disponível em:
<http://www.w3.org/TR/xmlschema-0/>. Acesso em: 21 fev. 2006. § XML TO XML WITH XSLT. Disponível em: <http://www.topxml.com/xslt
Stylesheets/xslt_XML_to_XML.asp>. Acesso em: 04 jun. 2006. § XPATH Tutorial, W3Schools. Disponível em: <http://www.macoratti.net/
vb_xpath.htm>. Acesso em: 14 mar. 2006. § XSL Transformations (XSLT) Version 2.0, W3C, 03 nov. 2005. Disponível em:
<http://www.w3.org/TR/xslt20/>. Acesso em: 21 fev. 2006.
140 XML