recapitular xml... gestão e tratamento de informação dei ist
TRANSCRIPT
Recapitular XML ...
Gestão e Tratamento de Informação
DEI IST
Agenda
Introdução ao XML Modelo de dados semi-estruturado XML Schema XML Namespaces
Agenda
Introdução ao XML Modelo de dados semi-estruturado XML Schema XML Namespaces
Revolução da Web
HTML é a linguagem da Web Mesmo se existe uma grande quantidade de
ficheiros .doc, .ps, .pdf, .jpg, .gif, som, vídeo Existem milhares de páginas
Públicas/privadas, estáticas/dinâmicas, vísiveis/escondidas
Suporte natural para a informação distribuída Destinada a seres humanos mas, cada vez mais,
também às aplicações
Aplicações sobre dados distribuídos sobre a Web HTML não está adaptado a aplicações do
tipo: B2C, B2B, bibliotecas on-line, ... Não chega aceder a um conjunto de páginas
HTML como nos motores de busca Estas aplicações necessitam de “tipos” para
representar a estrutura dos dados Que modelo de dados então adoptar?
Base de Dados?
Modelo BD relacional vs Modelo dados Web (1)
Modelo de dados relacional: Conhece-se a estrutura das tabelas e a
semântica das colunas; não sobre a Web Estrutura dos dados fixa vs irregular
Falta de dados Estrutura explícita vs implícita
Modelo BD relacional vs Modelo dados Web (2) Esquema de dados Web:
pode ser deduzido a posteriori pode ser complexo e grande pode ser ignorado pelas interrogações pode evoluir muito rapidamente. Alguns dados podem não ter estrutura
Texto, imagens Alguns dados podem não ser conforme a
estrutura
Junção de dois modelos resulta ....
Gestão de documentos
SGML
HTML
Documentação hipertexto
Gestão de dados
Bases de Dados estruturadas(relacional e OO)
Bases de dadossemi-estruturadas
XML – eXtensible Markup Language
Formato universal para os documentos e dados semi-estruturados na Web
Versão simplificada de SGML Esperanto da Web que vai substituir o HTML Família de standards: XLink, XPath, XSL,
XQuery, SOAP, DOM, .... Modelo de dados baseado em árvores e uma
linguagem de representação baseada em “tags” (etiquetas)
Exemplo
ficha
nome trab
ln Ender. email
cidade CPGalhardas
Porto Salvo2790-380
IST Ensinar bem…
missãotipo
ensino
fn
fn
tipo
2790-380
Helena
ElementosAtributos
Dados
<ficha><nome>
<fn>Helena</fn><ln>Galhardas</ln>
</nome><trab tipo=“ensino">
IST<ender><cidade>Porto Salvo</cidade><cp>92310</cp></ender><email>[email protected]</email>
</trab><missão>Ensinar bem</missão></ficha>
Acesso a dados XML Características das interrogações:
Bases de dados (estilo SQL/OQL) Navegação Palavras chaves (estilo motor de pesquisa Web) e “pattern
matching” (estilo comando “grep”) Interrogação de dados e estrutura ao mesmo tempo – a
estrutura não é totalmente conhecida previamente
Observações
XML fornece uma sintaxe, não fornece semântica apriori
As tags não têm significado definido pela linguagem, mas podem fazer sentido para as aplicações
XML define apenas a estrutura e conteúdo de um documento, não o seu comportamento nem o seu tratamento
Desenvolvida e promovida pelo W3C Indústria: Oracle, IBM, Microsoft, CompaQ, Xerox,... Laboratórios de investigação: MIT, INRIA, etc
Alguns standards importantes DOM (Document Object Model): interface de
programação que permite aceder à estrutura e conteúdo dos documentos
[DTD], XML Schema: tipos Os documentos devem ser bem formados, mas os tipos
não são obrigatórios XPath: linguagem de expressões de caminho para
aceder a partes do documento XLink (XML Linking Language): XSLT: linguagem de transformação XQuery: linguagem de interrogação (o SQL do XML)
Dialectos de XML
Para uma determinada aplicação, define-se uma sintaxe (um dialecto XML) e define-se a sua semântica.
XHTML: Reformulação de HTML como sendo uma aplicação XML sintaxe mais rigorosa, por ex., fecha-se o que se abriu Importação de fragmentos de documentos de outros
domínios Possibilidade de utilizar aplicações XML standard
MathML: Permite a troca e tratamento de expressões matemáticas
sobre a Web Facilita a inserção de expressões matemáticas em docs
HTML ou XML
Vantagens do XML
Transferência e partilha de informação Uma comunidade de utilizadores (ex: indústria da
biotecnologia) inventa livremente as tags que lhe parecem úteis para representar as informações que pretendem trocar ou partilhar
Exemplo: diferentes maneiras de representar uma data
<data> 5 Janeiro 2000 </data>
<data>
<a>2000</a><m>01</m><d>05</d>
</data>
<data formato='ISO-8601'> 2000-01-05 </data>
Interoperabilidade das ferramentas de tratamento Ferramentas para dados XML
Parsers, editores, browsers,... Consequências:
Um servidor de documentos XML consegue responder a um conjunto de necessidades de uma organização
Um único editor permite tratar o conjunto de dados de uma organização
Acesso a fontes de informação heterógeneas A interrogação e a troca de dados entre
sistemas de informação heterogéneos é muitas vezes complexa
XML pretende colmatar esse problema Formato de transferência de informação
normalizado independente da plataforma A indexação e interrogação de bases de
dados documentais grandes é baseada em informações estruturais e textuais.
Exemplos de documentos XML
<?xml version="1.0" standalone="yes" ?> <document>o <saudação> Bom dia! </saudação> </document>
<document> <saudação> Bom dia! </saudação> </document>
<document> </document>
<document/>
<document> Bom dia! </document>
XML 1.0: estrutura de um elemento Um elemento tem a forma: <nome atributo='valor'> conteúdo </nome> <nome> é a tag de abertura </nome> é a tag de fecho [ elementos vazios: <nome> </nome> ou <nome/> ] «conteúdo» é o conteúdo de um elemento!
Composto por uma lista (pode ser vazia) de texto, de outros elementos, de instruções de tratamento, de comentários
atr='valor' representa um atributo que é um par (nome, valor).
Um elemento só pode ter um atributo com um determinado nome.
Exemplos de elementos
<a></a><a>Olá, bom dia</a><a><b>…</b><b>…</b><a>…</a></a><a><b>…</b>Olá<b>…</b>Bom dia</a>
Conteúdo de um elemento = floresta de elementos ou de texto
Text UNICODE: pode representar qualquer alfabeto
XML 1.0: Restrições sobre os nomes
O nome de um elemento ou atributo é uma cadeia não vazia de caracteres, escolhidos entre: Caracteres alfa-numéricos,
sublinhado (undescore), sinal menos, o ponto, caracter dois pontos (:)
Que deve satisfazer as seguintes condições: O primeiro caracter deve ser
alfabético ou sublinhado Os três primeiros caracteres
não devem formar uma cadeia cuja representação em minúsculas é "xml".
Exemplos de nomes de elementos
correctos incorrectos
_nomeNome_sociedadexsl:ruleX.11
1998-catalogoXmlSpecnome sociedade
XML 1.0: Sintaxe dos atributos
Um atributo é um par nome='valor' que caracteriza um elemento
Um elemento pode ter vários atributos (separados por espaço):
<relatório língua=‘pt' ult-modif='08/07/99'> a ordem não tem importância
O valor de um atributo é uma cadeia delimitada por aspas (") ou ('). Não deve conter os caracteres ^, % e &.
Referências XML
XML permite associar identificadores únicos a elementos, como sendo o valor de um determinado atributo.
<state id = “s2”><scode> NE </scode><sname> Nevada </sname>
</state>
<city id = “c2”><ccode> CCN </ccode><cname> Carson City </cname><state-of idref =“s2”/>
</city>
Referências
Serge Abiteboul, Slides of the course: “Données Semistructurées”, Master Recherche Informatique Paris Sud, http://www-rocq.inria.fr/~abitebou/Master-SSD/index.html
Erik Wilde, Slides of the course: “XML Foundations”, UC Berkeley, http://dret.net/lectures/xml-fall07/
XML 1.0 Press Release, http://www.w3.org/Press/1998/XML10-REC
XML 1.0 Spec, http://www.w3.org/TR/REC-xml/ S. Abiteboul, P. Buneman, D. Suciu, “Data on the
Web, From Relations to Semistructured Data and XML”, Morgan Kaufmann, 2000.
Agenda
Introdução ao XML Modelo de dados semi-estruturado XML Schema XML Namespaces
Tipificação em XML
Não é imposta Mas:
Melhora o armazenamento Facilita a navegação nos dados Facilita a interrogação Facilita a descrição e explicação dos dados Ajuda à optimização Permite a interoperabilidade entre programas Permite proteger os dados
XML DTD (Document Type Definition) Define uma classe de documentos Um documento XML pode ter uma DTD Terminologia para XML:
Bem formado: se as tags estão correctamente fechadas
Válido: se tem uma DTD e é conforme essa DTD Validação é útil em transferência de dados
Define: Nomes de elementos Estrutura do conteúdo dos elementos Nomes dos atributos Valores dos atributos por omissão Entidades
Exemplo: Uma DTD muito simples
<!DOCTYPE company [ <!ELEMENT company ((person|product)*)> <!ELEMENT person (ssn, name, office, phone?)> <!ELEMENT ssn (#PCDATA)> <!ELEMENT name (#PCDATA)> <!ELEMENT office (#PCDATA)> <!ELEMENT phone (#PCDATA)> <!ELEMENT product (pid, name, description?)> <!ELEMENT pid (#PCDATA)> <!ELEMENT description (#PCDATA)>]>
<!DOCTYPE company [ <!ELEMENT company ((person|product)*)> <!ELEMENT person (ssn, name, office, phone?)> <!ELEMENT ssn (#PCDATA)> <!ELEMENT name (#PCDATA)> <!ELEMENT office (#PCDATA)> <!ELEMENT phone (#PCDATA)> <!ELEMENT product (pid, name, description?)> <!ELEMENT pid (#PCDATA)> <!ELEMENT description (#PCDATA)>]>
Desvantagens das DTDs
Sintaxe não XML Não tem tipos de dados, em particular para o
conteúdo dos elementos Só é marginalmente compatível com
namespaces Não consegue usar conteúdo misto e obrigar
ordem e número de elementos filhos Nomes dos elementos são globais
XML Schema Generaliza DTDs Utiliza a sintaxe XML Descreve o conteúdo possível para
documentos XML É uma W3C Recommendation
XML Schema Part 0: Primer XML Schema Part 1: Structures XML Schema Part 2: Datatypes
Também referida como XSDL: XML Schema Definition Language, ou XSD: XML Schema Document
DTD vs XML Schema
DTD XML Schema<!ELEMENT> declaration xsd:element element
<!ATTLIST> declaration xsd:attribute element
<!ENTITY> declaration n/a
#PCDATA content xsd:string type
n/a other data types
Tipos de dados simples e complexos
XML Schema suporta a definição de tipos de dados e a declaração de elementos e de atributos
Tipos: simples (inteiros, strings, ...) complexos (expressões regulares, como nas DTDs)
Alternância element-type-element: elemento raiz tem um tipo complexo que é uma expressão regular de elementos esses elementos têm os seus tipos complexos
... nas folhas, temos tipos simples
Estrutura da declaração de elementos xsd:sequence
Obriga a que os elementos ocorrem na ordem dada análogo a , em DTDs
xsd:choice Permite que um dos elementos dados ocorra Análogo a | em DTDs
xsd:all Permite que os elementos ocorram numa ordem
qualquer
Definição do número de ocorrências dos elementos Os atributos minOccurs e maxOccurs
controlam o número de ocorrências de um elemento, sequence ou choice
minOccurs tem que ser um inteiro não negativo
maxOccurs tem que ser um inteiro não negativo ou sem limite
O valor por omissão para ambos é 1
Expressões regulares - resumoAlternância element-type-element: <xsd:complexType name=“....”>
[construção de elementos] </xsd:complexType>
Construção de Elementos: <xsd:sequence> A B C </...> <xsd:choice> A B C </...> <xsd:all> A B C </...> <xsd:... minOccurs=“0” maxOccurs=“unbounded”> ..</...> <xsd:... minOccurs=“0” maxOccurs=“1”> ..</...>
Exemplo<xsd:element name=“paper” type=“papertype”/>
<xsd:complexType name=“papertype”>
<xsd:sequence>
<xsd:element name=“title” type=“xsd:string”/>
<xsd:element name=“author” minOccurs=“0”/>
<xsd:element name=“year”/>
<xsd: choice> < xsd:element name=“journal”/>
<xsd:element name=“conference”/>
</xsd:choice>
</xsd:sequence>
</xsd:element>
<xsd:element name=“paper” type=“papertype”/>
<xsd:complexType name=“papertype”>
<xsd:sequence>
<xsd:element name=“title” type=“xsd:string”/>
<xsd:element name=“author” minOccurs=“0”/>
<xsd:element name=“year”/>
<xsd: choice> < xsd:element name=“journal”/>
<xsd:element name=“conference”/>
</xsd:choice>
</xsd:sequence>
</xsd:element>
DTD: <!ELEMENT paper (title,author?,year, (journal|conference))>
Elementos versus Tipos
<xsd:element name=“person”> <xsd:complexType> <xsd:sequence> <xsd:element name=“name” type=“xsd:string”/> <xsd:element name=“address” type=“xsd:string”/> </xsd:sequence> </xsd:complexType></xsd:element>
<xsd:element name=“person”> <xsd:complexType> <xsd:sequence> <xsd:element name=“name” type=“xsd:string”/> <xsd:element name=“address” type=“xsd:string”/> </xsd:sequence> </xsd:complexType></xsd:element>
<xsd:element name=“person” type=“ttt”><xsd:complexType name=“ttt”> <xsd:sequence> <xsd:element name=“name” type=“xsd:string”/> <xsd:element name=“address” type=“xsd:string”/> </xsd:sequence></xsd:complexType>
<xsd:element name=“person” type=“ttt”><xsd:complexType name=“ttt”> <xsd:sequence> <xsd:element name=“name” type=“xsd:string”/> <xsd:element name=“address” type=“xsd:string”/> </xsd:sequence></xsd:complexType>
DTD: <!ELEMENT person (name,address)>
Tipos locais e globais
Tipo local: <xsd:element name=“person”>
[define localmente o tipo da pessoa] </xsd:element>
Tipo global: <xsd:element name=“person” type=“ttt”/>
<xsd:complexType name=“ttt”> [define aqui o tipo ttt] </xsd:complexType>
Tipos globais podem ser reutilizados noutros elementos
Elementos locais versus elementos globais Elemento local: <xsd:complexType name=“ttt”>
<xsd:sequence> <xsd:element name=“address” type=“...”/>... </xsd:sequence> </xsd:complexType>
Elemento global: <xsd:element name=“address” type=“...”/>
<xsd:complexType name=“ttt”> <xsd:sequence> <xsd:element ref=“address”/> ... </xsd:sequence> </xsd:complexType>
Elementos globais como nas DTDs
Atributos Utilizar o elemento xsd:attribute dentro de um
xsd:complexType Tem atributos name, type Atributo use é opcional
Se omitido, então atributo é opcional Use = “required” para atributos obrigatórios Use = “fixed” para constantes Use = “default” value =“ ...” para valor por omissão
Para enumeração, usar xsd:SimpleType Atributos têm que ser declarados no fim de um
xsd:complexType
Exemplo
<xsd:element name=“paper” type=“papertype”/>
<xsd:complexType name=“papertype”>
<xsd:sequence>
<xsd:element name=“title” type=“xsd:string”/>
. . . . . .
</xsd:sequence>
<xsd:attribute name=“language" type="xsd:string" fixed=“English"/>
</xsd:complexType>
</xsd:element>
<xsd:element name=“paper” type=“papertype”/>
<xsd:complexType name=“papertype”>
<xsd:sequence>
<xsd:element name=“title” type=“xsd:string”/>
. . . . . .
</xsd:sequence>
<xsd:attribute name=“language" type="xsd:string" fixed=“English"/>
</xsd:complexType>
</xsd:element>
.
Conteúdo “Mixed”, Tipo “Any”
Melhor do que nas DTDs: pode assegurar o tipo, mas pode existir texto entre quaisquer elementos
Significa que qualquer coisa é permitida
<xsd:complexType mixed="true"> . . . .
<xsd:complexType mixed="true"> . . . .
<xsd:element name="anything" type="xsd:anyType"/> . . . .
<xsd:element name="anything" type="xsd:anyType"/> . . . .
Tipos de dados simples
String Token Byte unsignedByte Integer positiveInteger Int (larger than integer) unsignedInt Long Short ...
Time dateTime Duration Date ID IDREF IDREFS
Tipos de dados simples derivados (pelo utilizador) Tipos de dados complexos podem ser criados de
raiz Novos tipos de dados simples podem ser derivados
a partir de outros tipos de dados simples já existentes
Derivação pode ser: Extensão:
Lista: uma lista de valores de um determinado tipo União: permite valores de dois ou mais tipos de dados
Restrição: limita os valores permitidos usando: Valor máximo, valor mínimo, tamanho, número de dígitos,
enumeração, padrões (facetas)
Referências Peter Wood, Slides on “Representing and Querying Data on the
Web”, http://www.dcs.bbk.ac.uk/~ptw/teaching/data-on-the-web.html.
Dan Suciu, Slides on “The semistructured data model”, CSE 590ds: Management of XML and Semistructured Data, http://www.cs.washington.edu/education/courses/cse590ds/01sp/
S. Abiteboul, P. Buneman, D. Suciu, “Data on the Web, From Relations to Semistructured Data and XML”, Morgan Kaufmann, 2000, (cap 3)
www.w3.org/TR/xmlschema-0 W3C's XML Schema Recommendation, Part 0: Primer
www.w3.org/TR/xmlschema-1 W3C's XML Schema Recommendation, Part 1: Structures
www.w3.org/TR/xmlschema-2 W3C's XML Schema Recommendation, Part 2: Datatypes
Agenda
Introdução ao XML Modelo de dados semi-estruturado XML Schema XML Namespaces
Tópicos próxima aula
XPath XSLT