eXtensible Markup Language
<
XML/
>
Lirisnei Gomes de Sousa Jair C Leite
[email protected] [email protected]
XML
• Evolução • O que é XML? • Aplicações • Sintaxe • Linguagens auxiliares • Conclusões • O Futuro (proposto)Evolução
• SGML (Década de 80) • HTML (93-4) • XML (1998)• Linguagens baseadas em XML para fins específicos (1998-...)
O que é
XML
?
• Uma linguagem de marcação para a descrição de dados, imagens e etc., onde o
usuário é quem define a sua sintaxe e
semântica
– As tags definem a função do conteúdo
XML
Definição do W3C“The Extensible Markup Language (XML) is a subset of SGML. Its goal is to enable generic SGML to be served, received, and processed on the Web in the way that is now possible with HTML. XML has been designed for ease of implementation and for interoperability with both SGML and HTML”
XML vs. HTML
• HTML: conjunto e semântica de tags pré-definidos
– <H1>, <IMG>,...
• XML: meta-linguagem para descrever linguagens de marcação.
– XML provê recursos para para definir tags e as relações estruturais entre elas.
XML vs. SGML
• SGML é o padrão OSI para documentação estruturada
• XML é um “perfil de aplicação” de SGML • XML é muito mais restrito que SGML • SGML permite estruturas arbitrárias, mas a
dificuldade de implementação é muito grande para os navegadores interpretarem
Considerações em XML
• O número de recursos opcionais em XML deve ser mínimo, idealmente zero
– Ambigüidades prejudicam
• O projeto do padrão XML deve ser rápido • O projeto de XML deve ser formal e
conciso
• Documentos XML devem ser simples de criar
XML
• Evolução • O que é XML? • Aplicações • Sintaxe • Linguagens auxiliares • Conclusões • O Futuro (proposto)Aplicações
• Descrição de interface– Mais simples, flexível e portável que HTML
<menuBar>
<menu menuCaption="Arquivo">
<menuOption caption="Novo" onchose="newFile();"/> <menuOption caption="Abrir" onchose="openFile();" /> <menuOption caption="Salvar" onchose="ola.show();"/> <menuOption caption="Fechar" onchose="close();"/> </menu> ... </menuBar>
Aplicações
• Publicação de conteúdo XML HTML www.jornal.com.br (informações diversas) www.informática.com.br Informações específicasAplicações
• Descrição de imagens (SVG)Código da figura SVG
<svg width="7.5cm" height="5cn" viewBox="0 0 200 120"> <title>Example filters01-0.svg - source graphic with no filters</title> <desc>Shows what filters01.svg looks like without any filters.</desc> <rect x="1" y="1" width="198" height="118" style="fill:#888888; stroke:blue"/> <g>
<g>
<path style="fill:none; stroke:#D90000; stroke-width:10" d="M50,90 C0,90 0,30 50,30 L150,30 C200,30 200,90 150,90 z"/>
<path style="fill:#D90000" d="M60,80 C30,80 30,40 60,40 L140,40 C170,40 170,80 140,80 z"/>
<g style="fill:#FFFFFF; stroke:black; font-size:45; font-family:Verdana"> <text x="52" y="76">SVG</text> </g> </g> </g> </svg>
APLICAÇÕES
• Prover interoperabilidade entre diferentes aplicações
XML
• Evolução • O que é XML? • Aplicações • Sintaxe • Linguagens auxiliares • Conclusões • O Futuro (proposto)Exemplo
<?xml version="1.0"?> <pedido data="1999-10-20"> <enderecoDeEntrega country="BR"> <nome>Felipe Camarão</nome> ... </enderecoDeEntrega > <items> <item codigo="872-AA"> <nomeDoProducto>Monitor 15</nomeDoProducto> ... </item> </items> </pedido> INÍCIO DE UM DOCUMENTO XML ELEMENTO RAIZ (único)Marcadores XML
• Elementos • Referências a entidades • Comentários • Instruções de Processamento • Seções Formatadas• Declarações de Tipos de Documentos
Elementos
• Marcação mais comum
• Delimitados por <e >
• Exemplos:
– <element> bla bla bla </element> – <element/>
Atributos
• Pares nome-valor que caracterizam o elemento
• Em XML, todos os atributos devem vir entre aspas.
• Exemplo:
– <div class=“preface”>
Referências a Entidades
• Utilizadas para representar caracteres especiais:
– < = “ – > = ” – & = &
– Caracteres Unicode: ℞ ou ℞
Comentários
• Igual aos comentários em HTML • Não são processados pelo interpretador
XML • Início: <!--• Fim: -->
Documento XML
• Formado por um ou mais arquivos • Documento Bem-formado
– NAMESPACE • Documento Válido
– Linguagens para especificação
• DTD • XML SCHEMA
Documento bem-formado
• Uma linguagem estabelece regrasas quais
documentos devem respeitar
• Isto é, documentos XML devem ser bem
formados
Documento bem-formado
• Elementos de um documento podem incluir outros elementos formando uma hierarquia que não pode ser desrespeitada
<i> <b> OK </i> </b>
Documento bem-formado
• Todo documento XML deve iniciar com uma instrução de processamento indicando a versão e o conjunto de caracteres usados:
<?xml version="1.0" encoding="ISO-8859-1" ?> • conjuntos de caracteres – Unicode – ISO-8859-1 – UTF-8 – UTF-16
Documento válido
• Documento de acordo com as especificações:
– DTD ou – XML Schema
NAMESPACE
Conflito de Nomes
• Desde que nomes de elementos em XML não são fixados, freqüentemente, há um conflito de nomes quando dois diferentes documentos usam os mesmos nomes descrevendo dois diferentes tipos de elementos
EXEMPLO 1
• Este documento tem informações em uma tabela <table> <tr> <td>Morango</td> <td>Banana</td> </tr> </table>
EXEMPLO 2
• Este documento tem informações sobre uma mesa
<table>
<name>African Coffee Table</name> <width>80</width>
<length>120</length> </table>
Conflito
• Se estes dois documentos XML forem colocados juntos num mesmo documento, existirá um conflito de nomes porque em ambos os documentos existe o elemento <table> com definição e conteúdo diferente
Resolvendo com Prefixo
• Este documento tem informações em uma tabela <h:table> <h:tr> <h:td>Morango</td> <h:td>Banana</td> </h:tr> </h:table>
Resolvendo com Prefixo
• Este documento tem informações sobre uma mesa
<f:table xmlns:f="http://www.w3schools.com/furniture > <f:name>African Coffee Table</f:name>
<f:width>80</f:width> <f:length>120</f:length> </f:table>
Atributo Namespace
• Quando um namespace é definido no início da tag como um elemento, todos os elementos filhos com o mesmo prefixo são associados com o mesmo namespace.
• O endereço usado para identificar o namespace não é o usado pelo analisador sintático para obter informação. O único propósito é dar ao namespace um único nome. Contudo, freqüentemente usa-se o namespace como ponteiro para uma página Web contendo informação sobre o namespace.
Prática
• Desenvolver um arquivo (ex1.) XML com a seguinte estrutura sintática
universidade departamento turma professor aluno disciplina nome
nome, codigo, creditos Numero, horario
nome, fone nome, media, fone, cor
didático
XML
• Evolução • O que é XML? • Aplicações • Sintaxe • Linguagens auxiliares • Conclusões • O Futuro (proposto) definição sintática e aplicação de estilosComo provê
interoperabilidade entre
diferentes aplicações, sendo
que a sintaxe é definida de
“qualquer forma”?
A especificação sintática
ajuda
a resolver este problema
DTD (Data Type Definition)
<?xml version="1.0" ?><!DOCTYPE pedido [
<!ELEMENT pedido (enderecoDeEntrega, Itens)> <!ELEMENT enderecoDeEntrega (nome, rua, cidade,
estado, cep)>
<!ELEMENT itens (item)+>
<!ELEMENT Item(nomeDoProduto, quantidade, preco)> <!ELEMENT nodeDoProduto (#PCDATA)>
<!ATTLIST cliente ID #REQUIRED > <!ATTLIST codigo IDREF #REQUIRED > ]>
Ordem de ocorrência de filhos
• Filhos com ordem pré-definida
– <!ELEMENT spec (front, body, back?)>
• Filhos com ordem aleatória
– <!ELEMENT p
(#PCDATA|a|ul|b|i|em)*>
Número da ocorrência dos filhos
• * - zero ou mais ocorrências • + - uma ou mais ocorrências • ? - zero ou uma ocorrência
Atributos
<!AT T LI S T termdef
id ID #REQUIRED name CDATA #IMPLIED>
nome tipo uso
Prática (ex1.dtd)
• Desenvolver um DTD para o arquivo XML gerado anteriormente
– Especificar todos os possíveis filhos de cada elemento e a ocorrência desses filhos – Especificar todos os atributos dos de cada
Prática (ex1.dtd)
<?xml version="1.0" ?> <!DOCTYPE universidade [
<!ELEMENT universidade (departamento)+> <!ELEMENT departamento (disciplina)+> <!ELEMENT disciplina (turma)+> <!ELEMENT turma (professor,aluno)+> <!ELEMENT professor (nome,fone)> ...
...
<!ELEMENT aluno (nome,fone,media,cor)> <!ELEMENT fone (#PCDATA)>
<!ATTLIST departamento nome CDATA #REQUIRED > <!ATTLIST disciplina nome CDATA #REQUIRED
creditos CDATA #REQUIRED codigo CDATA #REQUIRED >
<!ATTLIST turma numero CDATA #REQUIRED horario CDATA #REQUIRED > ]>
XML Schema
O que faz XML Schema?
• Substitui o DTD• O propósito de um XML Schema é definir a construção de blocos válidos como um DTD. • define elementos que aparecerão no documento • define atributos que poderão aparecer em um
documento
• define quais elementos terão elementos filhos
O que faz XML Schema?
• define qual a ordem dos elementos filhos • define o número de elementos filhos • define se um elemento é vazio ou pode
incluir texto.
• define tipos de dados para elementos e atributos
• define padrões e fixa valores para elementos e atributos
+ benefícios
• XML Schemas são extensíveis para futuras adições
• XML Schemas são mais ricos e mais úteis que DTD
• XML Schemas são escritos em XML • XML Schemas suportam tipos de dados • XML Schemas suportam namespaces
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="poema">
<xs:complexType> <xs:sequence>
<xs:element name="titulo" type="xs:string"/> <xs:element name="autor" type="xs:string"/> <xs:element name="data" type="xs:string"/> <xs:element name="corpo" type="Tcorpo"/> </xs:sequence> <xs:attribute name="tipo" type="xs:string" use=“optional" default="soneto"/> </xs:complexType> </xs:element> ... </xs:schema>
Exemplo: O Poema
<xs:complexType name="Tquadra"> <xs:sequence><xs:element name="verso" type="Tverso"/> <xs:element name="verso" type="Tverso"/> <xs:element name="verso" type="Tverso"/> <xs:element name="verso" type="Tverso"/> </xs:sequence>
</xs:complexType>
<xs:complexType name="Tterno"> <xs:sequence>
<xs:element name="verso" type="Tverso"/> <xs:element name="verso" type="Tverso"/> <xs:element name="verso" type="Tverso"/> </xs:sequence>
</xs:complexType>
<xs:complexType name="Tcorpo"> <xs:sequence>
<xs:element name="quadra" type="Tquadra"/> <xs:element name="quadra" type="Tquadra"/> <xs:element name="terno" type="Tterno"/> <xs:element name="terno" type="Tterno"/> </xs:sequence>
</xs:complexType>
<xs:complexType name="Tverso" mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="nome" type="xs:string"/> <xs:element name="lugar" type="xs:string"/> </xs:choice> </xs:complexType>
Tipos Primitivos
• String • Float • Decimal • Date • ...<xs:element name="nome" type="xs:string"/> <xs:element name="lugar" type="xs:string"/>
Tipos Derivados
• Derivam dos tipos primitivos • integer (decimal), long (integer), ... • Por restrição
• Por extensão
Tipos Simple e Complex
• Os tipos de dados em XML Schema ou são “simple” ou“complex”.
• Um tipo “simple” é um dos tipos básicos: string, date, float, double, timeDuration, ...
• Um tipo “simple” restringe o texto que pode aparecer no valor de um atributo ou no conteúdo dum elemento textual. • Um elemento que tenha atributos ou elementos filho é do
tipo “complex”.
• Um tipo “complex” restringe o conteúdo de um elemento relativamente aos atributos e elementos filho que pode ter.
Exemplo: complexType
<xs:complexType name="Tquadra"> <xs:sequence>
<xs:element name="verso" type="Tverso"/> <xs:element name="verso" type="Tverso"/> <xs:element name="verso" type="Tverso"/> <xs:element name="verso" type="Tverso"/> </xs:sequence>
</xs:complexType>
Tverso é uma referência a um “complex type” definido
algures no schema
Tquadra é um complex type com nome (por oposição a
um anónimo)
Escopo dos elemento
• Um elemento pode ser declarado como
global ou como local.
• Um elemento global é declarado como sendo filho de <schema>.
• Um elemento local é declarado sendo filho do elemento que lhe faria referência. • Os elementos globais podem ser
reutilizados por referência.
Elementos globais
<xs:element name="poema"> <xs:complexType>
<xs:sequence>
<xs:element name="titulo" type="xs:string"/> <xs:element name="autor" type="xs:string"/> <xs:element name="data" type="xs:string"/> <xs:element name="corpo">
<xs:complexType> <xs:sequence>
<xs:element ref = "Quadra"/> <xs:element ref = "Quadra"/> <xs:element ref = "Terno"/> <xs:element ref = "Terno"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> <?xml version=“1.0” encoding=“iso-8859-1”?> <quadra>
<verso>Olha,<nome>Daisy</nome>: quando eu morrer tu hás-de</verso> <verso>dizer aos meus amigos aí de <nome>Londres</nome>,</verso> <verso>embora não o sintas, que tu escondes</verso>
<verso>a grande dor da minha morte. Irás de</verso>
</quadra> Instância Válida
<xs:element name=“quadra”> <xs:complexType> <xs:sequence> <xs:element ref="verso"/> <xs:element ref="verso"/> <xs:element ref="verso"/> <xs:element ref="verso"/> </xs:sequence> </xs:complexType> </xs:element>
Cardinalidade
<xs:complexType name="Tquadra"> <xs:sequence>
<xs:elementname="verso" type="Tverso“ minOccurs="4"maxOccurs="4"/> </xs:sequence>
</xs:complexType>
A cardinalidade pode ser restringida recorrendo aos atributos: minOccurse maxOccurs
Valores para elementos
<xs:element name=“email" type=“xs:string“default=“[email protected]"/> Valor por omissão
<xs:elementname=“supervisor" type=“xs:string“ fixed=“José Carlos Ramalho"/> Valor fixo
Atributos
• Os atributos declaram-se recorrendo ao elemento “<attribute>”
• Um atributo é sempre do tipo “simple”
<xs:attribute name="tipo" type="xs:string" use=“optional" default="soneto"/> use: (optional | default | required | fixed )
Restrição de tipos primitivos
<xs:simpleType name=“dia“ base = “xs:integer”><xs:minInclusive value=“1”/> <xs:maxInclusive value=“31”/> </xs:simpleType>
<xs:simpleTypename=“telefone“ base = “xs:integer”> <xs:pattern value=“253-\d{6}”/> </xs:simpleType> Restrição de domínio Restrição de formato
Restrições ou facetas
• minInclusive • maxInclusive • maxExclusive • Length • minLength • maxLength • Pattern • Enumeration • minExclusive • Precision • Scale • Encoding • Period • DurationRestrição por enumeração
<xs:simpleType name=“diaSemana“ base = “xs:string”> <xs:enumeration value=“Domingo”/> <xs:enumeration value=“Segunda”/> <xs:enumeration value=“Terça”/> <xs:enumeration value=“Quarta”/> <xs:enumeration value=“Quinta”/> <xs:enumeration value=“Sexta”/> <xs:enumeration value=“Sábado”/> </xs:simpleType>
Elementos vazios
<xs:element name="ref"><xs:complexType>
<xs:attributename="destino" type="xs:string" use="required"/> </xs:complexType>
</xs:element>
<xs:elementname="imagem"> <xs:complexType>
<xs:attributename="path"type="xs:string" use="required"/>
<xs:attributename="formato"type="xs:string" use="optional"/>
</xs:complexType> </xs:element>
Formato de arquivo
• Os arquivos contendo descrições XML
Prática
• Desenvolver um XML Schema para o XML da universidade desenvolvido
anteriormente, este substituirá o DTD. – Descrever os elementos
– Descrever os atributos dos elementos
globais locais
aplicar restições e formatos
Iniciando o XML Schema
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSch ema" elementFormDefault="qualified"> <!– Corpo do documento--> </xsd:schema>Elemento universidade
<xsd:element name="universidade"> <xsd:complexType> <xsd:sequence><xsd:element ref="departamento" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element>
Elemento departamento
<xsd:element name="departamento"> <xsd:complexType><xsd:attribute name="nome" type="xsd:string" use="required"/>
<xsd:all>
<xsd:element ref="disciplina" maxOccurs="unbounded"/> </xsd:all> </xsd:complexType> </xsd:element>
Elemento disciplina
<xsd:element name="disciplina"> <xsd:complexType><xsd:attribute name="nome" type="xsd:string" /> <xsd:attribute name="codigo" type="xsd:string" /> <xsd:attribute name="creditos" type="xsd:int" /> <xsd:all>
<xsd:element ref="turma" maxOccurs="unbounded"/> </xsd:all>
<xsd:attribute name="nome" type="xsd:string" /> </xsd:complexType>
</xsd:element>
Elemento turma
<xsd:element name="turma"> <xsd:complexType>
<xsd:attribute name="numero" type="xsd:int" use="required"/> <xsd:attribute name="horario" type="xsd:string"
use="required"/> <xsd:all>
<xsd:element ref="professor" maxOccurs="unbounded"/> <xsd:element ref="aluno" maxOccurs="unbounded"/>
</xsd:all> </xsd:complexType> </xsd:element>
Elemento professor
<xsd:element name="professor"><xsd:complexType>
<xsd:attribute name="nome" type="xsd:string" /> <xsd:all>
<xsd:element ref="fone" maxOccurs="2"/> </xsd:all> </xsd:complexType> </xsd:element>
Elemento aluno
<xsd:element name="aluno"> <xsd:complexType><xsd:attribute name="nome" type="xsd:string" use="required"/>
<xsd:all>
<xsd:element ref="media" maxOccurs="1"/> <xsd:element ref="fone" maxOccurs="1"/> <xsd:element ref="cor" maxOccurs="1"/>
</xsd:all> </xsd:complexType> </xsd:element>
Elemento fone
<xsd:element name="fone"> <xsd:complexType><xsd:attribute name="tipo" type="xsd:string" use="required"/> <xsd:simpleType> <xsd:restriction base="xsd:NMTOKEN"> <xsd:enumeration value="casa"/> <xsd:enumeration value="celular"/> <xsd:enumeration value="trabalho"/> </xsd:restriction> ...
+ elementos
<xsd:element name="media"> </xsd:element> <xsd:element name="cor"> </xsd:element>Fechando a fase de validação
• Salvar em um arquivo .xsd • Validar o documento .xml
XSL
<?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet type="text/xsl" href="ex1.xsl" ?> <escola>
<turma nome="Estrutura de Dados "> <aluno> <nome>Rui Silva</nome> <media>13.6</media> </aluno> <aluno> <nome>João Sousa</nome> <media>11.0</media> </aluno> </turma> </escola> XML
Como enviar contéudo
para diferentes clientes,
extraído de um mesmo
documento XML?
A solução é “
traduzir
” o
conteúdo
para cada tipo
de cliente.
Como exibir o conteúdo XML
XSL
• Transforma XML to XML(HTML, …) • Linguagem de programação declarativa • Cria o formato de saída
• Filtra o dados
Alvos XSL
PDF HTML <XML-Document> Catalogue entry Catálogo XSLT-Stylesheet XSLT-Stylesheet XSLT-StylesheetElementos que definem o alvo
• <xsl:output method="xml"> • <xsl:output method="html> • <xsl:output method="text">
– fazer mudanças no arquivo ex1.xsl
Exemplo XSL
<doc> <head>
<xsl:stylesheet id="style1" version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"> <xsl:import href="doc.xsl"/> <xsl:template match="id('foo')"> <fo:block font-weight="bold"> <xsl:apply-templates/> </fo:block> </xsl:template> <xsl:template match="xsl:stylesheet"> <!-- ignore --> </xsl:template> </xsl:stylesheet> </head> <body>
<para id="foo"> ... </para> </body> </doc>
Templates
• Transformação de elementos <xsl:template match="expression"> <p> <xsl:apply-templates/> </p> <xsl:template>Exemplo value-of
<source> <title>XSL</title> <author>John Smith</author> </source> <xsl:stylesheet version = '1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'> <xsl:template match="/"> <h1> <xsl:value-of select="//title"/> </h1> <h2> <xsl:value-of select="//author"/> </h2> </xsl:template> </xsl:stylesheet> XML XSLExemplo value-of (continuação)
<h1>XSL</h1> <h2>John Smith</h2>
XSL
John Smith HTML saída no browserExemplo value-of (2)
<source> <bold>Hello, world.</bold> <red>I am </red> <italic>fine.</italic> </source> <xsl:stylesheet version = '1.0' xmlns:xsl='http:/...'> <xsl:template match="bold"> <p> <b> <xsl:value-of select="."/> </b> </p> </xsl:template> <xsl:template match="red"> <p style="color:red"><xsl:value-of select="." </p> </xsl:template> <xsl:template match="italic"> <p> <i><xsl:value-of select="."/> </i> </p>Exemplo value-of (2)
<p> <b>Hello, world.</b> </p> <p style="color:red">I am </p> <p> <i>fine.</i> </p> Hello, world. I am fine.Exemplo text
<source><AAA id="a1" pos="start"> <BBB id="b1"/> <BBB id="b2"/> </AAA> <AAA id="a2"> <BBB id="b3"/> <BBB id="b4"/> <CCC id="c1"> <CCC id="c2"/> </CCC> <BBB id="b5"> <CCC id="c3"/> </BBB> </AAA> </source> <xsl:stylesheet version = '1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'> <xsl:template match="/"> <xsl:apply-templates select="//CCC"/> </xsl:template>
<xsl:template match="CCC" priority="3"> <h3 style="color:blue"> <xsl:value-of select="name()"/> <xsl:text> (id=</xsl:text> <xsl:value-of select="@id"/> <xsl:text>) </xsl:text>
<xsl:template match="CCC/CCC" priority="4"> <h2 style="color:red"> <xsl:value-of select="name()"/> <xsl:text> (id=</xsl:text> <xsl:value-of select="@id"/> <xsl:text>) </xsl:text> </h2> </xsl:template> </xsl:stylesheet> <h3 style="color:blue">CCC (id=c1)</h3> <h2 style="color:red">CCC (id=c2)</h2> <h3 style="color:blue">CCC (id=c3)</h3> CCC (id=c1) CCC (id=c2) CCC (id=c3)
Exemplo com expressões
<source>
<car id="a234" checked="yes"/> <car id="a111" checked="yes"/> <car id="a005"/> </source> <xsl:stylesheet version = '1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'> <xsl:template match="car[not(@checked)]"> <p> <xsl:text>Car: </xsl:text> <xsl:value-of select="@id"/> </p> </xsl:template> <p>Car: a005</p> Car: a005
Exemplo for-each
<source> <name>John</name> <name>Josua</name> <name>Charles</name> <name>Alice</name> <name>Martha</name> <name>George</name> </source> <xsl:template match="/"> <TABLE> <xsl:for-each select="//name"><xsl:sort order="ascending" select="."/> <TR> <TH><xsl:value-of select="."/></TH> </TR> </xsl:for-each> </TABLE> </xsl:template> Alice Charles George John Josua Martha
Prática
• Desenvolver um XSL para o arquivo XML – Deverá ser gerada uma tabela para cada turma – Cada tabela terá:
• Informações sobre o departamento, disciplina e professor
Elemento template
• Criar um template para os seguintes elementos
– Departamento
• Cada disciplina gera um “tópico”
– discisplina
• Cada disciplina gera um “tópico” menor
– turma
• Cada turma estará em uma tabela
Atributo match
• Definir onde o elemento se encontra com a ajuda de Xpath
– Ex: em turmatrocar por
/universidade/turma
– Colocar o elemento departamentocomo
filho de universidadee pai de turma
O Xpath é similar a estrutura de arquivos do UNIX
Element value-of
• Utilizado para recuperar valores – De elementos ou de atributos
– O caminho também é definido com a ajuda do
Xpath
– Fazer mudanças em ex1.xsl
path em um atributo
• O path deve ser colocado entre aspas e entre chaves
– Colocar <font color="{cor}">
Elemento for-each
• Executa o processo para todos os elementos que estiverem no documento
• É utilizado para evitar a declaração de uma
novo template
– Uma solução alternativa é criar templatee
utilizar o elemento applay-tampletes
– exercitar tópicos acima
Processamento Condicional
• O valores colocados devem satisfazer a uma condição
Acesso elementos pela posição
• Funções e vetores permitem o acesso a elementos
– Colocar <xsl:value-of select="/universidade/departamento/turma/aluno[1]/no me"/> • aluno[position()=1]/nome • aluno[last()]/nome • aluno[not(position()=last())]/nome">
Ordenação dos elementos
• Os elementos são ordenados em ordem crescente ou descrescente com base em um certo valor (elemento ou atributo)
– Ordenar os alunos com
• <xsl:sort select="nome" order="ascending"/>
XML
• Evolução • O que é XML? • Aplicações • Sintaxe • Linguagens auxiliares • Conclusões • O Futuro (proposto)Vantagens
• Flexível • Auto-contida • Portável • Fácil de utilizar • Robusta • LegívelVantagens (continuação)
• Reusabilidade da informação: pequenos trechos de informações comuns podem ser compartilhadas em vários lugares
• Coleta de informações: o sistema pode identificar e capturar componentes de informações úteis em um documento
• Aplicações de gerenciamento de textos de
granularidade fina: suporte a aplicações que
envolvem o processamento de documentos em diferentes granularidades
Desvantagens
• Tamanho
• Custo de processamento • Complexidade
• A flexibilidade para a criação de linguagem gera muitas maneiras de descrever a mesma coisa.
XML
• Evolução • O que é XML? • Aplicações • Sintaxe • Linguagens auxiliares • Conclusões • O Futuro(proposto)O Futuro
A descrição sintática do conteúdo resolve o problema sintático de um XML.
Mas, e a descrição semântica?
A descrição semântica,
o que o conteúdo
significa
,
é um problema bem maior.
O problema
Se já é difícil fazer aplicações conversarem com uma mesma
linguagem XML, como chegar a
informações, que estão em
documentos XML, que não
sabemos procurá-las?
Gerações da Web
• A 1ª geração Web
– Geração manual de conteúdo • A 2ª geração Web
– Geração automática do conteúdo • A 3ª geração Web
– Web Semântica, as máquinas (agentes) devem buscar conteúdo
Web Semântica
"The Semantic Web is an extension of the current
web in which information is given well-defined meaning, better enabling computers and people to
work in cooperation." Tim Berners-Lee, James Hendler, Ora Lassila
Web Semântica
• Tem como objetivo buscar técnicas para a descrição semântica dos dados
• Recuperação dos dados diferente do casamento de palavras
Estutura da Web Semântica
A transição
<XML> <nome> <desc>... </XML> <RDF> <inf> <doc>... </RDF> <DAML> <nome> <desc>... </DAML> <SHOE> <inf> <doc>... </SHOE> <HTML> <a href></a> ... </HTML> <HTML> <a href></a> ... </HTML> <HTML> <a href></a> ... </HTML> <HTML> <a href></a> ... </HTML> <HTML> <a href></a> ... </HTML> <HTML> <a href></a> ... </HTML> <HTML> <a href></a> ... </HTML> <HTML> <a href></a> ... </HTML> <HTML> <a href></a> ... </HTML> <HTML> <a href></a> ... </HTML> <HTML> <a href></a> ... </HTML> <HTML> <a href></a> ... </HTML> <HTML> <a href></a> ... </HTML> <HTML> <a href></a> ... </HTML> %&'()#"*'Ontologias
• O terceiro componente básico da Web Semântica são as ontologias.
• Em Filosofia uma ontologia é uma teoria sobre a natureza da existência, sobre que tipos de coisas existem.
“Ontologia é definida como um conjunto de termos de conhecimento incluindo o vocabulário, as interconexões semânticas e simples regras de inferências e lógicas para algum tópico particular.”
James Hendler
Linguagens XML
• RDF
– A “primeira” para a descrição semântica, mas com elementos em aberto
• DAML+OIL
– A “primeira” para a descrição semântica com sintaxe definida
• OWL
– A proposta do W3C baseada na DAML+OIL
OWL
• Class • rdf:Property • rdfs:subClassOf • rdfs:subPropertyOf • rdfs:domain • rdfs:range • IndividualOWL – equivalência
• equivalentClass • equivalentProperty • sameIndividualAs • differentFrom • AllDifferentOWL – carac. das propriedades
• InverseOf • TransitiveProperty • SymmetricProperty • FunctionalProperty • InverseFunctionalProperty • MinCardinality • maxCardinality • cardinality • hasValue
relações de classes
• oneOf • disjointWith • equivalentClass • rdfs:subClassOf • unionOf • intersectionOf • ComplementOfUma aplicação (BD)
university departament universidade departamentoWS
Aplicações
• Gestão do conhecimento: – Pesquisas inteligentes;– Recuperação da informação relevante; • Comércio Eletrônico:
– Compreensão dos dados; – Manutenção mais barata;
Aplicações
• Acesso à Informação:
– Internet
• Dinâmica
• Grande volume e variedade de informações • Conseqüência a sobrecarga de dados • Repositório de documentos desestruturados
– Motores de busca:
• Baseados em SRI – Efetividade – Eficiência – Facilidade de uso
Aplicações
• Medidas para avaliar um SRI:
– Recall mede a habilidade do sistema recuperar informações relevantes;
– Precision mede a habilidade do sistema rejeitar informações irrelevantes;
• Efetua uma pesquisa em um motor de busca:
– Palavras-chave;
– Conseqüência a realização de uma mesma consulta feita várias vezes por usuários diferentes gerando resultados praticamente iguais;
Aplicações- Caso
• Intercâmbio de dados entre duas aplicações com dois bancos diferentes
• Consulta na aplicação 1: – SELECT nome FROM usuarios where
curso=”ciências”
• Consulta na aplicação 2:
– SELECT username FROM users where course=”ciências”
• A comunicação entre as aplicações é
inviável sem uma contextualização
Aplicações- Caso
• A aplicação 1 manda sua consulta para a aplicação 2, que:
– trata esta consulta semânticamete – Adapta a sua estrutura
– Faz a consulta
– Adapta a estrutura da aplicação cliente – E devolve a consulta
• Ex: Foogle, Buscapé(BR)
Conclusões sobre WS
• O Acesso à Informação relevante se tornará mais eficiente e preciso;
• Os motores de busca aumentarão seu desempenho; • “Programas distribuídos interagindo com recursos baseados na Web não-locais (ex.: Web services) podem se tornar a forma dominante pela qual computadores interagirão com seres humanos e outros computadores e serão a forma primária de computação em um futuro não distante” (J. Hendler)