Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouEsther Lizardo Alterado mais de 9 anos atrás
1
Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação
2
Namespaces
3
Extensibilidade do XML Dados XML são usados para intercâmbio entre organizações XML é extensível XML permite autores de documentos criarem suas próprias tags, definindo a origem dos elementos, atributos e tipos. Em um ambiente distribuído os documentos XML precisam ser gerenciados
4
Problemas da extensibilidade do XML Exemplo: Uma lista dos filmes que estão em cartaz
5
Estendendo um documento existente A lista de filmes pode ser estendida com um novo elemento que corresponde a avaliação da qualidade do filme
6
Estendendo um documento existente Documentos existentes são estendidos para acrescentar novas informações Se a extensão não for gerenciada corretamente podem surgir problemas!
7
Extensões incompátiveis Exemplo: A lista de filmes pode ser estendida com um novo elemento que corresponde a avaliação do filme do ponto de vista da censura
8
Extensões incompátiveis As duas extensões são incompatíveis! Ao combinar as duas avaliações em uma única listagem podem surgir problemas Combinando as duas listas
9
Extensões incompátiveis Qual o problema? Um software para filtrar apenas os filmes inofensivos ficaria perdido Como distinguir os dois tags de avaliação? Qual a solução? Renomear os elementos
10
Renomeando os elementos Renomeando os elementos relativos as avaliações (avaliação de qualidade e avaliação de censura)
11
Solução Não há como impedir que alguém estenda um documento sem que este fique incompatível com outros documentos Qual a solução? Namespaces Não limita a facilidade de extensão da XML, mas permite gerenciá-la. São uma solução para gerenciar a extensibilidade de XML Namespace pode ser definido como um mecanismo para identificar os elementos e atributos de XML
12
Usando namespaces
13
Solução do namespace Dois nomes diferentes são declarados para os elementos avaliação Um prefixo é incluído antes do nome de cada elemento 4 estrelas O prefixo identifica o tipo de avaliação A declaração associa um prefixo a uma URI
14
Declaração de namespaces É feita por meio de atributos utilizando-se o prefixo xmlns seguido pelo prefixo Exemplo: <filmes xmlns:qua = http://cinemas.com/1.0 xmlns:cen = http://filme.censura.com/1.0 xmlns = http://filmes.com/1.0 >
15
Resumindo Os namespaces XML são um mecanismo para identificar de modo não ambíguo quem desenvolveu determinado elemento São importantes em situações onde existem elementos com mesmo nome representando diferentes conceitos
16
Nome do Namespace É o URI e não o prefixo! Dois elementos com prefixos diferentes, mas associados ao mesmo URI são considerados idênticos
17
Declaração de Namespace Associa um sistema de nomeação global (URIs) ao nome dos elementos URIs são usados para garantir a exclusividade dos nomes URIs devem ser criados com base no seu próprio nome e domínio O papel do URI é puramente identificar unicamente os elemento ou atributos Uma URI identifica o proprietário do namespace, por isso não é aconselhável usar o domínio de outras pessoas / organizações
18
Atributos podem ter Namespaces Tanto atributos quanto elementos podem ter namespaces
19
Escopo dos Namespaces O namespace é válido Para o elemento onde está declarado Em todos os elementos dentro de seu conteúdo
20
Default Namespace Se a maior parte dos elementos pertencem ao mesmo namespace, não precisa usar prefixo para cada elemento. Pode-se definir um namespace default que será aplicado para todos os elementos e atributos que não tiverem prefixo. A sintaxe é xmlns=namespace
21
Default namespace <employees xmlns="http://www.devxpert.com/schemas/hr/" xmlns:py="http://www.devxpert.com/schemas/payroll/"> 49982 Bart Simpson 2000-07-04 4000765.00 3980765.27 12345 Hugo Simpson 2000-05-29 82000.00 16567.87
22
Default namespace Default namespace é aplicado no elemento que é definido e em todos os seus descendentes. Se um desses descendentes usar outro default namespace a sua declaração sobrescreve o anterior tornando-se o default namespace para aquele elemento e todos os seus descendentes.
23
Default namespace <employees xmlns="http://www.devxpert.com/schemas/hr/" xmlns:py="http://www.devxpert.com/schemas/payroll/"> 49982 Bart Simpson 2000-07-04 4000765.00 3980765.27
24
Default namespace (Default namespace flows into the child - there is no prefix, so it uses the default namespace) (No Default namespace, but ns0 maps to uri:my- namespace)
25
Default namespace (No Default namespace, but ns0 and ns1 both map to uri:my-namespace and hence have identical meaning) (ns0 is defined on the parent, but we then set a default namespace for this node - and any children, if it had any)
26
XML Schema
27
Validação de documentos XML Recordando: para validar um documento XML Um documento é válido com relação a um dado esquema XML se obdece este esquema Documento XML Esquema XML Parser Documento XML válido Documento XML inválido
28
Linguagens de Esquemas XML DTD – Document Type Definition XML Schema
29
Problemas dos DTDs Sintaxe não XML documento XML usando uma sintaxe e o DTD usando outra sintaxe Não tem tipos de dados, em particular para o conteúdo dos elementos capacidade limitada de tipos de dados DTDs suportam um conjunto muito limitado de tipos de dados. Não podemos dizer o elemento deve ser entre 240 e 3000,00 Desejo de se ter um conjunto de tipos de dados compatíveis com aqueles encontrados nos banco de dados Só é marginalmente compatível com namespaces
30
XML Schema Da mesma forma que a DTD Utilizado para descrever a estrutura de um documento XML XML Schemas são mais poderosos que DTDs: Tipos de dados melhor especificado +41 tipos e a capacidade de se criar tipos de dados definidos pelo usuário Escritos em XML (mesma linguagem dos documentos) Podem expressar conjuntos (sets): um elemento filho pode estar em qualquer ordem Podem especificar unicidade (chaves) Uso de técnicas de orientação a objetos Número de elementos (cardinalidade) Se um elemento é vazio ou pode incluir texto
31
XML Schema como sucessor da DTD Algumas razões para isso: É extensível Estender/derivar tipos a partir já existentes É mais rico e mais útil do que DTD É escrita em XML Suporta tipos de dados Suporta namespaces Define valores default e fixos para atributos e elementos É 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
32
Tipos Suporte a tipos facilita Descrever o que é ou não permitido no conteúdo de um elemento Validar se um dado está correto Trabalhar com dados vindos de um banco de dados Definir facetas (restrições) aos dados Definir padrões de dados (ou formatos) Converter dados de tipos diferentes Todos os elementos são associados a tipos!!
33
Sintaxe Facilita... Não é necessário aprender outra linguagem Mesmo editor de texto Mesmo parser DOM SAX O esquema pode ser alterado usando XSLT
34
Declaração Ao contrário de DTD Em XMLSchema Todas as declarações (elementos, atributos, etc.) são feitas externamente ao documento XML Não existe declaração interna (ou subconjunto interno) No documento.xsd
35
Declaração DTD XML Schema
36
Declaração de chamada............ Chamada da DTD <artigo xmlns="http://www.my.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=c:/artigo.xsd">............ Chamada do XML Schema
37
Estrutura de um arquivo XML Schema Elemento root: Extensao do arquivo:.xsd
38
Alguns atributos de <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema targetNamespace="http:// www.domain.com " elementFormDefault="qualified"> <!– definições de elementos e atributos Define o namespace do XML Schema
39
Alguns atributos de <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema targetNamespace="http://www.domain.com" elementFormDefault="qualified"> <!– definições de elementos e atributos Especifica o namespace dos nomes dados aos elementos e atributos do esquema sendo definido
40
Alguns atributos de <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema targetNamespace="http://www.domain.com " elementFormDefault="qualified"> <!– definições de elementos e atributos Quaisquer elementos usados em instancias XML (docs.xml) devem ser qualificados pelo namespace, ou seja, devem possuir o prefixo do namespace
41
Definição de Elemento Uso da tag Cria um elemento Através do atributo name Associa o elemento a um tipo Através do atributo type
42
Definição de Atributo Uso da tag Cria um elemento Através do atributo name Associa o elemento a um tipo Através do atributo type
43
Exemplo XML: joaozinho@san.uri.br undisclosed-recipients@... reuniao Não esquecam da reuniao de amanha
44
Exemplo XML Schema: Faltou o elemento email!!!!
45
Tipos Complexos Descreve estruturas complexas, com subelementos e atributos
46
Definição de Elemento complexo Definição de elemento complexo: Uso de Sintaxe 1:
47
Definição de Elemento Definição de elemento complexo: Uso de Sintaxe 2:
48
Definição de atributo de um tipo complexo O atributo deve ser colocado DEPOIS do sequence
49
Declarações locais vs. globais Pode-se declarar tipos, elementos e atributos globais ou locais Declarações globais: Declarados como filhos do elemento Declarações podem ser reusadas Declarações locais Não são declarados como filhos de
50
Exemplo de declaração local Tipo pode ser usado apenas para o elemento endereço Tipo e elementos podem ser usados apenas para o elemento funcionário
51
Exemplo de declaração global Tipo pode ser usado apenas para o elemento endereço Tipo pode ser usado como tipo de outros elementos Elemento pode usado como conteúdo de outros elementos
52
Referência Pode-se referenciar um elemento, ou atributo, que tenha sido declarado anteriormente Elemento, ou atributo, referenciado deve ser global declarado no nível logo abaixo de schema …
53
Referência …
54
complexType Define restrições para o modelo de conteúdo de um determinado elemento Especificação de cardinalidade xs:minOccurs xs:maxOccurs Delimitadores de grupos de elementos
55
Cardinalidade xs:minOccurs número mínimo de vezes que um subelemento pode aparecer. Default = 1 xs:maxOccurs número máximo de vezes que um subelemento pode aparecer. Default = 1. Max = unbounded
56
Cardinalidade <xs:element name=quantidade" type=xs:integer minOccurs="0 maxOccurs=unbounded/> <xs:element name=classificacao" type=tClassific minOccurs="0 />
57
Elementos mistos Uso do atributo mixed No XML: esta é uma secao com texto e elementos este eh um paragrafo destro da secao e esta eh uma referencia dentro da secao
58
Exercício Construa um XMLSchema, de tal forma que o seguinte documento XML possa ser validado: JOAQUIM 00.000.000/0001-00 esta observação é sobre clientes especiais caneta azul 100 2
59
Valores para elementos <xs:element name=email" type=xs:string default=jcr@di.uminho.pt"/> Valor por omissão <xs:element name=supervisor" type=xs:string fixed=José Carlos Ramalho"/> Valor fixo
60
Delimitadores de grupo subelementos devem aparecer na instância XML na mesma ordem em que foram declarados no esquema somente um dos elementos declarados no grupo pode aparecer na instância os elementos do grupo podem aparecer uma vez JUNTOS ou nenhuma vez e podem aparecer em qualquer ordem
61
Sequence - exemplo No XML Schema: Na instancia XML: Osvaldo da Silva 1212121 OdaS@abc.def.br
62
Sequence – comparando com DTD No XML Schema: Na DTD:
63
Choice - exemplo No XML Schema: Na instancia XML: Projeto de Banco de dados 989898989 SQL Magazine 9
64
Choice – comparando com a DTD No XML Schema: Na DTD:
65
All - exemplo No XML Schema: Na instancia XML: Ana Clara ana@server.domain Universidade XYZ Todos juntos ou nada Sem restrição de ordem
66
All – comparando com a DTD No XML Schema: Na DTD:
67
Elementos vazios Declarar elemento somente com atributo: Instancia XML:
68
Derivação de Tipos Simples Tipos simples Derivados de tipos simples através de restrição. Processo: Um tipo simples é usado com base sobre ele são aplicadas facetas ou expressões regulares.
69
Restrições ou facetas length: define o comprimento de um tipo de dados minLength: define o comprimento mínimo de um tipo de dados maxLength: define o comprimento máximo de um tipo de dados pattern: define a expressão regular (Regular Expressions) a ser utilizada na validação do tipo enumaration: limita os valores possíveis de um tipo de dados a um conjunto previamente especificado whiteSpace: define como devem ser tratados os espaços em branco.
70
Restrições ou facetas minInclusive: limite mínimo considerando o valor especificado minExclusive: limite mínimo desconsiderando o valor especificado maxInclusive: limite máximo considerando o valor especificado maxExclusive: limite máximo desconsiderando o valor especificado totalDigits: número máximo de dígitos considerando a parte inteira e a parte decimal fractionDigits: número máximo de casas decimais
71
Facetas Faceta exclusive Limita um tipo simples a valores mínimo e máximo
72
Facetas A faceta enumeration Limita um tipo simples a um conjunto de valores distintos
73
Facetas Comparando o enumeration no XMLSchema com a DTD: ** XMLSchema ** DTD (só é possível delimitar valores para atributos) <!ATTLIST figura tipo NOTATION (jpeg|gif|bmp|tiff|wmf)>
74
Facetas Faceta pattern Possibilita a criação de máscaras para os valores....
75
Facetas Facetas fractionDigits, minInclusive e maxInclusive Possibilita definir como manipular tipos de dados como decimal ou float por exemplo Exemplo: Construção de um tipo número de filhos Nesse caso precisamos utilizar como tipo de dados base o tipo decimal, eliminar a quantidade de casas decimais, permitir apenas números positivos (incluindo o zero) e opcionalmente determinar um valor máximo (se seguirmos o Guinness Book esse valor é 900). O fragmento XML abaixo define uma das possibilidades de como esse tipo pode ser criado:
76
Facetas Facetas minLength, maxLength e whiteSpace Possibilita definir como manipular tipos de dados como string por exemplo Exemplo: Construção de um tipo de dados Nome Admitindo-se que o tipo de dados nome seja um texto com comprimento mínimo de 4 caractéres e máximo de 100 caractéres e que os espaços em branco duplicados devam ser substituídos por um único espaço em branco (André do Nascimento por André do Nascimento), pode-se construir o tipo de dados nome da seguinte forma:
77
Construção através de extensão por união Construir tipo por união significa dizer que o tipo construído assumirá todos os valores possíveis de seus tipos base. Esse tipo de construção não é muito comum na construção de documentos XSD, mas ainda assim representa uma possibilidade. A construção de tipos através de extensão por união necessita do atributo union e do elemento memberTypes para representar que o tipo de dados será construído através de extensão por união e quais tipos servirão como tipos base Exemplo:
78
Os tipos de dados primitivos xs:string xs:boolean xs:decimal xs:float xs:double xs:duration xs:dateTime xs:time xs:date xs:gYearMonth xs:gYear xs:gMonthDay xs:gDay xs:gMonth xs:hexBinary xs:base64Binary xs:anyURI xs:QName xs:NOTATION
79
Exercício Construir o XMLSchema para validar um documento XML com o cadastro de acesso de vários usuários de um site com as seguintes restricoes: O nome de um cliente com tamanho mínimo de 10 caractéres e tamanho máximo de 90 caractéres Um nick name com no mínimo dois caractéres e no máximo 20 caractéres Um e-mail válido Uma senha numérica com no mínimo seis e no máximo oito números O ano de nascimento (superior a 1950 e menor ou igual a 1992) O estado de origem (opcional) Uma opção (sim ou não) para controlar se seus dados (nome, e-mail, ano de nascimento e UF) podem ser visualizados por outros usuários
80
Exercicios XML para ser utilizado no exercicio Carlos Oberdan Rolim Ober oberdan@gmail.com minhasenha 1992 RS S
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.