• Nenhum resultado encontrado

Introdução ao XML. Extensible Markup Language

N/A
N/A
Protected

Academic year: 2021

Share "Introdução ao XML. Extensible Markup Language"

Copied!
33
0
0

Texto

(1)

Introdução ao XML

(2)

Tutorial - XML

XML: Extensible Markup Language

Uma linguagem de marcas na estruturação, no armazenamento e no transporte de dados na Web

Gere os dados numa estrutura tipo árvore . Só uma raiz

Descrição dos dados em formato texto. Simples, permite que seja utilizado a través de diferentes plataformas de software e hardware

Simples de perceber e de ler. Para o computador e as pessoas Excelente para armazenamento de dados no longo prazo

Utiliza um conjunto de módulos capazes de responder as diferentes tipos de demandas dos utilizadores

(3)

3

Tutorial - XML

Apoiado em diferentes módulos:

XSLT: Linguagem extensível de Folhas de Estilo. Mostra como deve ser estruturado o conteúdo, como desenhar o conteúdo de origem, como deveria ser paginado para apresentações

(Extensible Stylesheet Language Transformation). exemplo

Xlink: Linguagem de ligação XML. Permite inserir elementos em documentos XML para criar ligações entre recursos XML

Xpath: Linguagem de rotas XML. Permite o acesso a partes dum documento XML.

Xpointer: Linguagem de redireccionamento Permite o acesso a estrutura interna dum documento XML: elementos, atributos, conteúdos

XQL: Linguagem de pesquisa XML. Facilita a extracção de dados desde documentos XML.

(4)

Tutorial XML

Estrutura

DTD Linguagem para definição do esquema.Especificação do XML 1.0

Esquema

XML Definição da linguagem do esquema do documento

Selecção XPath Linguagem para indicar caminho dum documento XML na sua estrutura de árvore para seleccionar elementos e atributos

Transformação XSLT Especifica o mecanismo para transformar um doc. XML num documento XML de estrutura diferente

Mostrar (display)

CSS Uma especificação do formato do desenho de dados no XML e HTML

XSL-FO Linguagem para descrição do desenho dum doc XML

(5)

5

Tutorial - XML

Não confundir XML com HTML = Hyper Text Markup Language Ambas duas, XML e HTML utilizam tags, (marcas), mais tem diferenças:

HTML desenhada para mostrar dados.

XML, desenhada para armazenar e transferir dados

As marcas do HTML são predefinidas (<p> <tr> <href >

As marcas em XML as define você. A única restrição é respeitar o aninhamento das marcas

<nome>

<primeiro>Ana Sofia</primeiro> <apelido>Guimarães</apelido> </nome>

Cada peça individual de dados colocada entre as marcas

Antes de aprender XML era conveniente primeiro dar uma vista de olhos ao HTML e ao javascript

(6)

Tutorial - XML

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE tuplo-produto SYSTEM "file:///c:/xml/edit_produto.dtd"> <tuplo-pruduto>

<produto id=”HP-G6-4000”>

<nome> Laptop HP Pavillion g6</nome>

<categoria> computador portatil</categoria> marca> Hewlett-Packard

<preço> 538,50</preço>

<link> http://www.hewlett-packard.com</link> </marca>

<caracteristicas>

– processador Intel core i5 dual, 2.6Ghz, 4 Gb RAM, placa gráfica super boa, etc

– </caracteristicas> </produto>

(7)

7

Documentos bem formados

Bem formados (well formed): documentos que cumprem todas as definições básicas de formato. Assim podem ser analisados por qualquer analisado sintáctico (parser) que cumpra com a norma Documentos devem seguir:

Estrutura estritamente hierárquica das etiquetas (tags) delimitadoras.

Etiquetas devem estar correctamente aninhadas

Os elementos com conteúdos devem estar correctamente fechados

Só um elemento raiz a partir do qual todos os outros são parte. (“tuplo_produto” no exemplo)

(8)

Documentos bem formados

Os valores de atributos devem estar entre aspas simples o

duplas.

<nome id=”207875342”>Maria José</nome>

XML é sensível a maiúsculas e minúsculas.

Existem caracteres "espaços em branco" (espaços,

tabulações, saltos de linha, "returns") que os

processadores XML tratam conforme o parser XML.

É preciso atribuir nomes as estruturas, tipos de elementos,

entidades, elementos particulares, etc.

As construções etiquetas, referencias de entidade e

declarações se chamam marcas; são parte do documento.

O resto do documento entre marcas corresponde aos dados

(9)

9

Partes dum documento XML

Duas partes: prólogo e corpo do documento

Prólogo:

(opcional)

Uma declaração indicando que se trata de um docto. XML A versão do XML

Uma declaração do tipo de documento.

Relaciona o documento com a sua DTD (document type definition) Um ou mais comentários e Instruções de processamento

Ex.: <?xml version="1.0" encoding="ISO-8859-1"?>

A DTD especifica o tipo de documento, as restrições da estrutura e a sintaxe do documento

(10)

Partes dum documento XML

Corpo: <obrigatótio. Não é opcional. Deve pelo menos conter um elemento raiz

<?xml version="1.0" encoding="ISO-8859-1"?> <livro>

<titulo>O livro das Mentiras</titulo> <capitulo>

<ctitulo>Capitulo III: a mentira sempre se descobre </ctitulo> <seção>

<stitulo>Mentiras e boatos</stitulo> </seção>

</capitulo> </livro>

(11)

11

Partes dum documento XML

Marcas (tags) <produto> ...</produto>

Identificadas por qualquer nome que o programador quiser lhe dar

Elementos produto

Os elementos XML podm ter conteúdo (outros elementos, caracteres ou ambois dois).ou bem estar vazios

Atributos (um par nome/valor)

Os elementos podem ter atributos, ou seja, as características dos elementos dum documento. Devem ser inseridos entre aspas. Estaõ entre as tags do elemento Ex.: o elemento «barco» tem um atributo «nome» e um atributo «matricula», con

valores "furação" e «C-049»

<barco nome= "furação" matricula="C-049"> Que lindo barco de Faro </barco> Ex.: O elemento imagem tem dois atributos, fonte e autor:

(12)

Partes dum documento XML

Entidades predefinidas

Entidades para representar caracteres especiais, de maneira não serem interpretados sintacticamente pelo parser XML.

As entidades podem ser: Internas o externas

Analizadas o no analizadas Generais ou parametrizadas

&lt < Menor que

&gt > Maior que

&amp & comercial

(13)

13

Partes de um documento XML

Secção CDATA

Uma construção para especificar dados que não serão interpretados Como alias são todos os dados no interior de marcas

Não confundir com (#PCDATA) que serve para os elementos. Permite que caracteres especiais não rompam a estrutura. CDATA (unparsed character data)

A secção CDATA começa com: "<![CDATA[" e termina com: "]]>": <![CDATA[conteúdo especial: \n áéíóúñ&]]>

Comentários

Serão ignorados pelo processador. <!--- Un comentario --->

(14)

Partes de um documento XML

<comparação> <![CDATA[ function compara(a,b,c) { if (a > b && b > c) then { return 1; } else { return 0; } } ]]> </comparação>

(15)

15

Partes de um documento XML

Tipos de atributos

Atributos CDATA e NMTOKEN Atributos enumerados y notações

(16)

Partes de um documento XML

PCDATA (parsed character data)

Em geral XML faz a interpretação de todos os caracteres do texto No "parser", o texto entre as marcas (tags) é também processado:

<mensagem>este texto será processado pelo parser</mensagem>

Isto é feito porque uns elementos podem conter outros elementos Repare: elemento <pessoa> contem dois outros elementos

(nome e apelido):

<pessoa>

<nome>José</nome>

<apelido>Saramago</apelido> </pessoa>

(17)

17

Exemplos XML

Em XML você define as marcas

<?xml version="1.0" encoding="ISO-8859-1"?> <nota>

<para>Angelina Jolie</para> <de>Patricio</de>

<cabecalho>Lamento imenso!</cabecalho>

<corpo>Não consigo estar contigo hoje</corpo> </nota>

Validade: acima se indica o standard seguido para ser considerado um documento bem formado. Só que isso não chega!!

(18)

Tutorial - XML

Tal como no caso das BD, um documento XML tem uma espécie de descritor dos seus dados.

Isto pode ser feito com uma DTD ou com um XML schema DTD: DATA TRANSFER DEFINITION

Uma estrutura que define os dados a serem manipulados. Uma metadata: Definição dos dados sobre os dados

Na DTD se definem os tipos de elementos, atributos e entidades permitidas. Pode ser interna (no documento) ou externa (ficheiro) Os documentos XML que se ajustam a sua DTD são denominados

válidos

(19)

19

Tutorial - XML

Eis a A DTD do documento tuplo-produto anterior:

<!ELEMENT tuplo-produto (produto, nome, categoria, marca, caracteristicas)* >

<!ELEMENT produto(nome,categoria,marca,caracteristicas) <!ELEMENT nome (#PCDATA)>

<!ELEMENT categoria (#PCDATA)>

<!ELEMENT marca (preco, link)> <!--elemento complexo --> <!ELEMENT preco (#PCDATA)>

<!ELEMENT link (#PCDATA)>

<!ELEMENT caracteristicas (#PCDATA)>

Na DTD se definem os tipos de elementos, atributos e entidades permitidas. Pode ser interna (no documento) ou externa (ficheiro) Os documentos XML que se ajustam a sua DTD são denominados

(20)

XML - DTD

Cada documento que esta conforme o seu DTD tem só 1

elemento raiz: tuplo-produto

A raiz contem zero ou mais elementos produto

DOCTYPE: indica uma DTD externa. Onde fica o ficheiro que

contem as suas definições

Qualquer documento que pretenda lidar com tuplo-produto vai

indicar isto no inicio do documento como vimos

No caso DTD interna, a DTD precede o elemento raiz

Cada elemento que contem #PCDATA vai conter texto

Cada tuplo-produto contem exactamente 1 atributo

(21)

21

XML

O DTD tem limitações:

Todos os dados definidos são de tipo texto

As restrições existem ao nivel dos elementos, mais ao nivel dos

atributos para os quais praticamente não se podem definir

Não existe maneira de definir algo semelhante a chaves

primárias, assim como chaves compostas

Não utilizam sintaxe XML, (eles próprios não são documentos

XML). Portanto não podem ser processados pelo parser do XML

Existe algum apoio a restrições de unicidade e referenciais

(ver mais enfrente tipos de atributos ID e IDREF

Os elementos devem aparecer numa dada sequência, mesmo

que em termos relacionais isto não tenha significado especial

(22)

Transformação do XML em XSL

Extensible Stylesheet Language (versão 1.1)

Uma linguagem avanzada para criar folhas de estilo

Recebe o input em XML e uma folha de estilo XSL e produz o output a apresentação do doc XML

Transforma, ordena e filtra dados XML, formatando baseado nos seus valores indicando de que modo o documento XML deveria ser

apresentado

O processo tem duas fases: Tree transformation:

Cria uma árvore e logo Transformation

(23)

23

Transformação do XML em XSL

Extensible Stylesheet Language (versão 1.1)

Recebe o input em XML e uma folha de estilo XSL e produz o output a apresentação do doc XML.

Exemplo: Tínhamos o seguinte documento XML (http://www.w3.org/TR/xsl/)

<?xml version="1.0" encoding="ISO-8859-1"?> <livro>

<titulo>O livro das Mentiras</titulo> <capitulo>

<ctitulo>Capitulo III: a mentira sempre se descobre </ctitulo> <seção> <stitulo>Mentiras e boatos</stitulo></seção>

</capitulo> </livro>

(24)

XML – transformação XSL

O cabeçalho do novo documento:

<!-- Transforma o documento XML anterior nun documento XHTML --> <xsl:stylesheet version="1.0" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:strip-space elements="livro capitulo titulo"/> <xsl:output method="xml" indent="yes" encoding="iso-8859-1" doctype-public="-//W3C//DTD XHTML 1.1//EN" doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"/>

(25)

25

XML – transformação XSL

<!-- Utiliza o título do livro como título do documento XHTML --> <xsl:template match="livro"> <html> <head> <title> <xsl:value-of select="titulo"/> </title> </head> <body> <xsl:apply-templates/> </body> </html> </xsl:template>

<!-- Utiliza o titulo do livro também com nível H1 --> <xsl:template match="livro/titulo">

<h1>

<xsl:apply-templates/> </h1>

(26)

XML – transformação XSL

<!-- Os títulos dos capítulos aparecem como H2 – > <xsl:template match="capitulo/titulo">

<h2>

<xsl:apply-templates/> </h2>

</xsl:template>

<!-- Os títulos das secções aparecerão como H3 --> <xsl:template match="seccion/titulo"> <h3> <xsl:apply-templates/> </h3> </xsl:template> </xsl:stylesheet>

(27)

27

XML – Xpath, XLink

Exemplo de código Xpath:

<!-- Toma todos os elementos titulo no interior do elemento capítulo e os elementos autor ao interior do elemento capitulo →

/doc/capitulo/titulo | /doc/capitulo/autor Exemplo de código Xlink:

<my:crossReference xlink:href="libro.xml"

xlink:role="http://www.example.com/linkprops/listalibros" xlink:title="Lista de libros">

Lista actual de libros </my:crossReference>

(28)

XML – Xpointer, Xquery

Exemplo de código Xpointer: (http://www.w3.org/TR/xptr/) documento.xml#xpointer(

/libro/capitulo[@public])xpointer(/livro/capitulo[@num="1"]) Exemplo de código de Xquery: (http://www.w3.org/XML/Query/)

<!-- Livros escritos por Mia Counto após ano 2000 --> <biblioteca>

{

for $b in doc("http://livro.example.com/bib.xml")/bib/livro where $b/autor = "Mia Counto" and $b/@anio > 2000 return

<livro ano="{ $b/@ano }"> { $b/titulo }

</livro> }

(29)

29

XML Schema: XSD

Descreve a estrutura dum documento XML.

Também conhecida como XML Schema Definition: XSD Recomendação w3C desde 2001

Define os elementos que podem aparecer num documento Define os atributos que podem aparecer no documento

Define quais elementos são elementos filhos de outros Define a ordem dos elementos filhos

Define se um elemento está vazio ou pode incluir texto Define tipos de dados para elementos e atributos

Define valores fixos ou por defeito para elementos e atributos XSD é o sucessor do DTD

Manual de referencia:

(30)

XML Schema: XSD

.<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="memorando"> <xs:complexType> <xs:sequence>

<xs:element name="para" type="xs:string"/> <xs:element name="de" type="xs:string"/> <xs:element name="titulo" type="xs:string"/> <xs: element name=”data” type=”xs:date/”> <xs: element name=”numero” type=”int/>

<xs:element name="texto" type="xs:string"/> </xs:sequence>

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

(31)

31

XML e HTML: páginas

<html> <body> <script>

if (window.XMLHttpRequest)

{// codigo para IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); }

else {// código para IE6, IE5

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.open("GET","cd_catalog.xml",false); xmlhttp.send(); xmlDoc=xmlhttp.responseXML; document.write("<table border='1'>"); var x=xmlDoc.getElementsByTagName("CD"); for (i=0;i<x.length;i++) { document.write("<tr><td>"); document.write(x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue); document.write("</td><td>"); document.write(x[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue); document.write("</td></tr>"); } document.write("</table>"); </script> </body> </html>

Criarmos variavel para um objecto

XMLHttpRequest(), conforme browser. Ler ficheiro “cd_catalog.xml” carregando na variável XMLHttpRequest

utilizando o GET e carregamos num array “x” todo o ficheiro onde o tuplo é a marca <CD>

Criamos uma tabela <table border..> E fazemos um ciclo para mostrar

(“document.write”) um a um os “tuplos” utilizando as filas da

tabela <tr> e células <td> Estão no formato XML

(32)

XML e HTML: mostrar páginas

O resultado da leitura do ficheiro dos CD e a sua formatação

numa tabela HTML, da o resultado que pode ser visto

aqui:

http://www.w3schools.com/xml/tryit.asp?filename=tryxml_di

splay_table

(33)

33

XML

Fim do modulo

Fim da cadeira

Referências

Documentos relacionados

Técio Lins e Silva ressal- tou, também, que “no âm- bito do direito penal, está havendo um enorme desres- peito aos direitos fundamen- tais, como a ampla defesa e o contraditório,

Os indivíduos com insuficiência hepática grave (Child-Pugh C) apresentam uma capacidade reduzida para eliminar o lenvatinibe conforme demonstrado pelos aumentos de AUC

Avaliar os parâmetros ultrassonográficos: razão hepatorrenal, índice venoso portal e padrão de onda de velocidade de fluxo da veia hepática direita na gradação da

Henrique, rotunda em frente p/ Baguim do Monte, cruzamento à esq.. p/ Rua Fernão de Magalhães, rotunda

Cada vez mais é necessário alertar para a prevenção do vírus da gripe, principalmente no que toca a grupos de risco, onde sérias complicações podem ocorrer caso não

The global prevalence of high risk for OSAS, estimated via BQ, in the population cared for by the FDP was 42.4%. However, because of the losses, that prevalence might have

A hipótese 13 foi rejeitada, pois, observa-se que a independência entre os fatores gênero e recompra com vendedores que venderam produto comprado por impulso

Se o caso suspeito ou confirmado se referir a aluno ou professor de uma turma específica, a necessidade ou não de suspensão das aulas presenciais na referida turma