Gerência de Dados da Web - DCC922 - XML Fundamentos Alberto H. F. Laender Evolution of Data Management What Who How Long Rel. model a theoretician one paper DBMS system people one book XML W3C committee 15 standards (Dan Suciu, 2001) 2015 Sumário XML (extensible Markup Language) Motivação XML: Sintaxe Básica Elementos Atributos Outras construções Documentos XML Bem Formados Ordem e Referências em Documentos XML XML e Dados Semi-Estruturados Document Type Definitions (DTDs) XML Schema Acessórios XML Padrão W3C que complementa HTML para intercâmbio de dados na Web www.w3c.org/tr/rec-xml Origem: SGML Motivação: HTML descreve apresentação XML descreve conteúdo Aplicações ainda necessitam de componentes de software especiais (wrappers) para extração de dados da Web 1
De HTML para XML HTML <h1> Bibliography </h1> <p> <i> Foundations of Databases </i> Abiteboul, Hull, Vianu <br> Addison Wesley, 1995 <p> <i> Data on the Web </i> Abiteoul, Buneman, Suciu <br> Morgan Kaufmann, 1999 Descreve a apresentação XML <bibliography> <book> <title> Foundations </title> <author> Abiteboul </author> <author> Hull </author> <author> Vianu </author> <publisher> Addison Wesley </publisher> <year> 1995 </year> </book> </bibliography> Descreve o conteúdo XML vs. HTML Marcadores ( tags ) são definidos pelo usuário para indicar estrutura Estruturas podem ser aninhadas em um nível de profundidade arbitrário Um documento XML pode conter uma descrição opcional de sua gramática (ex., DTD Document Type Definition) 2
Exemplo de um Documento XML <bibliography> <description> SSD papers </description> <papers> <paper> <author> Serge Abiteboul </author> <author> Victor Vianu </author> <title> Regular path queries with constraints </title> <year> 1977 </year> <page> <first> 122 </first> <last> 133 </last> </page> </paper> <paper> <author> Serge Abiteboul </author> <title> Querying semistructured data </title> <year> 1977 </year> </paper> </papers> </bibliography> XML: Sintaxe Básica Elementos Componentes básicos de um documento XML <author> Serge Abiteboul </author> <title> Regular path queries with constraints </title> Pares <author> </author> são denominados marcadores Marcadores são definidos pelo usuário Podem ser decompostos em sub-elementos <page> <first> 122 </first> <last> 133 </last> </page> Podem ser repetidos para representar uma coleção <authors> <author> Serge Abiteboul </author> <author> Victor Vianu </author> </authors> Dados tratados como texto: PCDATA - Parsed Character Data XML: Sintaxe Básica Atributos Definem propriedades dos elementos Definidos como pares (nome, valor) <product > <name language = French > trompete six trous </name> <price currency = Euro > 420.12 </price> <address format = XLB56 language = French > <street> 31 rue Croix-Basset </street> <zip> 92310 </zip> <city> Sevres </city> <country> France </country> </address> </product > Introduzem ambigüidade na representação de dados <paper year = 1977 author = Serge Abiteboul > <title> Querying semistructured data </title> </paper> XML: Sintaxe Básica Atributos Uso comum: expressão da dimensão ou tipo do dado representado Só podem ocorrer uma vez para o mesmo elemento <picture> <height dim= cm > 2400 </height> <width dim= in > 96 </width> <data encoding = gif compression = zip > M05-.+C$@02!G96YE<FEC </data> </picture> Do ponto de vista de modelagem, nem sempre é claro quando se deve usar atributos ou não 3
XML: Sintaxe Básica Atributos <pessoa cpf= 123456789 > <nome> João Guimarães Rosa </nome> <email> rosa@sertoes.org.br </email> </pessoa> <pessoa> <cpf>123456789</cpf> <nome> João Guimarães Rosa </nome> <email> rosa@sertoes.org.br </email> </pessoa> Outras Construções XML Exemplos Comentários: <! -- this is a comment -- > Instruções de processamento (PI): <?xml - stylesheet href = book.css type = text/css?> Indicador de versão: <?xml version = 1.0?> CDATA (character data): <![CDATA [<start> this is an incorrect element </end>]]> DTD - Document Type Definition <!DOCTYPE name [markup-declarations]> Um Documento XML Indicador de versão Elemento book Atributo year Elemento editor <?xml version="1.0" encoding="iso-8859-1"?> <bib> <book year="1994"> <title>tcp/ip Illustrated</title> <author><last>stevens</last><first>w.</first></author> <publisher>addison-wesley</publisher> <price>65.95</price> </book> <book year="1992"> <title>advanced Programming in the Unix environment</title> <author><last>stevens</last><first>w.</first></author> <publisher>addison-wesley</publisher> <price>65.95</price> </book> <book year="2000"> <title>data on the Web</title> <author><last>abiteboul</last><first>serge</first></author> <author><last>buneman</last><first>peter</first></author> <author><last>suciu</last><first>dan</first></author> <publisher>morgan Kaufmann Publishers</publisher> <price>39.95</price> </book> <book year="1999"> <title>the Technology and Content for Digital TV</title> <editor> <last>gerbarg</last><first>darcy</first> <affiliation>citi</affiliation> </editor> <publisher>kluwer Academic Publishers</publisher> <price>129.95</price> </book> </bib> Documentos XML Bem Formados Um documento XML é considerado bem formado se: todos os marcadores estiverem corretamente aninhados os atributos forem únicos O fato de um documento XML ser bem formado apenas garante que os seus dados podem ser representados por uma árvore rotulada 4
Ordem em Documentos XML Referências em Documentos XML Um documento XML é uma coleção ordenada de elementos: <person> <fname> John </fname > <lname> Smith </lname > <person> <lname> Smith </lname> <fname> John </fname> não são documentos equivalentes Entretanto, atributos não são ordenados em um documento XML: <person fname = John lname = Smith /> <person lname = Smith fname = John /> são documentos equivalentes Ordem em documentos XML está relacionada à sua origem (SGML) Referências permitem a criação de documentos cuja representação interna corresponde a um grafo <state id= s2 > <scode> NE </scode> <sname> Nevada </sname> </state> <city id= c2 > <ccode> CCN </ccode> <cname> Carson City </cname> <state-of-city idref= s2 /> </city> IDs e IDREFs ID Atributo usado para identificar univocamente um elemento em um documento XML IDREF Atributo que referencia um elemento através do valor de seu atributo ID IDREFS Atributo que referencia um conjunto de elementos através dos valores de seus atributos ID IDs e IDREFs: Exemplo <geography> <states> <state id= s2 > <scode> NE </scode> <sname> Nevada </sname> <capital ideref= c2 /> </state> </states> <cities> <city id= c2 > <ccode> CCN </ccode> <cname> Carson City </cname> <state idref= s2 /> </city> </cities> </geography> 5
IDs e IDREFs: Consistência Se um atributo é declarado como ID: Os valores associados devem ser todos distintos Se um atributo é declarado como IDREF: O valor associado deve existir como valor de algum atributo ID O mesmo acontece para todos os valores associados aos atributos declarados como IDREFS Atributos ID e IDREF(S) não são tipados : Referências nem sempre são feitas ao mesmo tipo de elemento XML e Dados Semi-Estruturados A sintaxe XML se presta perfeitamente para a representação de dados semi-estruturados <person id= o123 > <name> Alan </name> <age> 42 </age> <email> ab@com </email> <person father= o123 > person father name age email Alan 42 ab@com { person: &o123 { name: Alan, age: 42, email: ab@com } } { person: { father: &o123 } } person name age email Alan father 42 ab@com Document Type Definitions (DTDs) Uma DTD serve como uma gramática para o documento XML correspondente à pode ser vista também como um esquema para os dados representados pelo documento XML <db> <!DOCTYPE db [ <person> <!ELEMENT db (person*)> <name> Alan </name> <!ELEMENT person (name,age, <age> 42 </age> email+)> <email> agb@abc.com </email> <!ELEMENT name (#PCDATA)> <!ELEMENT age (#PCDATA)> <person> <!ELEMENT email (#PCDATA)> ]> </db> Document Type Definitions (DTDs) DTDs são gramáticas livres de contexto <!DOCTYPE node [ <!ELEMENT node (leaf (node,node))> <!ELEMENT leaf (#PCDATA)> ]> Elementos definidos por meio de expressões regulares: e* (zero, um ou mais) ex.: person* e+ (um ou mais) ex.: email+ e? (zero ou um) ex.: age? e1,e2 (concatenação) ex.: name,age,email+ e1 e2 (alternativa) ex.: email phone 6
DTDs como Esquemas <db><r1> <a> a1 </a> <b> b1 </b> <c> c1 </c> </r1> <r1> <a> a2 </a> <b> b2 </b> <c> c2 </c> </r1> <r2> <c> c2 </c> <d> d2 </d> </r2> <r2> <c> c3 </c> <d> d3 </d> </r2> <r2> <c> c4 </c> <d> d4 </d> </r2> </db> <!DOCTYPE db [ <!ELEMENT db (r1*, r2*)> <!ELEMENT r1 (a,b,c)> <!ELEMENT r2 (c,d)> <!ELEMENT a (#PCDATA)> <!ELEMENT b (#PCDATA)> <!ELEMENT c (#PCDATA)> <!ELEMENT d (#PCDATA)> ]> Declaração de Atributos em DTDs <product> <name language = French department = Music > trompete six trous </name> <price currency = Euro > 420.12 </price> </product> <!ATTLIS name language CDATA #REQUIRED department CDATA #IMPLIED> <!ATTLIS price currency CDATA #IMPLIED> Declaração de ID, IDREF e IDREFS <!DOCTYPE family [ <!ELEMENT family (person)*> <!ELEMENT person (name)> <!ELEMENT name (#PCDATA)> <!ATTLIST person id ID #REQUIRED mother IDREF #IMPLIED father IDREF #IMPLIED children IDREFS #IMPLIED>]> <family> <person id="jane" mother="mary" father="john"> <name> Jane Doe </name> <person id="john" children="jane jack"> <name> John Doe </name> <mother/> <person id="mary" children="jane jack"> <name> Mary Doe </name> <person id="jack" mother="mary" father="john"> <name> Jack Doe </name> </family> Documentos XML Válidos Um documento XML é considerado válido se, além de bem formado, possuir uma DTD e estiver estruturado de acordo com ela. Para identificadores e referências, requer-se apenas que os valores de atributos do tipo ID sejam únicos e que as referências do tipo IDREF e IDREFS sejam para identificadores válidos. 7
DTDs como Esquemas Limitações Imposição de ordem entre os elementos Inexistência de tipos atômicos Não impõem restrições de integridade Tipos (associados aos elementos) são globais Não há distinção entre referências Não permitem a utilização de namespaces Reusabilidade e extensibilidade limitadas Outras propostas: DCD (Document Content Description) XDR (XML-Data Reduced) SOX (Schema for Object-Oriented XML) XML Schema XML Schema Recomendação W3C aprovada em maio de 2001 para definição de esquemas (XSDs XML Schema Definitions) para documentos XML XSDs definem a estrutura, o conteúdo e a semântica de documentos XML Generalizam as DTDs Usam a sintaxe XML Expressam vocabulários compartilhados Dois documentos definem a linguagem XML Schema XML Schema Part 1: Structures http://www.w3.org/tr/xmlschema-1 XML Schema Part 2: Datatypes http://www.w3.org/tr/xmlschema-2 XSDs vs. DTDs XSDs vs. DTDs Suporte a mais de 40 tipos de dados Suporte ao uso de namespaces Modelagem de dados orientada a objetos Tipos de dados podem ser derivados de outros tipos de dados e herdam suas características Restrições de integridade e valores válidos podem ser especificadas para os elementos Comentários são realmente comentários (documentação) e não especificações de requisitos <!ELEMENT Person (First, Middle?, Last, Age)> <!ELEMENT First (#PCDATA)> <!ELEMENT Middle (#PCDATA)> <!ELEMENT Last (#PCDATA)> <!ELEMENT Age (#PCDATA)> <xs:schema xmlns:xs="http:///xmlschema"> <xs:element name="person"> <xs:complextype> <xs:sequence> <xs:element name="first type="xs:string"/> <xs:element name="middle type="xs:string minoccurs="0"/> <xs:element name="last type="xs:string"/> <xs:element name="age type="xs:integer"/> </xs:sequence> </xs:complextype> </xs:element> </xs:schema> 8
XSDs vs. DTDs XML Schema: Limitações <!ELEMENT Product (Model, Dealer+, Price?)> <!ELEMENT Model (#PCDATA)> <!ELEMENT Dealer (#PCDATA)> <!ELEMENT Price (#PCDATA)> <complextype name=product> <element name= model type= string occurs= REQUIRED /> <element name= dealer occurs= ONEORMORE /> <simpletype> <restriction base= string > <enumeration value= Boils Electronics /> <enumeration value= Nextbest Buy /> <enumeration value= Ed s Mini Mart /> </restriction base> </simpletype> <element name= price type= decimal > <mininclusive value= 0 /> <maxinclusive value= 1000 /> </complextype> XSDs não são definidas para consumo humano! São extremamente verbosas Devem ser geradas automaticamente e processadas por programas (parsers) A especificação XML Schema é bastante extensa contendo centenas de páginas Declaração de componentes não é ortogonal Diversas maneiras de se declarar elementos e atributos Diferentes maneiras de se utilizar namespaces XML Schema: Componentes Tipos Simples e Complexos Definições de Tipo (Type) <simpletype> <complextype> <element> <group> <all> <choice> <sequence> <attribute> <attributegroup> Declaração de Elemento (Element) <element> <simpletype> <complextype> Declaração de Atributos (Attribute) <attribute> <simpletype> Definição de Grupos de Atributos (Attribute Group) <attributegroup> <attribute> Declaração de Notações (Notation) <notation> Anotações (Annotations) <annotation> <appinfo> <documentation> Tipos simples Elementos que contêm apenas texto Sem elementos filhos e sem atributos Podem representar dados numéricos, datas, URLs, etc. <xs:element name= sobrenome" type="xs:string"/> <xs:element name= idade" type="xs:integer"/> <xs:element name= datanascimento" type="xs:date"/> Tipos complexos Elementos que contêm outros elementos ou atributos <xs:element name="empregado"> <xs:complextype> <xs:sequence> <xs:element name="nome" type="xs:string"/> <xs:element name="sobrenome type="xs:string"/> </xs:sequence> </xs:complextype> </xs:element> 9
Outros Exemplos Estatísticas de Uso dos Construtores <xs:element name="pessoa"> <xs:complextype> <xs:all> <xs:element name="nome" type="xs:string"/> <xs:element name="sobrenome" type="xs:string"/> </xs:all> </xs:complextype> </xs:element> <xs:element name="pessoa"> <xs:complextype> <xs:choice> <xs:element name="empregado"/> <xs:element name="socio"/> </xs:choice> </xs:complextype> </xs:element> <xs:element name="pessoa"> <xs:complextype> <xs:sequence> <xs:element name="nomecompleto" type="xs:string"/> <xs:element name="apelido" type="xs:string" maxoccurs="10" minoccurs="0"/> </xs:sequence> </xs:complextype> </xs:element> Laender, A.H.F.; Moro, M.M.; Nascimento, C.; Martins, P. An X-ray on Web-available XML Schemas. SIGMOD Record, 38(1): 37-42, 2009. Acessórios XML Resumo XPath XML Path Language Padrão W3C que permite a navegação em documentos XML XML Links (XLink) e XML Pointers (XPointer) Permitem a navegação pela Web através de apontadores para posições arbitrárias de documentos XML XML: padrão W3C para troca de dados na Web Motivação: HTML descreve apresentação XML descreve conteúdo Propriedades gerais de um documento XML RDF (Resource Description Framework) Ordem dos elementos é irrelevante Permite a representação de metadados em XML à Web Semâtica Deve ser bem formado XSL extensible Stylesheet Language Permite definir apresentações e transformações para documentos XML XSL = XSLT + XPath + XSL-FO Processadores ( parsers ) para XML: SAX (Simple API for XML) DOM (Document Object Model) Referências devem ser consistentes Deve ser válido em relação a uma DTD XML Schema Recomendação W3C para definição de esquemas (XSDs) para documentos XML XSDs: generalizam as DTDs permitindo maior flexibilidade para definir a estrutura dos documentos 10
Referências Abiteboul, S.; Buneman, P.; Suciu, D. Data on the Web: From Relations to Semistructured Data and XML. Morgan Kaufmann, San Francisco, CA, 2000 (Cap. 3). Extensible Markup Language (XML) 1.0 (Fifth Edition) (W3C Recommendation 26 November 2008) http://www.w3.org/tr/xml Lee, D.; Chu, W.W. Comparative Analysis of Six XML Schema Languages. SIGMOD Record, 29(3): 76-87, 2000. 11