Linguagens e Programação XML / XShema. Paulo Proença

Documentos relacionados
XML Schema (Parte. Vanessa de Paula Braganholo

Dados Semi-Estruturados e XML Vanessa Braganholo. Lista de Exercícios 3 XML Schema

XML: uma introdução prática X100. Helder da Rocha

XML Schema (Parte 2) Vanessa Braganholo

Esquemas para Dados XML

Ficheiro de Reporte Periódico de Pagamentos

XML Schema. Vanessa Braganholo. Curso baseado em mini-cursos apresentados no SBBD. Autores: Carlos Heuser, Carina Dorneles e Vanessa Braganholo

SICADI Layout do Arquivo de Demonstrativo Estatístico Semestral Versão 1.4

Projeto SICADI Módulo Contábil Leiaute do Arquivo de Balancetes Contábeis Versão 1.0

<xs:complextype> <xs:sequence> "unbounded"/> </xs:sequence> </xs:complextype>

Documentos XML 1/20. Exemplo de documento XML:

Projeto SICADI Módulo Contábil Leiaute do Arquivo de Balancetes Contábeis Planificação Contábil Nº 5

Namespaces e Esquemas XML. Namespaces - Motivação

Sumário. XML (extensible Markup Language)

Manual Técnico de Relato Financeiro em XML

Especificação Técnica ACSS

Manual para Integração XML

XML Schema. Vanessa de Paula Braganholo ftp://metropole/pub/curso/xml/index.html. Janeiro de XML Schema

extensible Markup Language <XML/> XML XML XML vs. HTML Evolução

- MANUAL DE ORIENTAÇÃO - Módulo Veículos: Transmissão em Lote de Comunicações de Transferência de Propriedade

XML: uma introdução prática X100. Helder da Rocha

Série Desenvolvimento de Sistemas. Curso de XML. Conceito básicos, XML Schema, Namespaces, DOM/SAX, XPath, XSLT, XLink e XPointer.

Desenvolvimento de Aplicações XML. Wamberg Oliveira, Msc, PMP, COBIT-F Instrutor

XML para transferência de dados Estrutura hierárquica do XML DTDs e XML Schema Consultas de documentos XML: XPath e XQuery Transformação de

XML Schema. Um XML schema descreve a estrutura de um documento XML.

XML (extensible Markup Language)

Roteiro para Transmissão Ambiente de Testes da Guias Online

SIOE-E: WebService público DGAEP

Histórico de Revisões

definição e composição de esquemas instâncias documentação

DSI/AOT SFA ANLS. Estrutura de Ficheiro. Serviços e Fundos Autónomos. Francisco Costeira Não classificado Versão 1.

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) XML Origens. HTML Problemas

Uma Proposta de Mapeamento do Modelo XML Schema para o Modelo Relacional

Adenda Técnica :: LCPA :: Manual Técnico XML

Manual do Desenvolvedor. Versão 2.7

Crislane Spricigo da Silva

PROTÓTIPO DE PADRÃO DE COMUNICAÇÃO E ARMAZENAMENTO DE DADOS CONTÁBEIS USANDO XML

Informática PowerCenter (Versão 9.0.1) Guia XML

Orientações Técnicas para o desenvolvimento da funcionalidade Transmissão em Lote do SISCOSERV (Módulos Venda e Aquisição)

Computação Orientada aos Serviços. Introdução Semestre de Inverno 11/12

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Número: Nome:

Banco de Dados. Gerenciamento de Dados e Informação Fernando Fonseca, Ana Carolina Salgado & Robson Fidalgo

INSTITUTO SUPERIOR TÉCNICO Gestão e Tratamento de Informação

Instrução n.º 6/2016/SRIJ/JO, de 18 de Novembro - Instruções para reporte de eventos em apostas desportivas

O Documento Único Automóvel

No âmbito do respetivo procedimento de consulta regulamentar foram recebidos contributos dos vários interessados que se pronunciaram.

ANEXO 1. Informação Técnica para entidades exploradoras de jogo online com Liquidez Partilhada

MANUAL TÉCNICO DE MENSAGEM

Diagramas Sintáticos

Tecnologias Java para Implementação de NF e Edilmar Alves Novembro/2008 edilmaralves@intersite.com.br

PEDRO FILIPE DE JESUS VIEIRA MARQUES TROCA DE INFORMAÇÃO DE NEGÓCIO PARA NEGÓCIO - DO EDI AO XML/EDI E EBXML UNIVERSIDADE FERNANDO PESSOA

Documento de Regras para Webservice SIGAF

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

Algoritmos - 2. Alexandre Diehl. Departamento de Física - UFPel

Métodos Formais. Notação Z - Revisão

Variável. Expressões. Atribuição. Tipos básicos Declaração. Aritméticas Lógicas. Professor Leandro Augusto Frata Fernandes

Web Services utilizando JAX-WS

DEFINIÇÃO DE ONTOLOGIAS EM SOFIA2

Soluções de integração: SOA, web services e REST + XML/XSD

Guia de Bolso HTML e XHTML

Keli Cristina Manini Susane Schmidt. Uma Ferramenta para Geração de Esquemas XML a partir de Documentos XML

MANUAL DE CARGA DA CENTRAL DE INFORMAÇÕES DO REGISTRO CIVIL NACIONAL CRC NACIONAL. Provimento nº 38/2014 e 46/2015 Conselho Nacional de Justiça (CNJ)

XML-Schema e Modelo de Dados em SOA

INTEGRAÇÃO COM A S_LINE Como Configurar o seu Sistema

Projeto de Regulamento que define os Requisitos Técnicos do Sistema Técnico do Jogo Online. - Liquidez Partilhada -

DTD. Vanessa Braganholo.

AULA TEÓRICA 3 Tema 2. Introdução a programação em Java (JVM, JDK)

Conceito de Campos e Tabelas

Informática Parte 22 Prof. Márcio Hunecke

Série Rações Semanais XML Rogério Araújo

INTRODUÇÃO À COMPUTAÇÃO - EPET006 -

Algoritmos Lógica e Programação Prof. Me. Adelson Felipe Dias Nogueira

Noções de algoritmos - Aula 1

Mapeamento de Definições XML Schema para SQL:1999

Manual de Integração com o SIASG (XML) Módulo: SISPP Transação: Resultado de Licitação

Linguagem de Programação

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL

XDocValidator: Uma Interface Gráfica Para Atualização e Validação Incremental de Documentos XML

Programação para Internet I 4. XML. Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE DEPARTAMENTO DE INFORMÁTICA E MATEMÁTICA APLICADA. DIM0320 Algoritmos e Programação de Computadores

XML Schema XPath 2.0 XSLT 2.0 XQuery...

CONTEÚDO PROGRAMÁTICO

The role of marking languages in Information Science

Algoritmos. Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi

CARLOS EDUARDO GESSER UMA ABORDAGEM PARA A INTEGRAÇÃO DINÂMICA DE SERVIÇOS WEB EM PORTAIS

Algoritmo e Programação Matemática

CFAC: Programação em FORTRAN - I

Programação em FORTRAN - I. João Manuel R. S. Tavares

Web de hoje (2.0) Porquê WEB 2.0?

CATÁLOGO DE APLICAÇÕES EDI XML - Importação de Pedidos via XML

EntryPoint LiNe. Manual do Administrador

Projeto Nota Fiscal Eletrônica

Ciência da Computação. Prof. Dr. Leandro Alves Neves Prof. Dr. Adriano M. Cansian

Fabiana Frata Furlan Peres. Uma Proposta de Mapeamento do Modelo de Banco de Dados Orientado a Objetos para o Modelo XML Schema

Classes e Objetos. Sintaxe de classe em Java

Transcrição:

Linguagens e Programação XML / XShema

Estrutura XML Elementos <ano>1965</ano> <anotação de inicio>conteúdo</anotação de fim> Um elemento pode: conter apenas texto ser vazio (tem apenas atributos) conter apenas subelementos conter texto e/ou subelementos <pessoa id="234"> O Senhor <nome>carlos Tavares</nome> <data-nascimento> nasceu no ano de <ano>1975</ano> (...)

Estrutura XML Regras para o nome de um elemento: O primeiro carácter deverá ser uma letra, um sinal de underscore ou um sinal de dois pontos; Os caracteres seguintes podem ser letras, dígitos, underscores, hífens, pontos e dois pontos; O espaço não pode ser utilizado no nome de um elemento Os caracteres < e > são reservados para as anotações

Estrutura XML Atributos <pessoa id="234">... Definem-se na anotação de início de um elemento Definido por um par nome="valor" Valor do atributo colocado sempre entre "" <data-nascimento ano="1975" mes="10" dia="3" />

Estrutura XML Caracteres especiais Referência a entidades pré-definidas < < > > & & " " &apos; válido para mês >0 e mês <13 Referência a caracteres unicode &#decimal ou &#xhexadecimal ß<½ ß<½

Documento XML bem formado Existe um e um só elemento que engloba todos os outros elemento raiz A anotações de abertura (<xpto>) correspondem anotações de fecho (</xpto>) Um elemento pode ser vazio obrigando a usar o caracter '/' na marca de abertura <xpto/> Existe distinção entre maiúsculas e minúsculas nos nomes dos elementos Os elementos têm de ser encaixados corretamente. Os valores dos atributos têm de estar entre aspas. Para além disso: O documento deve começar com a declaração XML <?xml version="1.0" encoding="iso-8859-1"?>

Propostas de Exercícios 1. Represente em XML a sua turma prática de turma2dx.xml <?xml version="1.0 encoding="iso-8859-1"?> <Turma Id="2DX"> <Professor Sigla="PRP"> <Nome>Paulo Rogério Soares Proença</Nome> <Email>prp@isep.ipp.pt</Email> <Gab>B416</Gab> </Professor> <Alunos> <Aluno Num="1020883 > <Nome>GLADYS JESSE BÉLIER CARNEIRO</Nome> <Email>i020883@dei.isep.ipp.pt</Email> </Aluno> <Aluno Num="1050533 > <Nome>PAULO JORGE ALMEIDA DA SILVA MENDES</Nome> <Email>1050533@isep.ipp.pt</Email> </Aluno> </Alunos> <Horario> <Aula Tipo="T" dia="terça-feira" hora="13:10" duracao="50" sala="b303"/> <Aula Tipo="TP" dia="terça-feira" hora="16:40" duracao="80" sala="b303"/> <Aula Tipo="PL" dia="quinta-feira" hora="14:10" duracao="110" sala="b306"/> <Aula Tipo="PL" dia="sexta-feira" hora="10:10" duracao="110" sala="b309"/> </Horario> </Turma>

Propostas de Exercícios 2. Construa um ficheiro XML bem formado, que represente a monarquia em Portugal e que obedeça à seguinte estrutura Referência útil: http://www.casarealportuguesa.org/dynamicdata/cronologia.asp

Propostas de Exercícios 2. ReisPortugal.xml <?xml version="1.0" encoding="iso-8859-1"?> <ReisPortugal> <Dinastia nome="primeira Dinastia - de Borgonha ou Afonsina"> <Rei Cognome="O Lavrador"> <Nome>Dom Dinis I</Nome> <Reinado AnoInicio="1279" AnoFim="1325"/> </Rei> <Rei Cognome="O Povoador"> <Nome>Dom Sancho I</Nome> <Reinado AnoInicio="1185" AnoFim="1211"/> </Rei> </Dinastia> </ReisPortugal>

XML namespace Problema: nomes iguais para elementos com semânticas muito diferente <titulo>xml in a Nutshell</titulo> <titulo>professor</titulo> Necessidade de qualificar claramente os nomes dos elementos e atributos <livro:titulo>xml in a Nutshell</livro:titulo> <pessoa:titulo>professor</pessoa:titulo> XML namespace é uma coleção de nomes identificados por um URI (Uniform Resource Identifier) que permitem associar um prefixo ao nome do elemento

XML namespace Criação de um namespace Atributo xmlns O valor do atributo é um URI com o objetivo de ser um identificador único O valor do atributo não é um endereço físico de um recurso xmlns:pes="http://xml.dei.isep.ipp.pt/pessoas" O prefixo identificativo do namespace qualifica o elemento <pes:nome>antónio José</pes:nome>

XML namespace Os namespace podem ser declarados localmente a um elemento <dt:data xmlns:dt="http://xml.isep.pt/datas"> <dt:ano>1965</dt:ano> <dt:mes>10</dt:mes> <dt:dia>3</dt:dia> </dt:data> A declaração pode ser feita sem explicitar um prefixo - namespace por omissão <pessoas xmlns="http://xml.isep.pt/pessoas">

XML Schema É um documento XML válido que especifica as regras para a validação de outros documentos XML. Define: Os elementos e atributos que podem existir no documento A ordem e número dos elementos filhos Tipos de dados para os elementos e atributos Um XML Schema define uma classe de documentos. Os documentos XML que referenciam esse XML Schema são instâncias dessa classe

XML Schema Documento XML <pessoa id="123"> <nome>antonio José Silva</nome> <data-nascimento> <ano>1965</ano> <mes>10</mes> <dia>3</dia> </data-nascimento> <cc>4025527-zz2</cc> </pessoa> XML Schema nome só pode ter letras data-nascimento contem 3 elementos: ano, mes e dia mes é um numero inteiro entre 1 e 12 inclusive cc é formado por 7 dígitos, um simbolo, duas letras e um dígito Erros de Conformidade XML Schema Validator Informação Validada

Exemplo de um XML Schema exemplo.xsd <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema" targetnamespace="http://your_namespace" elementformdefault="qualified"> <xsd:element name="pessoas"> <xsd:complextype> <xsd:sequence> <xsd:element name="pessoa" maxoccurs="unbounded"> <xsd:complextype> <xsd:sequence> <xsd:element name="nome" type="xsd:string"/> <xsd:element name="data-nascimento"> <xsd:complextype> <xsd:sequence> <xsd:element name="ano" type="xsd:int"/> <xsd:element name="mes" type="xsd:int"/> <xsd:element name="dia" type="xsd:int"/> </xsd:sequence> </xsd:complextype> </xsd:element> <xsd:element name="bi" type="xsd:string"/> </xsd:sequence> <xsd:attribute name="id" type="xsd:string" use="required"/> </xsd:complextype> </xsd:element> </xsd:sequence> </xsd:complextype> </xsd:element> </xsd:schema>

XML Schema Estrutura de um XML Schema Declaração XML Elemento raiz <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema" targetnamespace="http://your_namespace" elementformdefault="qualified"> namespace Prefixo xsd <xsd:element... <! definição de elementos e atributos -->... </xsd:schema>

Namespace XML Schema <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema"> Especifica as entidades utilizadas na definição de um XML Schema: element schema simpletype Trata-se do XML Schema Schema O URI é http://www.w3.org/2001/xmlschema O prefixo por convenção é xsd:

XML Schema Definição de elementos Elemento xsd:element O atributo name especifica o nome do elemento no XML O atributo type define o tipo de dados do elemento <xsd:element name="montante" type="xsd:float"> <montante>123.56</montante>

XML Schema tipos simples Tipos simples primitivos <xsd:element name="ano" type="xsd:int"/> Tipos de dados para o conteúdo textual de um elemento ou atributo string float date (ccyy-mm-dd) anyuri decimal time (hh:mm:ss.sss)... Hierarquia de tipos de dados primitivos anysimpletype decimal integer long...

XML Schema Tipos simples derivados Derivação por restrição, lista ou união Elemento xsd:simpletype xsd:restriction define restrições adicionais aos valores do elemento <xsd:element name="percentagem"> <xsd:simpletype > <xsd:restriction base="xsd:int"> <xsd:mininclusive value="0" /> <xsd:maxinclusive value="100" /> </xsd:restriction> </xsd:simpletype> </xsd:element>

XML Schema Operadores de restrição facets xsd:mininclusive - xsd:maxinclusive - xsd:length tamanho fixo (string, listas) xsd:totaldigits o numero máximo de dígitos xsd:pattern expressão regular xsd:fractiondigits - número de casas decimais. enumeration valores numa enumeração

XML Schema Novos tipos de dados simples <xsd:simpletype name="toperador"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="91" /> <xsd:enumeration value="93" /> <xsd:enumeration value="96" /> </xsd:restriction> </xsd:simpletype > Atributo name de xsd:simpletype Usados para definir tipos de dados de elementos <xsd:element name="indicativo" type="toperador">

XML Schema Exemplos de restrições xsd:length <xsd:simpletype name="tcodigo"> <xsd:restriction base="xsd:string"> <xsd:length value="7" /> </xsd:restriction> </xsd:simpletype> xsd:pattern <xsd:simpletype name="tbi"> <xsd:restriction base="xsd:string"> <xsd:pattern value="[0-9]{7}"/> </xsd:restriction> </xsd:simpletype>

XML Schema tipo composto Os elementos de tipo composto podem conter elementos filhos e atributos Um elemento com atributos é sempre do tipo composto Declarado usando o elemento complextype <xsd:element name="data-nascimento" > <xsd:complextype> <xsd:sequence> <xsd:element name="ano" type="xsd:int" /> <xsd:element name="mes" type="xsd:int" /> <xsd:element name="dia" type="xsd:int" /> </xsd:sequence> </xsd:complextype> </xsd:element>

XML Schema Composição dos subelementos num tipo composto sequence especifica uma sequência com uma ordem fixa choice especifica uma escolha de um elemento, entre os elementos declarados all elementos não têm ordem fixa

XML Schema Restrições de ocorrência Atributos minoccurs e maxoccurs Usados nos operadores de composição ou na declaração de elementos <xsd:element name="grupo" > <xsd:complextype> <xsd:sequence maxoccurs="2" > <element name="aluno" type="taluno"> <xsd:element name="autor" type="xsd:string" minoccurs="1" maxoccurs="unbounded" />

Declaração de atributos Elemento xsd:attribute O atributo name especifica o nome e o atributo type o tipo de dados o tipo de dados é do tipo simples (primitivo ou derivado) declaração é feita dentro do elemento complextype depois dos elementos Atributo use especifica a ocorrência required - o atributo é obrigatório optional - o atributo é opcional (valor por omissão) prohibited - o atributo deve ser omitido

Declaração de atributos Os atributos podem ter um valor atribuído por omissão que é assumido quando não for especificado um outro qualquer valor. <xsd:atribute name="lang" type="xsd:string" default="pt-pt"> É possível atribuir um valor fixo ao atributo que não pode ser, posteriormente, alterado. <xsd:atribute name="lang" type="xsd:string" fixed="pt-pt">

Def p/ elem. simples com atributo Elemento XML de conteúdo simples e com atributo <telefone operador="tmn"> 3457654 </telefone> Definição XSchema <xsd:element name="telefone"> <xsd:complextype> <xsd:simplecontent> <xsd:extension base="xs:string"> <xsd:attribute name="operador" use="required" type="xs:string"/> </xsd:extension> </xsd:simplecontent> </xsd:complextype> </xsd:element>

Exemplo Schema com atributos Exemplo.xsd <xsd:element name="pessoa" maxoccurs="unbounded" > <xsd:complextype> <xsd:sequence> <xsd:element name="nome" type="xsd:string" /> <xsd:element name="dnascimento" type="xsd:date" /> </xsd:sequence> <xsd:attribute name="id" type="xsd:string" use="required" /> </xsd:complextype> </xsd:element> Exemplo.xml <pessoa id="p123"> <nome>antónio José Silva</nome> <dnascimento>2004-07-12</dnascimento> </pessoa>

Exemplo Bem Estruturado <?xml version="1.0"?> <TotoBola concurso="21/2009"> <LinhaJogo> <Jogo>Porto - Braga</Jogo> Elemento raiz do XML Schema <Aposta Escolha="1"/> <?xml<aposta version="1.0"?> Escolha="X"/> <xsd:schema </LinhaJogo> xmlns:xsd="http://www.w3.org/2001/xmlschema"> <LinhaJogo> </xsd:schema> <Jogo>Benfica - Belenenses</Jogo> <Aposta Escolha="1"/> </LinhaJogo> <LinhaJogo> <Jogo>P.Ferreira - Trofense</Jogo> <Aposta Escolha="1"/> <Aposta Escolha="X"/> <Aposta Escolha="2"/> </LinhaJogo>... </TotoBola>

Exemplo Bem Estruturado <?xml version="1.0"?> <TotoBola concurso="21/2009"> <LinhaJogo> <Jogo>Porto - Braga</Jogo> Definição do elemento raiz do documento XML <Aposta Escolha="1"/> <Aposta Escolha="X"/> <xsd:element </LinhaJogo> name="totobola" type="ttotobola"/> <LinhaJogo> <Jogo>Benfica - Belenenses</Jogo> <Aposta Escolha="1"/> </LinhaJogo> <LinhaJogo> <Jogo>P.Ferreira - Trofense</Jogo> <Aposta Escolha="1"/> <Aposta Escolha="X"/> <Aposta Escolha="2"/> </LinhaJogo>... </TotoBola> <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema"> </xsd:schema >

Exemplo Bem Estruturado <?xml version="1.0"?> <TotoBola concurso="21/2009"> <LinhaJogo> <Jogo>Porto - Braga</Jogo> Definição do tipo complexo Ttotobola <Aposta Escolha="1"/> <xsd:complextype name="ttotobola"> <Aposta Escolha="X"/> </LinhaJogo> <xsd:sequence> <LinhaJogo> <Jogo>Benfica - Belenenses</Jogo> <Aposta Escolha="X"/> <Aposta Escolha="2"/> </LinhaJogo>... </TotoBola> <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema"> <xsd:element name="linhajogo" type="tlj" <Aposta Escolha="1"/> minoccurs="13" maxoccurs="13"/> </xsd:sequence> </LinhaJogo> <xsd:attribute <LinhaJogo> name="concurso" type="tconcurso" use="required"/> <Jogo>P.Ferreira - Trofense</Jogo> </xsd:complextype> <Aposta Escolha="1"/> <xsd:element name="totobola" type="ttotobola"/> </xsd:schema >

Exemplo Bem Estruturado <?xml version="1.0"?> <TotoBola concurso="21/2009"> <LinhaJogo> <Jogo>Porto - Braga</Jogo> Definição do tipo complexo TLJ <Aposta Escolha="1"/> <xsd:complextype name="tlj"> <Aposta Escolha="X"/> </LinhaJogo> <xsd:sequence> <LinhaJogo> <xsd:element <Jogo>Benfica - name="jogo" Belenenses</Jogo> type="xsd:string"/> <xsd:element <Aposta Escolha="1"/> name="aposta" type="taposta" maxoccurs="3"/> </xsd:sequence> </LinhaJogo> <LinhaJogo> </xsd:complextype> <Jogo>P.Ferreira - Trofense</Jogo> <Aposta Escolha="1"/> <Aposta Escolha="X"/> <Aposta Escolha="2"/> </LinhaJogo>... </TotoBola> <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema"> <xsd:complextype name="ttotobola"> <xsd:sequence> <xsd:element name="linhajogo" type="tlj" minoccurs="13" maxoccurs="13"/> </xsd:sequence> <xsd:attribute name="concurso" type="tconcurso" use="required"/> </xsd:complextype> <xsd:element name="totobola" type="ttotobola"/> </xsd:schema >

Exemplo Bem Estruturado <?xml version="1.0"?> <TotoBola concurso="21/2009"> <LinhaJogo> <Jogo>Porto - Braga</Jogo> Definição do tipo complexo Taposta <Aposta Escolha="1"/> <xsd:complextype name="taposta"> <Aposta Escolha="X"/> </LinhaJogo> <xsd:attribute <LinhaJogo> name="escolha" type="tescolha" use="required"/> <Jogo>Benfica - Belenenses</Jogo> </xsd:complextype> <Aposta Escolha="1"/> </LinhaJogo> <LinhaJogo> <Jogo>P.Ferreira - Trofense</Jogo> <Aposta Escolha="1"/> <Aposta Escolha="X"/> <Aposta Escolha="2"/> </LinhaJogo>... </TotoBola> <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema"> <xsd:complextype name="tlj"> <xsd:sequence> <xsd:element name="jogo" type="xsd:string"/> <xsd:element name="aposta" type="taposta" maxoccurs="3"/> </xsd:sequence> </xsd:complextype> <xsd:complextype name="ttotobola"> <xsd:sequence> <xsd:element name="linhajogo" type="tlj" minoccurs="13" maxoccurs="13"/> </xsd:sequence> <xsd:attribute name="concurso" type="tconcurso" use="required"/> </xsd:complextype> <xsd:element name="totobola" type="ttotobola"/> </xsd:schema >

Exemplo Bem Estruturado <?xml version="1.0"?> <TotoBola concurso="21/2009"> <LinhaJogo> <Jogo>Porto - Braga</Jogo> Definição do tipo simples Tconcurso <Aposta Escolha="1"/> <xsd:simpletype name="tconcurso"> <Aposta Escolha="X"/> </LinhaJogo> <xsd:restriction <LinhaJogo> base="xsd:string"> <Jogo>Benfica - Belenenses</Jogo> <xsd:pattern value="[0-9]{2}/[0-9]{4}"/> </xsd:restriction> <Aposta Escolha="1"/> </xsd:simpletype> </LinhaJogo> <LinhaJogo> <Jogo>P.Ferreira - Trofense</Jogo> <Aposta Escolha="1"/> <Aposta Escolha="X"/> <Aposta Escolha="2"/> </LinhaJogo>... </TotoBola> <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema"> <xsd:complextype name="taposta"> <xsd:attribute name="escolha" type="tescolha" use="required"/> </xsd:complextype> <xsd:complextype name="tlj"> <xsd:sequence> <xsd:element name="jogo" type="xsd:string"/> <xsd:element name="aposta" type="taposta" maxoccurs="3"/> </xsd:sequence> </xsd:complextype> <xsd:complextype name="ttotobola"> <xsd:sequence> <xsd:element name="linhajogo" type="tlj" minoccurs="13" maxoccurs="13"/> </xsd:sequence> <xsd:attribute name="concurso" type="tconcurso" use="required"/> </xsd:complextype> <xsd:element name="totobola" type="ttotobola"/> </xsd:schema >

Exemplo Bem Estruturado <?xml version="1.0"?> <TotoBola concurso="21/2009"> <LinhaJogo> <Jogo>Porto - Braga</Jogo> Definição do tipo simples Tescolha <Aposta Escolha="1"/> <xsd:simpletype name="tescolha"> <Aposta Escolha="X"/> </LinhaJogo> <xsd:restriction <LinhaJogo> base="xsd:string"> <xsd:enumeration <Jogo>Benfica - Belenenses</Jogo> value="1"/> <xsd:enumeration <Aposta Escolha="1"/> value="x"/> </LinhaJogo> <xsd:enumeration value="2"/> <LinhaJogo> </xsd:restriction> </xsd:simpletype> <Jogo>P.Ferreira - Trofense</Jogo> <Aposta Escolha="1"/> <Aposta Escolha="X"/> <Aposta Escolha="2"/> </LinhaJogo>... </TotoBola> <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema"> <xsd:simpletype name="tconcurso"> <xsd:restriction base="xsd:string"> <xsd:pattern value="[0-9]{2}/[0-9]{4}"/> </xsd:restriction> </xsd:simpletype> <xsd:complextype name="taposta"> <xsd:attribute name="escolha" type="tescolha" use="required"/> </xsd:complextype> <xsd:complextype name="tlj"> <xsd:sequence> <xsd:element name="jogo" type="xsd:string"/> <xsd:element name="aposta" type="taposta" maxoccurs="3"/> </xsd:sequence> </xsd:complextype> <xsd:complextype name="ttotobola"> <xsd:sequence> <xsd:element name="linhajogo" type="tlj" minoccurs="13" maxoccurs="13"/> </xsd:sequence> <xsd:attribute name="concurso" type="tconcurso" use="required"/> </xsd:complextype> <xsd:element name="totobola" type="ttotobola"/> </xsd:schema >

Exemplo Bem Estruturado <?xml version="1.0"?> <TotoBola concurso="21/2009"> <LinhaJogo> <Jogo>Porto - Braga</Jogo> <Aposta Escolha="1"/> <Aposta Escolha="X"/> </LinhaJogo> <LinhaJogo> <Jogo>Benfica - Belenenses</Jogo> <Aposta Escolha="1"/> </LinhaJogo> <LinhaJogo> <Jogo>P.Ferreira - Trofense</Jogo> <Aposta Escolha="1"/> <Aposta Escolha="X"/> <Aposta Escolha="2"/> </LinhaJogo>... </TotoBola> <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema"> <xsd:simpletype name="tescolha"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="1"/> <xsd:enumeration value="x"/> <xsd:enumeration value="2"/> </xsd:restriction> </xsd:simpletype> <xsd:simpletype name="tconcurso"> <xsd:restriction base="xsd:string"> <xsd:pattern value="[0-9]{2}/[0-9]{4}"/> </xsd:restriction> </xsd:simpletype> <xsd:complextype name="taposta"> <xsd:attribute name="escolha" type="tescolha" use="required"/> </xsd:complextype> <xsd:complextype name="tlj"> <xsd:sequence> <xsd:element name="jogo" type="xsd:string"/> <xsd:element name="aposta" type="taposta" maxoccurs="3"/> </xsd:sequence> </xsd:complextype> <xsd:complextype name="ttotobola"> <xsd:sequence> <xsd:element name="linhajogo" type="tlj" minoccurs="13" maxoccurs="13"/> </xsd:sequence> <xsd:attribute name="concurso" type="tconcurso" use="required"/> </xsd:complextype> <xsd:element name="totobola" type="ttotobola"/> </xsd:schema >

Referenciar um Schema no XML XML Schema Instance Namespaces xmlns:xsi=http://www.w3.org/2001/xmlschema-instance Deve ser referenciado por documentos instância (XML) que usam entidades definidas neste schema como: xsi:schemalocation xsi:nonamespaceschemalocation

Referenciar um Schema no XML Atributo xsi:nonamespaceschemalocation Pessoas.xml <?xml version="1.0" encoding="iso-8859-1"?> <pessoas xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:nonamespaceschemalocation="pessoas.xsd" >... Atributo xsi:schemalocation Pessoas.xml <?xml version="1.0" encoding="iso-8859-1"?> <pessoas xmlns=http://your_namespace xmlns:xsi=http://www.w3.org/2001/xmlschema-instance xsi:schemalocation="http://your_namespace Pessoas.xsd" >... Pessoas.xsd <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema" targetnamespace="http://your_namespace" elementformdefault="qualified">

Propostas de Exercícios 3. Considere o esquema (XML Schema) apresentado na questão 3 da FichaPL6. Elabore um ficheiro XML bem formado que esteja conforme o XML Schema descrito

Propostas de Exercícios 4. Considere extrato XML apresentado na questão 4 da FichaPL6. a) Implemente o tipo de dados TTrack que permita validar a informação relativa ao elemento XML track <xs:complextype name="ttrack"> <xs:sequence> <xs:element name="artist" type="tipoartist"/> <xs:element name="url" type="xs:anyuri"/> <xs:element name="thumbnail" type="xs:anyuri"/> <xs:element name="image" type="xs:anyuri"/> </xs:sequence> <xs:attribute name="name" type="xs:string" use="required"/> <xs:attribute name="count" type="xs:integer" use="required"/> </xs:complextype>

Propostas de Exercícios 4. Considere extrato XML apresentado na questão 4 da FichaPL6. b) Crie o tipo de dados TMbid para validar o código mbid (MusicBrainz Identifier) do artista. Este código obedece á seguinte regra: cxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx onde o X representa um qualquer digito ou letra minúscula. <xs:simpletype name="tmbid"> <xs:restriction base="xs:string"> <xs:pattern value= "c[0-9a-z]{7}-([0-9a-z]{4}-){3}[0-9a-z]{12}"/> </xs:restriction> </xs:simpletype>

Propostas de Exercícios 5. Complete o esquema XSD apresentado definindo os tipos TComputador, TComponentes, e outros que considere necessários, tendo em atenção as restrições definidas no ficheiro XML na questão 5 da FichaPL6. <?xml version="1.0" encoding="utf-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema"> <xsd:element name="sistema" type="tsistema"/> <xsd:complextype name="tsistema"> <xsd:sequence> <xsd:element name="computador" type="tcomputador" /> <xsd:element name="componentes" type="tcomponentes" /> </xsd:sequence> </xsd:complextype> <!--COMPLETAR! --> </xsd:schema>

Propostas de Exercícios 6. Considere a estrutura XML apresentada na questão 6 da FichaPL6. a) Sem utilizar atributos, criar o modelo XML Schema para a estrutura da disciplina b) Validar o documento criado em a)

6. a) Propostas de Exercícios <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema" > (...) <xs:complextype name="taulas"> <xs:sequence> <xs:element name="docente" type="tdocente"/> <xs:element name="data" type="xs:date"/> <xs:element name="sumário" type="tsumario"/> </xs:sequence> </xs:complextype> <xs:complextype name="tdisciplina"> <xs:sequence> <xs:element name="aulas" minoccurs="0" maxoccurs="unbounded" type="taulas"/> </xs:sequence> </xs:complextype> <xs:element name="disciplina" type="tdisciplina"/> </xs:schema>

6. a) Propostas de Exercícios <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema" > <xs:complextype name="tsumario"> <xs:sequence> <xs:element name="codigo" type="xs:int"/> <xs:element name="tipo" type="xs:string"/> <xs:element name="primeirodia" type="xs:date"/> <xs:element name="semana" type="xs:int"/> <xs:element name="conteúdos" type="xs:string"/> </xs:sequence> </xs:complextype> <xs:complextype name="tdocente"> <xs:sequence> <xs:element name="nome" type="xs:string"/> <xs:element name="siglaprof" type="xs:string"/> <xs:element name="sigladep" type="xs:string"/> </xs:sequence> </xs:complextype> (...) </xs:schema>

Propostas de Exercícios 6. Considere a estrutura XML apresentada na questão 6 da FichaPL6. c) Criar um documento XML conforme com o XML Schema definido em a) e que descreva a informação apresentada na alínea c) da questão 6 da FichaPL6 d) Verifique se o documento é bem-formado e) Verifique se está conforme com o XML Schema definido em a)

Propostas de Exercícios 6. Considere a estrutura XML apresentada na questão 6 da FichaPL6. f) Criar um tipo enumeração para o tipo de aula, com os valores: T, TP, PL, OT; e outra com as siglas dos departamentos. g) Acrescentar um tipo para o género do docente, recorrendo a uma expressão regular. h) Criar um tipo para limitar o valor da semana entre 1 e 16. i) Alargar o esquema a várias disciplinas e atualizar o documento para o novo esquema. No final validar o documento.

6. f) Propostas de Exercícios <xs:simpletype name="tsdep"> <xs:restriction base="xs:string"> <xs:enumeration value="dei"/> <xs:enumeration value="dee"/> <xs:enumeration value="dem"/> <xs:enumeration value="dec"/> <xs:enumeration value="defi"/> <xs:enumeration value="deq"/> </xs:restriction> </xs:simpletype> <xs:simpletype name="ttaula"> <xs:restriction base="xs:string"> <xs:enumeration value="t"/> <xs:enumeration value="tp"/> <xs:enumeration value="pl"/> <xs:enumeration value="ot"/> </xs:restriction> </xs:simpletype>

6. g) Propostas de Exercícios <xs:simpletype name="tgenero"> <xs:restriction base="xs:string"> <xs:pattern value="(m F)"/> </xs:restriction> </xs:simpletype> 7. h) <xs:simpletype name="tsemana"> <xs:restriction base="xs:int"> <xs:mininclusive value="1"/> <xs:maxinclusive value="16"/> </xs:restriction> </xs:simpletype>

Linguagens e Programação XML / XSchema