Helena Galhardas DEI IST

Slides:



Advertisements
Apresentações semelhantes
Python: Funções Claudio Esperança.
Advertisements

Standard para representar e trocar informação estruturada
Tecnologias XML XML Schema
XML Schema Documento XML válido
1 FEUPXML Anotação de Documentos Elementos, Atributos, Entidades, Comentários, Declarações e Instruções de Processamento.
XSLT e recursividade estrutural
XML (eXtensible Markup Language) W3C - World Wide Web Consortium Documentos TXT estruturados? Por que XML? XML, ou eXtensible Markup Language, é uma linguagem.
XML Schema XML schema é um vocabulário XML para expressar regras de negócios (sobre os dados).
Validação HTML.
XML - Extensible Markup Language
Teste em Esquemas de Dados Maria Cláudia Figueiredo Pereira Emer Universidade Federal do Paraná Departamento de Informática Seminário.
Vânia Maria Ponte Vidal
Gerenciamento de Dados XML
INF 1366 – Computação Gráfica Interativa X3D
April 05 Prof. Ismael H. F. Santos - 1 Módulo II Introdução a XML DTD Prof. Ismael H F Santos.
Tecnologia para Web JavaScript
Sobrecarga e Declaração de Operadores Rafael Fonseca e Romeu Guimarães.
Jcr - ped XML Schema Processamento Estruturado de Documentos 2001 By jcr.
XML DTDs e Schemas Sharp Shooters.NET Universidade Federal de Pernambuco Centro de Informática Recife, 21/10/2002 Autor: Marden Menezes Costa.
XML Extended Markup Language
1 Namespaces. 2 Dados XML são usados para intercâmbio entre organizações XML permite autores de documentos criarem suas próprias tags, definindo a origem.
Metodologia de Pesquisa
XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli.
Document Type Definition - DTD
Tópicos avançados em internet A
Tópicos de Sistemas de Informação A
Tópicos de Sistemas de Informação A
Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação.
Recapitular XML... Gestão e Tratamento de Informação DEI IST.
Trie Nuno Campos N.º Nuno Campos - N.º
Linguagens de interrogação de dados XML XPath
Gestão e Tratamento de Informação Helena Galhardas DEI IST.
Web Services Uninorte Semana de Tecnologia da Informação
Ambientes de Desenvolvimento XML-XHTML Paulo Sousa ISEP/IPP Portugal.
Casos de Uso no Engenharia de Software e Sistemas {abab, dtvp, jmmn, mscla, rmb2,
Document Type Definition (DTD) Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003.
Profº Cláudio Barbosa XHTML – Introdução  XHTML (eXtensible HyperText Markup Language) – linguagem baseada na XML para.
VIEW - VISÕES Professor Esp. Diego André Sant’Ana
Banco de dados.
Ruby (2/2) André Braga Patrícia Lustosa. Intro Peguem a aula de ontem em /~plvr para ter como referência para os exercícios de hoje.
Linguagem XML Criando um documento XML válido
Análise Léxica Prof. Alexandre Monteiro
DCMI Dublin Core Metadata Initiative por Pablo Lopes Alenquer curso Tópicos Especiais em BD2 data Março de 2000 Mestrado IM / NCE.
XML – Extensible Markup Language [Introdução] Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa.
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Fevereiro de 2014 IDL.
©Silberschatz, Korth and Sudarshan (modificado)10.1.1Database System Concepts Capítulo 10: XML XML para transferência de dados Estrutura hierárquica do.
Faculdade Pernambucana - FAPE Setembro/2007
A Linguagem Formal de Especificação VDM-SL
Produção de Sites Unidade 9 – XML Prof.: Henrique Santos.
The Petri Net Markup Language (PNML) Wellington João da Silva Mestrado Ciência da Computação.
©Silberschatz, Korth and Sudarshan (modificado)10.2.1Database System Concepts Capítulo 10: XML XML para transferência de dados Estrutura hierárquica do.
PROGRAMAÇÃO WEB AULA XHTML
Recapitular XML... Helena Galhardas DEI IST. Agenda Introdução ao XML Modelo de dados semi-estruturado XML Schema XML Namespaces.
Validando Documentos XML Vânia Maria Ponte Vidal
XML Prof. Dr. Fernando Gauthier INE/UFSC. XML XML (Extensible Markup Language) é uma linguagem para marcar documentos que contêm informações estruturadas.
XML Namespaces XML Namespaces provê um método para evitar conflito de nomes de elementos.
RDF -Resource Description Framework
XML – Extensible Markup Language [Sintaxe] Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli.
XML: Conceitos, Tecnologias e Aplicações Vânia Maria Ponte Vidal
XSLT e recursividade estrutural Helena Galhardas DEI IST.
April 05 Prof. Ismael H. F. Santos - 1 Módulo III Introdução a XML Prof. Ismael H F Santos.
1 Introdução à Manipulação de Dados SQL – Structured Query Language  Tabela = Relação  DDL – Data Definition Language  Sub-conjunto do SQL que suporta.
Java e XML Eduardo Aranha. Slogans de Java e de XML Java – “Portabilidade de Código” XML – “Portabilidade de Dados” Java e XML – “Portabilidade de Código.
SQL SERVER XML Guia Essencial para Programação com XML no SQL Server.
Modelagem de dados XML Yago Zacarias Gomes Coutinho Ribeiro
Prof. João Ricardo Andrêo Programação p/ INTERNET - HTML 31/5/ :34 1 Introdução e Conceitos CSS CSS significa Cascade Style Sheetes (Folha de Estilo.
Design para Web 3 XHTML.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Capítulo 4 SQL básica.
Rhizome. Roteiro Definição Metas Características Arquitetura Tecnologias envolvidas Referências.
Tecnologias XML XML Schema
Transcrição da apresentação:

Helena Galhardas DEI IST DTD, XML Schema, XSDL Helena Galhardas DEI IST

Agenda Tipos de dados em XML: DTD XML Schema ou XSDL

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

DTDs vistas como gramáticas <!DOCTYPE paper [ <!ELEMENT paper (section*)> <!ELEMENT section ((title,section*) | text)> <!ELEMENT title (#PCDATA)> <!ELEMENT text (#PCDATA)> ]> <paper> <section> <text> </text> </section> <section> <title> </title> <section> … </section> <section> … </section> </section> </paper> Gramáticas podem ser recursivas A DTD = a grammar A valid XML document = a parse tree for that grammar

DTDs vistas como esquemas Não são tão adequadas pois: Impõem restrições sobre a ordem que não se pretende <!ELEMENT person (name,phone)> Não se consegue impôr restrições sobre as referências Não conseguimos dizer que o atributo idref em state-of tem que ser um identificador do elemento state Podem ser demasiado vagas <!ELEMENT person ((name|phone|email)*)>

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)> ]>

Exemplo: um documento XML válido <company> <person> <ssn> 123456789 </ssn> <name> John </name> <office> B432 </office> <phone> 1234 </phone> </person> <person> <ssn> 987654321 </ssn> <name> Jim </name> <office> B123 </office> <product> ... </product> ... </company>

Exemplo: Atributos em DTDs <!ELEMENT person (ssn, name, office, phone?)> <!ATTLIST person age CDATA #REQUIRED> <person age=“25”> <name> ....</name> ... </person>

Exemplo: Atributos em DTDs <!ELEMENT person (ssn, name, office, phone?)> <!ATTLIST person age CDATA #REQUIRED id ID #REQUIRED manager IDREF #REQUIRED manages IDREFS #REQUIRED > <person age=“25” id=“p29432” manager=“p48293” manages=“p34982 p423234”> <name> ....</name> ... </person>

Atributos em DTDs Qualificadores: #REQUIRED #IMPLIED = opcional Tipos: CDATA = string ID = chave IDREF = chave estrangeira IDREFS = chaves estrangeiras separadas por espaços (Monday | Wednesday | Friday) = enumeração Qualificadores: #REQUIRED #IMPLIED = opcional value = valor por omissão value #FIXED = único valor permitido

Utilização de DTDs Incluir no documento XML: A DTD completa <!DOCTYPE rootElement [ ....... ]> Ou uma referência para ela <!DOCTYPE rootElement SYSTEM “http://www.mydtd.org”> Ou misturar as duas (por exemplo, para fazer “override” da definição externa)

Exercício Considere uma BD relacional contendo uma relação “ensina” com atributos “disciplina” e “docente” tal como já vimos no exercício de XML. Escreva uma DTD XML para representar esta informação.

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

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 Análogo a & nas DTDs SGML

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 - resumo Alternância element-type-element: <xsd:complexType name=“....”> [regular expression on elements] </xsd:complexType> Expressões regulares: <xsd:sequence> A B C </...> = A B C <xsd:choice> A B C </...> = A | B | C <xsd:group> A B C </...> = (A B C) <xsd:... minOccurs=“0” maxOccurs=“unbounded”> ..</...> = (...)* <xsd:... minOccurs=“0” maxOccurs=“1”> ..</...> = (...)?

DTD: <!ELEMENT paper (title,author?,year, (journal|conference))> 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> 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” 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> Definir tipos com nome possibilita a reutilização. 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” name=“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:NMTOKEN" 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: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)

Facetas de tipos simples Propriedades adicionais que restringem um tipo simples 15 facetas definidas no XML Schema Exemplos: length minLength maxLength pattern enumeration whiteSpace maxInclusive maxExclusive minInclusive minExclusive totalDigits fractionDigits

Tipos derivados por extensões <complexType name="Address"> <sequence> <element name="street" type="string"/> <element name="city" type="string"/> </sequence> </complexType> <complexType name="USAddress"> <complexContent> <extension base="ipo:Address"> <sequence> <element name="state" type="ipo:USState"/> <element name="zip" type="positiveInteger"/> </extension> </complexContent> Corresponde a herança

Tipos derivados por restrições <complexContent> <restriction base="ipo:Items“> … [rewrite the entire content, with restrictions]... </restriction> </complexContent> Corresponde à inclusão de conjuntos

Exemplo de restrição por enumeração <xsd:element name="MScResult"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:enumeration value="distinction"/> <xsd:enumeration value="merit"/> <xsd:enumeration value="pass"/> <xsd:enumeration value="fail"/> </xsd:restriction> </xsd:simpleType> </xsd:element> Conteúdo do elemento MScResult é uma restrição do xsd:string type Tem que ser um dos quatro valores dados e.g., <MScResult>pass</MScResult>

Tópicos próximas aulas XSLT XPath XQuery

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

Subtle Use of Local Names <xsd:element name=“A” type=“oneB”/> <xsd:complexType name=“onlyAs”> <xsd:choice> <xsd:sequence> <xsd:element name=“A” type=“onlyAs”/> <xsd:element name=“A” type=“onlyAs”/> </xsd:sequence> <xsd:element name=“A” type=“xsd:string”/> </xsd:choice> </xsd:complexType> <xsd:complexType name=“oneB”> <xsd:choice> <xsd:element name=“B” type=“xsd:string”/> <xsd:sequence> <xsd:element name=“A” type=“onlyAs”/> <xsd:element name=“A” type=“oneB”/> </xsd:sequence> <xsd:sequence> <xsd:element name=“A” type=“oneB”/> <xsd:element name=“A” type=“onlyAs”/> </xsd:sequence> </xsd:choice> </xsd:complexType> Arbitrary deep binary tree with A elements, and a single B element

Nomes locais nome tem significados diferentes em person e em product <xsd:element name=“person”> <xsd:complexType> . . . . . <xsd:element name=“name”> <xsd:complexType> <xsd:sequence> <xsd:element name=“firstname” type=“xsd:string”/> <xsd:element name=“lastname” type=“xsd:string”/> </xsd:sequence> </xsd:element> . . . . </xsd:complexType> </xsd:element> <xsd:element name=“product”> <xsd:complexType> . . . . . <xsd:element name=“name” type=“xsd:string”/> </xsd:complexType> </xsd:element> nome tem significados diferentes em person e em product