Você está na página 1de 34

Linguagem de Programao II

Apostila Linguagem de Programao II SQL / XML

Linguagem de Programao II

CONCEITOS GERAIS DE BANCO DE DADOS Conceitos Banco de Dados - Representa o arquivo fsico de dados, armazenado em dispositivos perifricos, onde esto armazenados os dados de diversos sistemas, para consulta e atualizao pelo usurio. Tabelas Lgicas - Representam as estruturas de armazenamento de dados (arquivos) dos sistemas. S.G.D.B. (Sistema Gerenciador de Banco de Dados) - o software responsvel pelo gerenciamento (armazenamento e recuperao) dos dados no Banco de Dados. Dado - o valor do campo quando armazenado no Banco de Dados. Ex. O valor do campo "nome do cliente" para quem est fazendo a entrada de dados. Contedo do campo - o valor do campo armazenado no Banco de Dados. Ex. O valor do campo "nome do cliente" sem estar, momentaneamente, sendo utilizado. Informao - o valor que este campo representa para as atividades da empresa. Ex. Resposta a uma consulta. Qual os nomes do clientes localizados no Rio de Janeiro? Modelo de Banco de Dados: Modelo Relacional, Modelo Hierrquico e Modelo em Rede. Representa a estrutura fsica no qual o armazenamento dos dados foram projetados. O modelo identifica a estrutura interna de recuperao e armazenamento dos dados no qual o SGBD foi projetado.

Vises do Banco de Dados Viso Interna - aquela vista pelo responsvel pela manuteno e desenvolvimento do SGBD. Existe a preocupao com a forma de recuperao e manipulao dos dados dentro do Banco de Dados. Viso Conceitual - aquela vista pelo analista de desenvolvimento e pelo administrador das bases de dados. Existe a preocupao na definio de normas e procedimentos para manipulao dos dados, para garantir a sua segurana e confiabilidade, o desenvolvimento de sistemas e programas aplicativos e a definio no banco de dados de novos arquivos e campos. Na viso conceitual, existem 2 (duas) linguagens de operao que so: o Linguagem de definio dos dados (DDL) - Linguagem que define as aplicaes, arquivos e campos que iro compor o banco de dados (comandos de criao e atualizao da estrutura dos campos dos arquivos). o Linguagem de manipulao dos dados (DML) - Linguagem que define os comandos de manipulao e operao dos dados (comandos de consulta e atualizao dos dados dos arquivos). o Viso Externa - aquela vista pelo usurio que opera os sistemas aplicativos, atravs de interfaces desenvolvidas pelo analista (programas), buscando o atendimento de suas necessidades.

Linguagem de Programao II

Vantagens do Banco de Dados em relao arquitetura tradicional Definies Sistema Tradicional - So aqueles em que os dados do sistema esto armazenados fisicamente separados um do outro. O acesso feito pelos programas de aplicao, associando o nome externo dos arquivos e definindo todo o registro independente da utilizao dos campos. Sistema de Banco de Dados - aquele em que os dados so definidos para o S.G.B.D., atravs da DDL (linguagem de definio de dados). Fisicamente esto armazenados em um nico local, sendo o acesso realizado apenas atravs do S.G.B.D. Nos programas de aplicao, necessrio apenas definir os campos que sero utilizados pelo programa.

Vantagens do Banco de Dados Reduo ou Eliminao de Redundncias - Possibilita a eliminao de dados privativos de cada sistema. Os dados, que eventualmente so comuns a mais de um sistema, so compartilhados por eles, permitindo o acesso a uma nica informao sendo consultada por vrios sistemas. Eliminao de Inconsistncias - Atravs do armazenamento da informao em um nico local com acesso descentralizado e, sendo compartilhada vrios sistemas, os usurios estaro utilizando uma informao confivel. A inconsistncia ocorre quando um mesmo campo tem valores diferentes em sistemas diferentes. Exemplo, o estado civil de uma pessoa solteiro em um sistema e casado em outro. Isto ocorre porque esta pessoa atualizou o campo em um sistema e no o atualizou em outro. Quando o dado armazenado em um nico local e compartilhado pelos sistemas, este problema no ocorre. Compartilhamento dos Dados - Permite a utilizao simultnea e segura de um dado, por mais de uma aplicao ou usurio, independente da operao que esteja sendo realizada. Deve ser observada apenas o processo de atualizao concorrente, para no gerar erros de processamento (atualizar simultaneamente o mesmo campo do mesmo registro). Os aplicativos so por natureza multiusurio. Restries de Segurana - Define para cada usurio o nvel de acesso a ele concedido (leitura, leitura e gravao ou sem acesso) ao arquivo e/ou campo. Este recurso impede que pessoas no autorizadas utilizem ou atualizem um determinado arquivo ou campo. Padronizao dos Dados - Permite que os campos armazenados na base de dados sejam padronizados segundo um determinado formato de armazenamento (padronizao de tabela, contedo de comps, etc) e ao nome de variveis seguindo critrios padres preestabelecido pela empresa. Ex. Para o campo "Sexo" somente ser permitido armazenamento dos contedos "M" ou "F". Independncia dos Dados - Representa a forma fsica de armazenamento dos dados no Banco de Dados e a recuperao das informaes pelos programas de aplicao. Esta recuperao dever ser totalmente independente da maneira com que os dados esto fisicamente armazenados. Quando um programa retira ou inclui dados o SGBD compacta-os para que haja um menor consumo de espao no disco. Este conhecimento do formato de armazenamento do campo totalmente transparente para o usurio. A independncia dos dados permite os seguintes recursos: o Os programas de aplicao definem apenas os campos que sero utilizados independente da estrutura interna dos arquivos o Quando h incluso de novos campos no arquivo, ser feita manuteno apenas nos programas que utilizam esses campos, no sendo necessrio mexer nos demais programas. Obs.: Nos sistemas tradicionais este tipo de
3

Linguagem de Programao II

operao requer a alterao no lay-out de todos os programas do sistema que utilizam o arquivo. Manuteno da Integridade - Consiste em impedir que um determinado cdigo ou chave em uma tabela no tenha correspondncia em outra tabela. Ex. Um cdigo de uma determinada disciplina na tabela Histrico Escolar sem a sua descrio na tabela Disciplina.

Linguagem de Programao II

NORMALIZAO DE DADOS Definio Consiste em definir o formato lgico adequado para as estruturas de dados identificados no projeto lgico do sistema, com o objetivo de minimizar o espao utilizado pelos dados e garantir a integridade e confiabilidade das informaes. A normalizao feita, atravs da anlise dos dados que compem as estruturas utilizando o conceito chamado "Formas Normais (FN)". As FN so conjuntos de restries nos quais os dados devem satisfaz-las. Exemplo, pode-se dizer que a estrutura est na primeira forma normal (1FN), se os dados que a compem satisfizerem as restries definidas para esta etapa. A normalizao completa dos dados feita, seguindo as restries das quatro formas normais existentes, sendo que a passagem de uma FN para outra feita tendo como base o resultado obtido na etapa anterior, ou seja, na FN anterior. Para realizar a normalizao dos dados, primordial que seja definido um campo chave para a estrutura, campo este que permite ir identificar os demais campos da estrutura. Formas Normais existentes: Primeira Forma Normal (1FN) Consiste em retirar da estrutura os elementos repetitivos, ou seja, aqueles dados que podem compor uma estrutura de vetor. Podemos afirma que uma estrutura est normalizada na 1FN, se no possuir elementos repetitivos. Exemplo: Estrutura original: Arquivo de Notas Fiscais (Num. NF, Srie, Data emisso, Cod. do Cliente, Nome do cliente, Endereo do cliente, CGC do cliente, Relao das mercadorias vendidas (onde para cada mercadoria temos: Cdigo da Mercadoria, Descrio da Mercadoria, Quantidade vendida, Preo de venda e Total da venda desta mercadoria) e Total Geral da Nota) Analisando a estrutura acima, observamos que existem vrias mercadorias em uma nica Nota Fiscal, sendo portanto elementos repetitivos que devero ser retirados. Estrutura na primeira forma normal (1FN): Arquivo de Notas Fiscais (Num. NF, Srie, Data emisso, Cdigo do Cliente, Nome Cliente, Endereo do cliente, CGC do cliente e Total Geral da Nota) Arquivo de Vendas (Num. NF, Cdigo da Mercadoria, Descrio da Mercadoria, Quantidade vendida, Preo de venda e Total da venda desta mercadoria) Obs. Os campos sublinhados identificam as chaves das estruturas. Como resultado desta etapa ocorre um desdobramento dos dados em duas estruturas, a saber: - Primeira estrutura (Arquivo de Notas Fiscais): Dados que compem a estrutura original, excluindo os elementos repetitivos. - Segundo estrutura (Arquivo de Vendas): Dados que compem os elementos repetitivos da estrutura original, tendo como chave o campo chave da estrutura original (Num. NF) e o campo chave da estrutura de repetio (Cdigo da Mercadoria).

Segunda Forma Normal (2FN) Consiste em retirar das estruturas que possuem chaves compostas (campo chave sendo formado por mais de um campo), os elementos que so funcionalmente dependente de parte da chave. Podemos afirmar que uma estrutura est na 2FN, se ela estiver na 1FN e no possuir campos que so funcionalmente dependente de parte da chave. Exemplo: Estrutura na primeira forma normal (1FN):
5

Linguagem de Programao II

Arquivo de Notas Fiscais (Num. NF, Srie, Data emisso, Cdigo do Cliente, Nome do cliente, Endereo do cliente, CGC do cliente e Total Geral da Nota) Arquivo de Vendas (Num. NF, Cdigo da Mercadoria, Descrio da Mercadoria, Quantidade vendida, Preo de venda e Total da venda desta mercadoria) Estrutura na segunda forma normal (2FN): Arquivo de Notas Fiscais (Num. NF, Srie, Data emisso, Cdigo do Cliente, Nome do cliente, Endereo do cliente, CGC do cliente e Total Geral da Nota) Arquivo de Vendas (Num. NF, Cdigo da Mercadoria, Quantidade vendida e Total da venda desta mercadoria) Arquivo de Mercadorias (Cdigo da Mercadoria, Descrio da Mercadoria, Preo de venda) Como resultado desta etapa, houve um desdobramento do arquivo de Vendas (o arquivo de Notas Fiscais, no foi alterado, por no possuir chave composta) em duas estruturas a saber: - Primeira estrutura (Arquivo de Vendas): Contm os elementos originais, sendo excludos os dados que so dependentes apenas do campo Cdigo da Mercadoria. - Segundo estrutura (Arquivo de Mercadorias): Contm os elementos que so identificados apenas pelo Cdigo da Mercadoria, ou seja, independentemente da Nota Fiscal, a descrio e o preo de venda sero constantes. Terceira Forma Normal (3FN) Consiste em retirar das estruturas os campos que so funcionalmente dependentes de outros campos que no so chaves. Podemos afirmar que uma estrutura est na 3FN, se ela estiver na 2FN e no possuir campos dependentes de outros campos no chaves. Exemplo: Estrutura na segunda forma normal (2FN): Arquivo de Notas Fiscais (Num. NF, Srie, Data emisso, Cdigo do Cliente, Nome do cliente, Endereo do cliente, CGC do cliente e Total Geral da Nota) Arquivo de Vendas (Num. NF, Cdigo da Mercadoria, Quantidade vendida e Total da venda desta mercadoria) Arquivo de Mercadorias (Cdigo da Mercadoria, Descrio da Mercadoria, Preo de venda) Estrutura na terceira forma normal (3FN): Arquivo de Notas Fiscais (Num. NF, Srie, Data emisso, Cdigo do Cliente e Total Geral da Nota) Arquivo de Vendas (Num. NF, Cdigo da Mercadoria, Quantidade vendida e Total da venda desta mercadoria) Arquivo de Mercadorias (Cdigo da Mercadoria, Descrio da Mercadoria, Preo de venda) Arquivo de Clientes (Cdigo do Cliente, Nome do cliente, Endereo do cliente e CGC do cliente) Como resultado desta etapa, houve um desdobramento do arquivo de Notas Fiscais, por ser o nico que possua campos que no eram dependentes da chave principal (Num. NF), uma vez que independente da Nota Fiscal, o Nome, Endereo e CGC do cliente so inalterados. Este procedimento permite evitar inconsistncia nos dados dos arquivos e economizar espao por eliminar o armazenamento freqente e repetidas vezes destes dados. A cada nota fiscal comprada pelo cliente, haver o armazenamento destes dados e poder ocorrer divergncia entre eles. As estruturas alteradas foram pelos motivos, a saber: - Primeira estrutura (Arquivo de Notas Fiscais): Contm os elementos originais, sendo excludo os dados que so dependentes apenas do campo Cdigo do Cliente (informaes referentes ao cliente).

Linguagem de Programao II

- Segundo estrutura (Arquivo de Clientes): Contm os elementos que so identificados apenas pelo Cdigo do Cliente, ou seja, independente da Nota Fiscal, o Nome, Endereo e CGC dos clientes sero constantes. Aps a normalizao, as estruturas dos dados esto projetadas para eliminar as inconsistncias e redundncias dos dados, eliminando desta forma qualquer problema de atualizao e operacionalizao do sistema. A verso final dos dados poder sofrer alguma alterao, para atender as necessidades especficas do sistema, a critrio do analista de desenvolvimento durante o projeto fsico do sistema.

Linguagem de Programao II

MODELO DE ENTIDADE E RELACIONAMENTO (MER) Definio Consiste em mapear o mundo real do sistema em um modelo grfico que ir representar o modelo e o relacionamento existente entre os dados. Entidade - Identifica o objeto de interesse do sistema e tem "vida" prpria, ou seja, a representao abstrata de um objeto do mundo real sobre o qual desejamos guardar informaes. Exemplo: Clientes, Fornecedores, Alunos, Funcionrios, Departamentos, etc. No so entidades: - Entidade com apenas 1 elemento; - Operaes do sistema; - Sadas do sistema; - Pessoas que realizam trabalhos (usurios do sistema); - Cargos de direo Instncia de Entidade - So os elementos da entidade. Exemplo: Cliente 10, Funcionrio Joo, Aluno Pedro, etc. Atributo - Informaes que desejamos guardar sobre a instncia de entidade. Exemplo: Nome do aluno, Nmero da turma, Endereo do fornecedor, Sexo do funcionrio, etc. Domnio do Atributo - Universo de valores que um atributo pode armazenar. Exemplo: Conjunto de valores do atributo Sexo do funcionrio: M ou F; Conjunto de valores do atributo Nome do aluno: 40 caracteres alfanumrico. Conjunto de valores do atributo salrio: inteiro maior que 5000 Representao Grfica - Entidade - Atributo

- Relacionamento

Relacionamento - Representa a associao entre os elementos do conjunto de um entidade com outra entidade. Exemplo: O Joo est matriculado na disciplina de Banco de Dados onde: - Joo - Elemento do conjunto de valores do atributo Nome do aluno da entidade Aluno; - Banco de Dados - Elemento do conjunto de valores do atributo Nome da disciplina da entidade Disciplina; - matriculado - Ligao existente entre um aluno e uma disciplina.

Linguagem de Programao II

ALUNO

MATRICULADO

DISCIPLINA

Cardinalidade de Relacionamentos Representa a freqncia com que existe o relacionamento. Exemplo: Relacionamento 1:1 - O Joo casado com a Maria. onde: - Joo - Elemento do conjunto de valores do atributo Nome da entidade Homem. - Maria - Elemento do conjunto de valores do atributo Nome da entidade Mulher. - casado - Ligao entre um homem e uma mulher, sendo que um homem pode ser casado com uma e apenas uma mulher, assim como uma mulher pode ser casada com um e apenas um homem.

HOMEM

CASAMENTO

MULHER

Relacionamento 1:N ou N:1 - O Pedro trabalha no Departamento Pessoal. onde: - Pedro - Elemento do conjunto de valores do atributo Nome da entidade Funcionrio. - Depart. Pessoal - Elemento do conjunto de valores do atributo Nome do departamento da entidade Departamento. - trabalha - Ligao entre um Funcionrio e um Departamento, onde um funcionrio pode trabalhar em um e somente um departamento e um departamento pode ter vrios funcionrios.

EMPREGADOS

LOTAO

DEPARTAMENTO

Relacionamento N : M - O Antnio est matriculado na disciplina Banco de Dados. onde: - Antnio - Elemento do conjunto de valores do atributo Nome da entidade Aluno. - Banco de Dados - Elemento do conjunto de valores do atributo Nome da Disciplina da entidade Disciplina.

Linguagem de Programao II

- matriculado - Ligao existente entre um aluno e uma disciplina, onde um aluno pode estar matriculado em vrias disciplinas e cada disciplina pode ter vrios alunos matriculados.

ALUNOS

MATRICULADO

DISCIPLINA

Atributos do Relacionamento - Quando um determinado relacionamento possui atributos, tambm conhecido como relacionamento valorado. Esta situao ocorre apenas em relacionamento N : M. Ex. Pedro trabalha no projeto Alfa 30 horas. - Pedro - Elemento do conjunto de valores do atributo Nome da entidade Funcionrio. - Alfa - Elemento do conjunto de valores do atributo Nome do Projeto da entidade Projeto. - trabalha - Ligao existente entre um funcionrio e um projeto. Neste caso, este funcionrio trabalha 30 horas neste projeto, porm este mesmo funcionrio poder trabalhar outro nmero de horas em outro projeto, assim como outro funcionrio trabalha outro nmero de horas no mesmo projeto Alfa. Podemos concluir que 30 horas o atributo que pertence ao Pedro no projeto Alfa.

FUNCIONRIO

PROJETO

HORAS

Grau do Relacionamento Indica o nmero de entidade que se relacionam. Relacionamento Binrio Quando existe o relacionamento entre apenas duas entidades. Ex. Um fornecedor comercializa materiais que so utilizados em diversos projetos.

FORNECEDOR

COMERCIALIZA

MATERIAIS

M N
PROJETOS UTILIZAM

10

Linguagem de Programao II

Relacionamento Ternrio Quando existe o relacionamento entre trs entidades. Ex. Um fornecedor comercializa materiais que so utilizados em projetos especficos.
MATERIAIS

FORNECEDORES

UTILIZADO

N
PROJETOS

Exemplos de Relacionamento: - O Professor Alberto leciona Estrutura de Dados e o aluno Pedro cursa Linguagem de Programao
PROFESSOR LECIONA DISCIPLINA

ALUNO

CURSA

- Pedro comprou 1 Kg. de banana do vendedor Manoel


PRODUTOS

CLIENTES

VENDA

1
VENDEDORES

Obs. Para que haja uma venda, tem que haver um cliente, um produto e um vendedor.

11

Linguagem de Programao II

LINGUAGEM SQL A linguagem SQL (Structured Query Language) representa um conjunto de comandos responsveis pela definio das tabelas, comandos e atualizao dos dados em um S.G.B.D. Os comandos existentes nesta linguagem so subdivididos em dois grupos: - Comandos DDL (Data Definition Language) - Conjunto de comandos responsveis pela criao, alterao e deleo da estrutura das tabelas e ndices de um sistema. - Comandos DML (Data Manipulation Language) - Conjunto de comandos responsveis pela consulta e atualizao dos dados armazenados em um banco de dados. Comandos DDL Create Table Objetivo: Criar a estrutura de uma tabela(arquivo) definido as colunas (campos) e as chaves primrias e estrangeiras existentes. Sintaxe: CREATE TABLE <nome-tabela> (<nome-coluna> , <tipo-do-dado> [NOT NULL] [NOT NULL WITH DEFAULT] ) PRIMARY KEY (nome-coluna-chave) FOREIGN KEY (nome-coluna-chave-estrangeira) REFERENCES (nome-tabela-pai) ON DELETE [RESTRICT] [CASCADE] [SET NULL] onde: nome-tabela - Representa o nome da tabela que ser criada. nome-coluna - Representa o nome da coluna que ser criada. A definio das colunas de uma tabela feita relacionando-as uma aps a outra. tipo-do-dado - Clusula que define o tipo e tamanho dos campos definidos para a tabela. Os tipos de dados mais comuns sero definidos mais frente. NOT NULL - Exige o preenchimento do campo, ou seja, no momento da incluso obrigatrio que possua um contedo. NOT NULL WITH DEFAULT - Preenche o campo com valores pr-definidos, de acordo com o tipo do campo, caso no seja especificado o seu contedo no momento da incluso do registro. Os valores pr-definidos so: o Campos numricos - Valor zero. o Campos alfanumricos - Caracter branco. o Campo formato Date - Data corrente. o Campo formato Time - Horrio no momento da operao. PRIMARY KEY (nome-coluna-chave) - Definir para o banco de dados a coluna que ser a chave primria da tabela. Caso ela tenha mais de um coluna como chave, elas devero ser relacionadas entre os parnteses. FOREIGN KEY (nome-coluna-chave-estrangeira) REFERENCES (nome-tabela-pai) Definir para o banco de dados as colunas que so chaves estrangeiras, ou seja, os campos que so chaves primrias de outras tabelas. Na opo REFERENCES deve ser especificado a tabela na qual a coluna a chave primria.

12

Linguagem de Programao II

ON DELETE - Esta opo especifica os procedimentos que devem ser feitos pelo SGBD quando houver uma excluso de um registro na tabela pai quando existe um registro correspondente nas tabelas filhas. As opes disponveis so: o RESTRICT - Opo default. Esta opo no permite a excluso na tabela pai de um registro cuja chave primria exista em alguma tabela filha. o CASCADE - Esta opo realiza a excluso em todas as tabelas filhas que possua o valor da chave que ser excluda na tabela pai. o SET NULL - Esta opo atribui o valor NULO nas colunas das tabelas filhas que contenha o valor da chave que ser excluda na tabela pai.

Tipos de dados mais comuns: Numricos: o Smallint - Armazena valores numricos, em dois bytes binrios, compreendidos entre o intervalo -32768 a +32767. o Integer - Armazena valores numricos, em quatro bytes binrios, compreendidos entre o intervalo -2147483648 a +2147483647 o Decimal(n,m) - Armazena valores numricos com no mximo 15 dgitos. Nesta opo deve ser definida a quantidade de dgitos inteiros (n) e casas decimais (m) existentes no campo. Alfanumricos: o Varchar (n) - Definir um campo alfanumrico de at n caracteres, onde n deve ser menor ou igual a 254 caracteres. o Char (n) - Definir um campo alfanumrico de n caracteres, onde n deve ser menor ou igual a 254 caracteres. o Long Varchar - Definir um campo alfanumricos de comprimento maior que 254 caracteres. Campo Date - Definir um campo que ir armazenar datas. Campo Time - Definir um campo que ir armazenamento de horrio.

Alter Table Objetivo: Alterar a estrutura de uma tabela(arquivo) acrescentando, alterando, retirando e alterando nomes, formatos das colunas e a integridade referencial definidas em uma determinada tabela. Sintaxe: ALTER TABLE <nome-tabela> DROP <nome-coluna> ADD <nome-coluna> <tipo-do-dado> [NOT NULL] [NOT NULL WITH DEFAULT] RENAME <nome-coluna> <novo-nome-coluna> RENAME TABLE <novo-nome-tabela> MODIFY <nome-coluna> <tipo-do-dado> [NULL] [NOT NULL] [NOT NULL WITH DEFAULT] ADD PRIMARY KEY <nome-coluna> DROP PRIMARY KEY <nome-coluna>

13

Linguagem de Programao II

ADD FOREIGN KEY (nome-coluna-chave-estrangeira) REFERENCES (nome-tabela-pai) ON DELETE [RESTRICT] [CASCADE] [SET NULL] DROP FOREIGN KEY (nome-coluna-chave-estrangeira) REFERENCES (nome-tabela-pai) onde: nome-tabela - Representa o nome da tabela que ser atualizada. nome-coluna - Representa o nome da coluna que ser criada. tipo-do-dado - Clusula que define o tipo e tamanho dos campos definidos para a tabela. DROP <nome-coluna> - Realiza a retirada da coluna especificada na estrutura da tabela. ADD <nome-coluna> <tipo-do-dado> - Realiza a incluso da coluna especificada na estrutura da tabela. Na coluna correspondente a este campo nos registros j existentes ser preenchido o valor NULL (Nulo). As definies NOT NULL e NOT NULL WITH DEFAULT so semelhantes do comando CREATE TABLE. RENAME <nome-coluna> <novo-nome-coluna> - Realiza a troca do nome da coluna especificada. RENAME TABLE <novo-nome-tabela> - Realiza a troca do nome da tabela especificada. MODIFY <nome-coluna> <tipo-do-dado> - Permite a alterao na caracterstica da coluna especificada. Opes: Alm das existentes na opo ADD (NOT NULL e NOT NULL WITH DEFAULT), temos a opo NULL que altera a caracterstica do campo passando a permitir o preenchimento com o valor Nulo. ADD PRIMARY KEY <nome-coluna> - Esta opo utilizada quando acrescido um novo campo como chave primria da tabela. DROP PRIMARY KEY <nome-coluna> - Esta opo utilizada quando retirado um campo como chave primria da tabela. ADD FOREIGN KEY <nome-coluna> - Esta opo utilizada quando acrescido um novo campo sendo ele uma chave estrangeira. DROP FOREIGN KEY <nome-coluna> - Esta opo utilizada quando retirado uma chave estrangeira da estrutura da tabela.

14

Linguagem de Programao II

Drop Table Objetivo: Deletar a estrutura e os dados existentes em uma tabela. Aps a execuo deste comando estaro deletados todos dados, estrutura e ndices de acessos que estejam a ela associados. Sintaxe: DROP TABLE <nome-tabela> onde: nome-tabela - Representa o nome da tabela que ser deletada.

Create Index Objetivo: Criar uma estrutura de ndice de acesso para uma determinada coluna em uma tabela. Um ndice de acesso permite um acesso mais rpido aos dados em uma operao de seleo. Os ndices podem ser criados a partir de um ou mais campos de uma tabela. Sintaxe: CREATE [UNIQUE] INDEX <nome-ndice> ON <nome-tabela> (<nome-coluna> [ASC ], [<nome-coluna> [ASC ] ]) [DESC] [DESC] onde: nome-ndice - Representa o nome da estrutura de ndice que ser criada. nome-tabela - Representa o nome da tabela que contem a coluna na qual ser criada o ndice de acesso. nome-coluna - Representa o nome da coluna que ser criada. Opo ASC/DESC - Representa a criao do ndice ordenada crescentemente (ASC) ou decrescentemente (DESC).

Drop Index Objetivo: Deletar uma estrutura de ndice de acesso para uma determinada coluna em uma tabela. Sintaxe: DROP INDEX <nome-ndice> onde: nome-ndice - Representa o nome da estrutura de ndice que ser deletada.

15

Linguagem de Programao II

Comandos DML Insert Objetivo: Incluir um novo registro em uma tabela do Banco de Dados. Sintaxe: INSERT INTO <nome-tabela> [(<nome-coluna>, [<nome-coluna>])] VALUES (<relao dos valores a serem includos>) onde: nome-tabela - Representa o nome da tabela onde ser includa o registro. nome-coluna - Representa o nome da(s) coluna(s) tero contedo no momento da operao de incluso. Obs.: Este comando pode ser executado de duas maneiras: 1) Quando todos os campos da tabela tero contedo - Neste caso no necessrio especificar as colunas, entretanto a relao dos valores a serem includos devero obedecer a mesma seqncia da definio da tabela. 2) Quando apenas parte dos campos da tabela tero contedo - Neste caso devem ser especificadas todas as colunas que tero contedo e os valores relacionados devero obedecer esta seqncia. Para os campos que no tem contedo especificado ser preenchido o valor NULL.

Update Objetivo: Atualiza os dados de um ou um grupo de registros em uma tabela do Banco de Dados. Sintaxe: UPDATE <nome-tabela> SET <nome-coluna> = <novo contedo para o campo> [<nome-coluna> = <novo contedo para o campo>] WHERE <condio> onde: nome-tabela - Representa o nome da tabela cujo contedo ser alterado. nome-coluna - Representa o nome da(s) coluna(s) tero seus contedos alterados com o novo valor especificado. condio - Representa a condio para a seleo dos registros que sero atualizados. Este seleo poder resultar em um ou vrios registros. Neste caso a alterao ir ocorrer em todos os registros selecionados.

16

Linguagem de Programao II

Delete Objetivo: Deletar um ou um grupo de registros em uma tabela do Banco de Dados. Sintaxe: DELETE FROM <nome-tabela> WHERE <condio> onde: nome-tabela - Representa o nome da tabela cujos registros sero deletados. condio - Representa a condio para a deleo dos registros. Este seleo poder resultar em um ou vrios registros. Neste caso a operao ir ocorrer em todos os registros selecionados.

Select Objetivo: Selecionar um conjunto de registros em uma ou mais tabelas que atenda a uma determinada condio definida pelo comando. Sintaxe: SELECT ALL FROM <nome-tabela> [, <nome-tabela>] DISTINCT WHERE <condio> GROUP BY <nome-coluna> HAVING <condio> ORDER BY <nome-campo> ASC DESC onde: nome-tabela - Representa o nome da(s) tabela(s) que contem as colunas que sero selecionadas ou que sero utilizadas para a execuo da consulta. condio - Representa a condio para a seleo dos registros. Este seleo poder resultar em um ou vrios registros. nome-coluna - Representa a(s) coluna(s) cujos resultados so grupados para atender consulta. ALL - Opo default. Mostra todos os valores obtidos na seleo. DISTINCT - Opo que mostra os valores obtidos na seleo eliminando as duplicidades. WHERE - Especifica o critrio de seleo dos registros nas tabelas especificadas. GROUP BY - Especifica o(s) campo(s) que sero grupados para atender a consulta. HAVING - Especifica uma condio para seleo de um grupo de dados. Esta opo s utilizada combinada com a opo GROUP BY. ORDER BY - Esta opo quando utilizada apresenta o resultado da consulta ordenado de forma crescente ou decrescente pelos campos definidos.

17

Linguagem de Programao II

Algumas funes utilizadas no comando Select: a) COUNT(*) (DISTINCT <nome-campo>) Objetivo: Retorna a quantidade de registros existentes no campo especificado. Quando a opo * utilizada o resultado a quantidade de registros existentes. Quando referenciado o nome de um campo retorna a quantidade de valores existentes na coluna. b) SUM (ALL <nome-campo>) DISTINCT Objetivo: Retorna a soma dos valores existentes no campo especificado. Quando a opo DISTINCT utilizada so consideradas apenas os diferentes valores existentes no campo. c) AVG (ALL <nome-campo>) DISTINCT Objetivo: Retorna a mdia dos valores existentes no campo especificado. Quando a opo DISTINCT utilizada so consideradas apenas os diferentes valores existentes no campo. d) MAX (ALL <nome-campo>) DISTINCT Objetivo: Retorna o maior valor existente no campo especificado. Quando a opo DISTINCT utilizada so consideradas apenas os diferentes valores existentes no campo. e) MIN (ALL <nome-campo>) DISTINCT Objetivo: Retorna o menor valor existente no campo especificado. Quando a opo DISTINCT utilizada so consideradas apenas os diferentes valores existentes no campo.

18

Linguagem de Programao II

XML - eXtensible Markup Language Introduo A XML (eXtensible Markup Language, ou Linguagem de Marcao Estendida) um subconjunto da SGML (Standard Generalized Markup Language, ou Linguagem de Marcao Padro Generalizada) que permite que uma marcao especfica seja criada para especificar idias e compartilh-las na rede. Ela tem as virtudes da SGML e da HTML sem qualquer das limitaes bvias. Pontos fortes da XML Inteligncia: a XML inteligente para qualquer nvel de complexidade. A marcao pode ser alterada de uma marcao mais geral como "<CO> Lassie </CO>" para uma mais detalhista, como "<CO> <VENHA_PARA_CASA> <COLLIE> Lassie </COLLIE> </VENHA_PARA_CASA> </CO>". As idias so bem marcadas para que "<VENDO_DOIS> duplo </VENDO_DOIS>" e "<MAIS_LICOR> duplo </MAIS_LICOR>" sejam sempre valores diferentes. A informao conhece a si mesma. No necessria mais nenhuma idia indesejvel; Adaptao: a XML a lngua-me de outras linguagens. Assim, linguagens como DickML e JaneML tornaram-se possveis. A adaptao infinita. Marcaes personalizadas podem ser criadas para qualquer necessidade. Se uma marcao que descreva como uma pizza pepperoni diferente de uma pizza calabresa for necessria, ela pode ser feita; Manuteno: a XML fcil de manter. Ela contm somente idias e marcaes. Folhas de estilos e links vm em separado, e no escondidas no documento. Cada um pode ser alterado separadamente quando preciso com fcil acesso e fceis mudanas. No preciso mais se achar em uma baguna de marcaes; Ligao: a XML possui uma maneira de ligar que inclui todas as formas de ligao. No s isso; ela liga de maneiras que a HTML no pode. A HTML pode fazer de uma maneira simples, onde um objeto se liga a outro. A XML faz isso, mas tambm pode ligar dois ou mais pontos a uma idia. Existem ainda links gmeos que ligam todas as ideas dentro de uma mesma. Qualquer link entre uma idia pode ser manipulado de uma nica maneira; Simplicidade: a XML simples. Um usurio de mdia experincia que olha a XML pode ach-la difcil de acreditar no que v. Comparada com a HTML no. Comparada com a SGML um estudo de simplicidade. A especificao da SGML tem 300 pginas. A da XML, 33. Idias obscuras e desnecessrias foram retiradas em favor de idias concisas. A XML vai direto ao ponto; Portabilidade: a XML de fcil portabilidade. A razo da sua existncia fora e portabilidade. A SGML tem fora. A HTML tem portabilidade. A XML tem ambas. A XML pode ser navegada com ou sem o seu DTD (Document Type Definition, ou Definio de Tipo de Documento - as normas que definem como as tags so estruturas nos documentos XML), tornando o download mais rpido. Tudo que um navegador precisa para ver XML ter a noo que ela prpria e a folha de estilos controlam a aparncia. Se uma validao estrita necessria, o seu DTD pode acompanh-lo e fornecer detalhes exatos da sua marcao.

19

Linguagem de Programao II

Objetivos do desenvolvimento da XML A especificao da XML primou pelos seguintes objetivos: Deveria ser claro usar a XML na Internet; A XML deveria suportar uma grande variedade de aplicaes; A XML deveria ser compatel com SGML; Deveria ser fcil escrever programas que processem documentos XML; O nmero de recuros opcionais em XML deveria ser mantido em um mnimo absoluto, idealmente zero; Os documentos XML deveriam ser legveis pelos seres humanos e razoavelmente claros; O projeto XML deveria ser preparado rapidamente; O projeto XML deveria ser formal e conciso; Os documentos XML deveriam ser fceis de serem criados; A conciso na marcao em XML de mnima importncia.

Como a XML definida A XML definida pelas seguintes especificaes: Extensible Markup Language (XML) 1.0: define a sintaxe da XML; XML Pointer Language (XPointer) e XML Linking Language (XLink): define um padro para representar os links entre os recursos. Alm dos links simples, como a tag <A> da HTML, a XML possui mecanismos para ligar recursos mltiplos e diferentes. A XPointer desceve como enderear um recurso, e a XLink descreve como associar dois ou mais recursos; Extensible Style Language (XSL): define a linguagem de folhas de estilos pado para a XML.

Documentos Se voc j est acostumado com a HTML ou a SGML, os documentos XML parecerlhe-o familiar. Um documento XML simples apresentado a seguir: Exemplo 1: um documento XML simples <?xml version="1.0"?> <piada> <Joo>Diga <citao>boa noite</citao>, Maria.</Joo> <Jos><citao>Boa noite, Maria.</citao></Jos> <aplausos/> </piada> Algumas coisas podem sobressair-se para voc: O documento comea com uma instruo de processamento: <?xml ...?>. Esta a declarao XML. Embora no seja obrigatria, a sua presena explcita identifica o documento como um documento XML e indica a verso da XML com a qual ele foi escrito.

20

Linguagem de Programao II

No h declarao do tipo do documento. Diferentemente da SGML, a XML no requer uma declarao de tipo de documento. Entretanto, uma declarao de tipo de documento pode ser fornecida; alm disso, alguns documentos iro precisar de uma para serem entendidos sem ambigidade. Elementos vazios (<aplausos/> neste exemplo) tem uma sintaxe modificada. Enquanto que a maioria dos elementos em um documentos envolvem algum contedo, elementos vazios so simplesmente marcadores onde alguma coisa ocorre (uma separador horizontal para a marca em <hr> em HTML, por exemplo, ou uma referncia cruzada para DocBook's para a marca <xref>). O final /> na sintaxe modificada indica a um programa que processa o documento XML que o elemento vazio e uma marca de fim correspondente no deve ser procurada. Visto que os documentos XML no requerem uma declarao de tipo de documento, sem esta pista seria impossvel para um analisador XML determinar quais marcas so intencionalmente vazias e quais teriam sido deixadas vazias por um erro. A XML suavizou a distino entre elementos declarados como EMPTY e elementos que meramente no tm contedo. Em XML, vlido usar uma marca de elemento vazio para qualquer um destes casos. Tambm vlido usar um par de marcas incio-fim para elementos vazios: <aplausos></aplausos>. Se a interoperabilidade interessa, melhor reservar a sintaxe de marcas de elementos vazios para elementos declarados como EMPTY e usar a marca de elemento vazio somente para estes elementos.

Os documento XML so compostos de marcas e contedos. Existem seis tipos de marcaes que podem ocorrer em um documento XML: elementos, referncias a entidades, comentrios, instrues de processamento, sees marcadas e declaraes de tipos de documento. As sees seguintes introduzem cada um destes conceitos de marcao. Elementos Elementos so a mais comum forma de marcao. Delimitados pelos sinais de menor e maior, a maioria dos elementos identificam a natureza do contedo que envolvem. Alguns elementos podem ser vazios, como visto acima; neste caso eles no tm contedo. Se um elemento no vazio, ele inicia com uma marca de incio , <element>, e termina com uma marca de trmino, </element>. Atributos Atributos so pares de valores nomeados que ocorrem dentro dasmarcas de incio aps o nome do elemento. Por exremplo: <div classe="prefcio"> um elemento div cujo atributo class possui o valor prefcio. Em XML, todos os valores de atributos devem estar entre aspas.

21

Linguagem de Programao II

Referncias a Entidades A fim de introduzir a marcao em um documento, alguns documentos foram reservados para identificar o incio da marcao. O sinal de menor, < , por exemplo, identifica o incio de uma marca de inicio ou trmino. Para inserir estes caracteres em seu documento como contedo, deve haver uma alternativa para represent-los. Em XML, entidades so usadas para representar estes caracteres especiais. As entidades tambm so usadas para referenciar um texto freqentemente repetido ou alterado e inclu-lo no contedo de arquivos externos. Cada entidade deve ter um nome nico. A definio dos seus prprios nomes de entidades discutido na seo declaraes de entidades. Para usar uma entidade, voc simplesmente a referencia pelo nome. As referncias s entidades iniciam com o E comercial e terminam com um ponto-e-vrgula. Por exemplo, a entidade lt insere um literal < em um documento. A cadeia de caracteres <element> pode ser representada em um documento XML como <&lt;element>. Uma forma especial de referncia a entidades, chamada de referncia a caracter, pode ser usada para inserir arbitrariamente caracteres Unicode em seu documento. Este um mecanismo para inserir caracteres que no podem ser diretamente digitados pelo seu teclado. Referncias a caracter podem ter uma das duas formas: referncias decimais, &#8478;, e referncias hexadecimais, &#x211E;. Ambas se referem ao caracter Unicode nmero U+211E. Comentrios Comentrios iniciam com <!-- e terminam com -->. Os comentrios podem conter qualquer dado, exceto a literal "--". Voc pode colocar comentrios entre marcas em qualquer lugar em seu documento. Comentrios no fazem parte de um contedo textual de um documento XML. Um processador XML no preciso para reconhec-los na aplicao. Instrues de Processamento Instrues de processamento (PIs) so formas de fornecer informaes a uma aplicao. Assim como os comentrios, elas no so textualmente parte de um documento XML, mas o processador XML necessrio para reconhec-las na aplicao. As instrues de processamento tm a forma: <?nome dadospi?>. O nome, chamado de alvo PI, identifica a PI na aplicao. As aplicaes processariam somente os alvos que eles reconhecem e ignoram todas as outras PIs. Qualquer dado que segue oalvo PI opcional; para a aplicao que reconhece o alvo. Os nomes usados em PIs podem ser declarados como notaes a fim de identific-los formalmente. Os nomes de PI que iniciam com xml so reservados para a padronizao da XML. Sees CDATA Em um documento, uma seo CDATA instrui o analisador para ignorar a maioria dos caracteres de marcao. Considere um cdigo-fonte em um documento XML. Ele pode conter caracteres que o analisador XML iria normalmente reconhecer como marcao (< e &, por exemplo). Para prevenir isto, uma seo CDATA pode ser usada. <![CDATA[
22

Linguagem de Programao II

*p = &q; b = (i <= 3); ]]> Entre o incio da seo, <![CDATA[, e o fim da seo, ]]>, todos os dados de caracteres so passados diretamente para a aplicao, sem interpretao. Elementos, referncias a entidades, comentrios e instrues de processamento so todos irreconhecveis e os caracteres que os compem so passados literalmente para a aplicao. A nica cadeia de caracteres que no pode ocorrer em uma seo CDATA "]]>". Declaraes de Tipos de Documentos Uma grande porcentagem da especificao da XML trata de vrios tipos de declaraes que so permitidas em XML. Se voc tem experincia com SGML, voc reconhecer estas declaraes dos SGML DTDs (Definies de Tipos de Documentos). Se voc j viu isto antes, o seu significado pode no ser imediatamente bvio. Um dos maiores poderes da XML que ela permite que voc crie seus prprios nomes para marcas. Mas, para uma dada aplicao, provvel no ser significativo para marcas que ocorrer em uma ordem completamente arbitrria. Considere o exemplo 1. Isto teria significado? <Joo>Diga <citao>boa noite</citao>, Maria.</Joo> <Jos><citao>Boa noite, Maria.</citao></Jos> Sai totalmente do que normalmente esperamos que tenha senso. Simplesmente no significa nada. Entretanto, de um ponto de vista estritamente sinttico, no h nada de errado com este documento XML. Assim, se o documento deve ter significado, e certamente h se voc estiver escrevendo uma folha de estilos ou aplicao para process-lo, deve haver alguma restrio na seqncia e aninhamento das marcas. Declaraes so onde estas restries podem ser expressadas. Mais genericamente, as declaraes permitem a um documento comunicar metainformaes ao analisados a respeito do seu contedo. Meta-informao inclui as seqncias e aninhamentos permitidos para as marcas, valores de atributos e seus tipos e padres, os nomes de arquivos externos que podem ser refernciados e se eles podem ou no conter XML, o formato de algum dado (no-XML) externo que pode ser referenciado e as entidades que podem ser encontradas. H quatro tipos de declaraes em XML: declaraes de tipos de elementos, declaraes de listas de atributos, declaraes de entidades e declaraes de notaes. Declaraes de Tipos de Elementos Declaraes de tipos de elementos identificam os nomes dos elementos e a natureza do seu contedo. Uma declarao de tipo de elemento tpica se parece com isto: <!ELEMENT piada (Joo+, Jos, aplausos?)> Esta declarao identifica o elemento nomeado como piada. Seu modelo de contedo segue o nome do elemento. O modelo de contedo define o que um elemento pode conter. Neste caso, uma piada deve conter Joo e Jos e pode conter aplausos. As
23

Linguagem de Programao II

vrgulas entre os nomes dos elementos indicam que eles devem ocorrer em sucesso. O sinal de adio aps Joo indica que ele pode ser repetido mais de uma vez, mas deve ocorrer pelo menos uma vez. O ponto de interrogao aps aplausos indica que ele opcional (pode estar ausente ou ocorrer somente uma vez). Um nome sem pontuao, como Jos, deve ocorrer somente uma vez. As declaraes para todos os elementos usados em qualquer modelo de contedo deve estar presente para que um processador XML verifique a validade do documento. Alm dos nomes de elementos, o smbolo especial #PCDATA reservado para indicar dados de caracter. A clusula PCDATA significa dado de caracter analisvel. Os elementos que contm somente outros elementos so ditos que tm contedo de elementos. Os elementos que contm outros elementos e #PCDATA so ditos que tm contedo misturado. Por exemplo, a definio para Jos pode ser <!ELEMENT Jos (#PCDATA | citao)*> A barra vertical indica um relacionamento "ou" e o asterisco indica que o contedo opcional (pode ocorrer zero ou mais vezes); por esta definio, portanto, Jos pode conter zero ou mais caracteres e marcas citao, misturadas em qualquer ordem. Todos os modelos de contedo misturado devem ter esta forma: #PCDATA deve vir primeiro, todos os elementos devem ser separados por barras verticais e o grupo inteiro deve ser opcional. Outros dois modelos de contedo so possveis: EMPTY indica que o elemento no possui contedo (e, conseqentemente, no tem marca de trmino) e ANY indica que qualquer contedo permitido. O modelo de contedo ANY algumas vezes til durante a converso de documentos, mas deveria ser evitado ao mximo em um ambiente de produo, pois desabilita toda a verificao do contedo deste elemento. Aqui est um conjunto completo das declaraes de elementos para o Exemplo 1: Exemplo 2: declaraes de elementos para Exemplo 1 <!ELEMENT piada (Joo+, Jos, aplausos?)> <!ELEMENT Joo (#PCDATA | citao)*> <!ELEMENT Jos (#PCDATA | citao)*> <!ELEMENT citao (#PCDATA)*> <!ELEMENT aplausos EMPTY> Declaraes de Listas de Atributos Declaraes de listas de atributos identificam que elementos podem ter atributos, que atributos eles podem ter, que valores os atributos podem suportar e qual valor o padro. Uma dclarao de lista de atributos tpica se parece com isto: <!ATTLIST piada nome ID #REQUIRED rtulo CDATA #IMPLIED
24

Linguagem de Programao II

estado ( engraada | noengraada ) 'engraada'> Neste exemplo, o elemento piada possui trs atributos: nome, que um ID e obrigatrio; rtulo, que uma cadeia de caracteres (dados de caracter) e no obrigatrio; e estado, que deve ser ou engraada ou noengraada e por padro engraada, se nenhum valor especificado. Cada atributo em uma declarao tem trs partes: um nome, um tipo e um valor padro. Voc tem liberdade para selecionar qualquer nome desejado, sujeito a algumas pequenas restries, mas os nomes no podem ser repetidos no mesmo elemento. Existem seis tipos de atributos possveis: 1. CDATA Atributos CDATA so cadeias de caracteres; qualquer texto permitido. No confunda atributos CDATA com sees CDATA; eles no tm relao. 2. ID O valor de um atributo ID deve ser um nome. Todos os valores usados para IDs em um documento devem ser diferentes. Os IDs identificam unicamente elementos individuais em um documento. Os elementos podem ter um nico atributo ID. 3. IDREF ou IDREFS O valor de um atributo IDREF deve ser o valor de um nico atributo ID em algum elemento no documento. O valor de um atributo IDREFS pode conter valores IDREF mltiplos separados por espaos em branco. 4. ENTITY ou ENTITIES O valor de um atributo ENTITY deve ser o nome de uma nica entidade (veja sobre declaraes de entidades abaixo). O valor de um atributo ENTITIES pode conter valores de entidades mltiplos separados por espaos em branco. 5. NMTOKEN ou NMTOKENS Atributos de smbolos de nome so uma forma restrita do atributo de cadeia de caracteres. Em geral, um atributo NMTOKEN deve consistir de uma nica palavra, mas no h restries adicionais para a palavra; no tem que estar associado com outro atributo ou declarao. O valor de um atributo NMTOKENS pode conter valores NMTOKEN mltiplos separados por espaos em branco. 6. Uma lista de nomes Voc pode especificar que o valor de um atributo deve ser pego de uma lista especfica de nomes. Isto freqentemente chamado de tipo enumerado, porque cada um dos valores possveis est explicitamente enumerado na declarao. Alternativamente, voc pode especificar que os nomes devem atender a um nome de notao (veja sobre declaraes de notao abaixo). H quatro valores padro possveis: #REQUIRED O atributo deve ter um valor explicitamente especificado em cada ocorrncia do elemento no documento.

25

Linguagem de Programao II

#IMPLIED O valor do atributo no requerido, e nenhum valor padro fornecido. Se um valor no especificado, o processador XML deve proceder sem um. "valor" Qualquer valor vlido pode ser dado a um atributo como padro. O valor do atributo no requerido em cada elemento no documento, e se ele estiver presente, ser dado a ele o valor padro. #FIXED "value" Uma declarao de atributo pode especificar que um atributo tem um valor fixo. Neste caso, o atributo no requerido, mas se ele ocorrer deve ter o valor especificado. Se no estiver presente, ser dado a ele o valor padro. Um uso de atributos fixos para associar semntica e um elemento. Uma discusso completa vai alm do propsito deste trabalho, mas voc pode achar vrios exemplos de atributos fixos na especificao de XLink. O processador XML executa a normalizao dos valores dos atributos nos valores dos atributos: as referncias de caracter so substuitudas por caracteres referenciados, referncias a entidades so resolvidas (recursivamente) e espaos em branco so normalizados. Declaraes de Entidades Declaraes de entidades lhe permitem associar um nome com algum outro fragmento de contedo. Essa construo pode ser um pedao de texto normal, um pedao de uma declarao de tipo de documento ou uma referncia a um arquivo externo que contm ou texto ou dados binrios. Declaraes de entidades tpicas so mostradas no Exemplo 3. Exemplo 3: declarao de entidades tpica <!ENTITY ATI "ArborText, Inc."> <!ENTITY boilerplate SYSTEM "/standard/legalnotice.xml"> <!ENTITY ATIlogo SYSTEM "/standard/logo.gif" NDATA GIF87A> Existem trs tipos de entidades: Entidades Internas Entidades internas associam um nome com uma cadeia de caracteres ou texto literal. A primeira entidade no Exemplo 3 uma entidade interna. Usando &ATI; em qualquer lugar do documento inserir "ArborText, Inc" naquele local. Entidades internas permitem a voc definir atalhos para textos freqentemente digitados ou textos que se espera que sejam alterados, como o estado de reviso de um documento. Entidades internas podem incluir referncias para outras entidades internas, mas errado elas serem recursivas. A especificao XML pr-define cinco entidades internas:
26

Linguagem de Programao II

&lt; produz o sinal de menor, < &gt; produz o sinal de maior, > &amp; produz o E comercial, & &apos; produz um apstrofo, ' &quot; produz aspas, "

Entidades Externas Entidades externas associam um nome com o contedo de um outro arquivo. Entidades externas permitem a documento XML referenciar o contedo de um outro arquivo; elas contm ou texto ou dados binrios. Se elas contm texto, o contedo do arquivo externo inserido no ponto de referncia e analisado como parte do documento referente. Dados binrios no so analisados e podem somente ser referenciados em um atributo; eles so usados para referenciar figuras e outro contedo no-XML no documento. A segunda e a terceira entidades no Exemplo 3 so entidades externas. O uso de &boilerplate; inserir o contedo do arquivo /standard/ legalnotice.xml no local da referncia da entidade. O processador XML analisar o contedo deste arquivo como se ele ocorresse literalmente no local. A entidade ATIlogo tambm uma entidade externa, mas o seu contedo binrio. A entidade ATIlogo pode ser usada somente como o valor de um atributo ENTITY (ou ENTITIES) (em um elemento graphic, talvez). O processador XML passar esta informao para a aplicao, mas ele no tenta processar o contedo de /standard/logo.gif. Entidades Parmetro A entidade parmetro somente pode ocorrer na declarao de tipo de documento. Uma declarao de uma entidade parmetro identificada por "% " (porcento e espao) defronte ao seu nome na declarao. O sinal de porcento tambm usado em referncias para entidades parmetro, ao invs do E comercial. As referncias a entidade parmetro so imediatamente expandidas na declarao de tipo de documento e seu texto de substituio parte da declarao, onde as referncias a entidades normais no so expandidas. Entidades parmetro no so reconhecidas no corpo de um documento. Voltando s declaraes de elementos no Exemplo 2, voc perceber que dois deles tm o mesmo modelo de contedo: <!ELEMENT Joo (#PCDATA | citao)*> <!ELEMENT Jos (#PCDATA | citao)*> At o momento, estes dois elementos so a mesma coisa somente porque eles tm a mesma definio literal. A fim de tornar mais explcito o fato de que estes dois elementos so semnticamente a mesma coisa, usada uma entidade parmetro para definir seus modelos de contedo. H duas vantagens em se usar uma entidade parmetro. Primeiramente, ela lhe permite dar um nome descritivo ao contedo, e segundo que lhe permite alterar o modelo de contedo em somente um local, se voc desejar atualizar as declaraes do elemento, garantindo que elas sempre fiquem as mesmas: <!ENTITY % pessoascontentes "#PCDATA | citao"> <!ELEMENT Joo (%pessoascontentes;)*>

27

Linguagem de Programao II

<!ELEMENT Jos (%pessoascontentes;)*> Declaraes de Notao Declaraes de notao identificam tipos especficos de dados binrios externos. Estas informaes so passadas para a aplicao de processamento, que pode fazer o uso que quiser ou que desejar. Uma declarao de notao tpica : <!NOTATION GIF87A SYSTEM "GIF"> Eu preciso de uma Declarao de Tipo de Documento? Como foi visto, o contedo XML pode ser processado sem uma declarao de tipo de documento. Entretanto, existem alguns casos onde a declarao necessria: Ambientes de autoria A maioria dos ambientes de autoria precisa ler e processar declaraes de tipo de documento a fim de entender e reforar o modelo de contedo do documento. Valores padres de atributos Se um documento XML conta com valores padres de atributos, pelo menos uma parte da declarao deve ser processada a fim de se obter os valores padres corretos. Manipulao de espaos em branco A semntica associada com espao em branco em contedo de elementos diferem da semntics associada com espao em branco em contedo misturado. Sem um DTD, no h maneira para o processador distingir os casos, e todos os elementos so efetivamente contedo misturado. Para mais detalhes, veja a seo chamada Manipulao de Espaos em Branco, neste trabalho. Em aplicaes onde uma pessoa compe ou edita os dados, um DTD provavelmente vai ser preciso se qualquer estrutura deve ser garantida. Incluindo uma Declarao de Tipo de Documento Se presente, a declarao de tipo de documento deve ser a primeira coisa em um documento depois de comentrios e instrues de processamento opcionais. A declarao de tipo de documento identifica o elemento raiz do documento e pode conter declaraes adicionais. Todos os documentos XML devem ter um elemento raiz nico que contenha todo o contedo do documento. Declaraes adicionais podem vir de um DTD externo, chamado de subconjunto externo, ou ser includo diretamente no documento, o subconjunto interno, ou ambos: <?XML version="1.0" standalone="no"?> <!DOCTYPE chapter SYSTEM "dbook.dtd" [ <!ENTITY %ulink.module "IGNORE"> <!ELEMENT ulink (#PCDATA)*> <!ATTLIST ulink xml:link CDATA #FIXED "SIMPLE"

xml-attributes CDATA #FIXED "HREF URL" URL ]> CDATA #REQUIRED>

28

Linguagem de Programao II

<chapter>...</chapter> Este exemplo referencia um DTD externo, dbook.dtd, e inclui declaraes de elementos e atributos para o elemento ulink no subconjunto interno. Neste caso, ulink d a semntica de um link simples da especificao XLink. Note que as declaraes no subconjunto interno no leva em conta as declaraes no subconjunto externo. O processador XML l o subconjunto interno antes do externo e a primeira declarao tem precedncia. A fim de determinar se um documento vlido, o processador XML deve ler a declarao de tipo de documento inteira (ambos os subconjuntos). Mas para algumas aplicaes, a validao pode no ser precisa, e pode ser suficiente para o processador ler somente o subconjunto interno. No exemplo acima, se a validade no importante e a nica razo para ler a declarao de tipo de documento identifcar a semntica de ulink, a leitura do subconjunto externo no necessria. Voc pode comunicar estas informaes na declarao de documento standalone. A declarao de documento standalone, standalone="yes" ou standalone="no", ocorre na declarao XML. Um valor yes indica que somente declaraes internas precisam ser processadas. Um valor no indica que ambas as declaraes interna e externa devem ser processadas. Outras questes de marcao Alm da marcao, existem algumas outras questes a considerar: manipulao de espaos em branco, normalizao de valores dos atributos e a linguagem com a qual o documento foi escrito. Manipulao de Espaos em Branco A manipulao de espaos em brancos uma questo sutil. Considere o seguinte fragmento de contedo: <piada> <Joo>Diga <citao>boa noite</citao>, Maria.</Joo> O espao em branco (a nova linha entre <piada> e <Joo> ) significante? Provavelmente no. Mas como voc pode afirmar isto? Voc somente pode determinar se um espao em branco significante se voc conhece o modelo de contedo dos elementos em questo. Em resumo, um espao em branco significante em contedo misturado e insignificante em contedo de elemento. A regra para os processadores XML que eles devem passar por todos os caracteres que no so marcao na aplicao. Se o processador um processador de validao, ele tambm deve informar aplicao se os caracteres espaos em branco so significantes. O atributo especial xml:space pode ser usado para indicar explicitamente que os espaos em branco so significantes. Em qualquer elemento que inclua a especificao de atributo xml:space='preserve', todos os espaos em branco naquele elemento (e dentro dos subelementos que no alteram explicitamente xml:space) sero significantes. Os nicos valores vlidos para xml:space so preserve e default. O valor default indica que o processamento padro desejado. Em um DTD, o atributo xml:space deve ser declarado como um tipo enumerado com somente estes dois valores.

29

Linguagem de Programao II

Uma ltima observao sobre espaos em branco: em texto analisvel, os processadores XML so requeridos para normalizar todas as marcas de final de linha para um um nico caracter de alimentao de linha (&#A;). Isto raramente de interesse dos autores, mas elimina um nmero de questes de portabilidade de plataformas cruzadas. Normalizao dos valores de atributos O processador XML executa a normalizao dos valores de atributos em valores de atributos: referncias a caracteres so substitudas por caracteres referenciados, referncias a entidades s resolvidas (recursivamente) e os espaos em branco so normalizados. Identificao da linguagem Muitas aplicaes de processamento de documentos podem se beneficiar da informao sobre a linguagem natural com a qual o documento foi escrito. A XML define o atributo xml:lang para identificar a linguagem. Visto que o propsito deste atributo padronizar a informao entre as aplicaes, a especificao XML tambm descreve como as linguagens devem ser identificadas.

Validao Dada a discusso precedente de declaraes de tipos, conclui-se que uns documentos so vlidos e outros no. Existem duas categorias de documentos XML: bem formatados e vlidos. Documentos Bem Formatados Um documento somente pode ser bem formatado se ele obedece a sintaxe da XML. Um documento que inclui seqncias de caracteres de marcao que no podem ser analisadas ou so invlidas no podem ser bem formatados. Alm disso, o documento deve atender a todas as seguintes condies (subentendendo-se que algumas destas condies podem exigir experincia com SGML): A instncia do documento deve estar conforme a gramtica dos documentos XML. Em particular, algumas construes de marcaes (referncias a entidades parmetro, por exemplo) so somente permitidas em locais especficos. O documento no bem formatadose tais ocorrerem em outros locais, ainda que o documento esteja bem formatado nos outros casos. O texto de substituio para todas as entidades parmetro referenciadas dentro de uma declarao de marcao consiste em zero ou mais declaraes de marcaes completas. (Nenhuma entidade usada no documento pode consistir de somente uma parte de uma declarao de marcao.) Nenhum atributo pode aparecer mais do que uma vez na mesma marca de incio. Valores de atributos cadeias de caracteres no podem conter referncias a entidades externas. Marcas no-vazias devem ser apropriadamente aninhadas.

30

Linguagem de Programao II

Entidades parmetro devem ser declaradas antes de serem usadas. Todas as entidades devem ser declaradas, exceto as seguintes: amp, lt, gt, apos e quot. Uma entidade binria no pode ser referenciada no fluxo do contedo; ela pode ser usada somente em um atributo declarado como ENTITY ou ENTITIES. Nem a texto ou entidades parmetro so permitidas recursividade, direta ou indiretamente.

Por definio, se um documento no est bem formatado, ele no XML. Isto significa que no h documento XML que no seja bem formatado e os processadores XML no fazem nada com tais documentos. Documentos Um documento bem formatado vlido somente se ele contm uma declarao de tipo de documento e se o documento obedece as restries da declarao (seqncia e aninhamento de elementos vlido, atributos necessrios so fornecidos, valores de atributos so do tipo correto, etc.). A especificao XML identifica todos os creitrios em detalhes. Ligao As especificaes XPointer e XLink, atualmente em desenvolvimento, introduz um modelo ligao padro para a XML. Em considerao ao espao e o fato de que rascunho da XLink ainda est sendo desenvolvido, o que segue um exame dos recursos da XLink, em vez de uma descrio detalhada da especificao. Em XLink, um link expressa um relacionamento entre recursos. Um recurso qualquer local (um elemento, o seu contedo, ou uma parte do seu contedo, por exemplo) que enderevel em um link. A natureza exata do relacionamento entre os recursos depende da aplicao que processa o link e da informao semntica fornecida. Alguns destaques da XLink so: a XLink lhe d controle sobre a semntica do link. a XLink introduz Links Extendidos. Links Extendidos podem envolver mais de dois recursos. a XPointer introduz Ponteiros Extendidos (XPointers). Os XPointers fornecem um mtodo sofisticado de localizar recursos. Em particular, os XPointers lhe permitem localizar recursos arbitrrios em um documento, sem que seja necessrio que o recurso seja identificado com um atributo ID.

Visto que a XML no tem um conjunto fixo de elementos, o nome do elemento de ligao no pode ser usado para localizar links. Em vez disso, os processadores XML identificam os links pelo reconhecimento do atributo xml:link. Outros atributos podem ser usados para fornecer informaes adicionais ao processador XML. Um recurso de renomeao de atributos existe para contronar colises de nome em aplicaes existentes. Dois atributos, show e actuate lhe permitem exercer algum controle sobre o comportamento da ligao. O atributo show determina se o documento para o qual est se fazendo a ligao est embutido no documento atual, substitui o documento

31

Linguagem de Programao II

atual ou mostrado em uma nova janela quando o link acionado. actuate determina como o link acionado, ou automaticamente ou quando selecionado pelo usurio. Algumas aplicaes iro necessitar de um controle muito mais acurado sobre os comportamento dos links. Para estas aplicaes, locais padro so fornecidos onde a semntica adicional pode ser expressa. Links Simples Um link simples lembra fortemente um link HTML <A>: <link xml:link="simple" href="locator">Texto do Link</link> Um link simples identifica um link entre dois recursos, um dos quais o prprio contedo do elemento do link. Este um link in-line. Um localizador identifica o outro recurso. Um localizador pode ser um URL, uma consulta ou um Ponteiro Extendido. Links Extendidos Links extendidos lhe permitem expressar relacionamentos entre mais de dois recursos: <elink xml:link="extended" role="annotation"> <locator xml:link="locator" href="text.loc">Texto</locator> <locator xml:link="locator" href="annot1.loc">Anotaes</locator> <locator xml:link="locator" href="annot2.loc">Mais Anotaes</locator> <locator xml:link="locator" href="litcrit.loc">Literatura Crtica</locator> </elink> Este exemplo mostra como os relacionamentos entre um trabalho literrio, anotaes e literatura crtica deste documento podem ser expressos. Note que este link separado de todos os recursos envolvidos. Links extendidos podem ser in-line, para que o contedo do elemento de ligao (outro que no dseja elemento localizadores) participe no link como um recurso, mas esse no necessariamente o caso. O exemplo acima um link out-of-line link, pois no usa seu contedo como um recurso. Ponteiros Extendidos Referncias cruzadas com o mecanismo XML ID/IDREF (que similar ao mecanismo #fragment em HTML) requer que o documento para o qual se est ligando tenha ncoras definidas, onde os links so desejados (e tecnicamente requer que ID e IDREF ocorram no mesmo documento). Este pode no ser sempre o caso, e algumas vezes no possvel modificar o documento que voc deseja ligar. Os XML XPointers tomam emprestados conceitos de HyTime e da Text Encoding Initiative (TEI). Os XPointers oferecem a sintaxe que lhe permite localizar um recurso atravs da rvore de elementos do documento que contm o recurso. Por exemplo:
32

Linguagem de Programao II

criana(2,piada).(3,.) locazida a terceira criana (qulaquer que possa ser) da segunda piada no documento. Os XPointers podem expandir as regies da rvore. A expanso XPointer span(criana(2,piada),criana(3,piada)) seleciona a segunda e terceira oldjoke no documento. Alm da seleo atravs de elementos, os XPointers permitem a seleo por ID, valores de atributos e correspodncia de cadeias de caracteres. Neste trabalho, o XPointer span(raiz()criana(3,set1)string(1,"Aqui",0), raiz()ctriana(3,set1)string(1,"Aqui",4)) seleciona a primeira ocorrncia da palavra "Aqui". O link pode ser estabelecido por um link extendido sem modificar o documento alvo. Note que o alcance de um XPointer pode expandir uma seo estruturamente invlida do documento. A especificao XLink no especifica como as aplicaes devem tratar tais alcances. Grupos de Links Extendidos Links out-of-line introduzem a possibilidade de que um processador XML possa precisar processar vrios arquivos para mostrar corretamento o documento de hipertexto. De acordo com o exemplo de texto de antoao acima, e assumindo que o texto , na verdade, somente para leitura, o processador XML deve carregar pelo menos o texto e o documento que contm o link extendido. A XLink define os Grupos de Links Extendidos para este propsito. Grupos de Links Extendidos podem ser usados recursicamente, e um atributo steps fornecido para limitar o nvel da recursividade. Entendendo as Partes Alguns documentos, particularmente documentos compostos que colaboram com XLinks, so provavelmente compostos de elementos de mltiplos conuntos de marcas. Por exemplo, um artigo tcnico pode ser escrito usando-se um DTD, mas inclui equaes matemticas escritas em MathML e grficos vetoriais escritos em um terceiro DTD. A fim de uma aplicao de processamento associar a semntica correta com um elemento, ela deve conhecer que conjunto de marcas o elemento possui. A XML resolve este problema com nomes espaados. Nomes espaados em XML descreve este sistema em detalhes. O princpio permitir a um prefixo delimitado por dois pontos associar-se com alguma semntica externa atravs de uma URI. O uso deste prefixo identifica o elemento como tendo a semntica descrita pela URI. Por exemplo: <bk:para>A frao 3/4 pode ser expressa em MathML como: <ml:cn type="rational">3<ml:sep/>4</ml:cn>.</bk:para> O elemento para neste exemplo identificado explicitamente como sendo o nome espaado identificado pelo prefixo bk, que deve ter sido definido anteriormente no
33

Linguagem de Programao II

documento, e os elementos cn e sep so do elemento ml (presumivelmente associado de alguma maneira com MathML). Estilo e Substncia Os navegadores HTML so de difcil codificao. Embora alguns navegadores possam basear sua formatao em Cascading Style Sheets (CSS), eles ainda contm convenes de difcil codificao para documentos que no fornecem uma folha de estilos. Um cabealho de primeiro nvel aparece da maneira correta, pois o navegador reconhece a marca <h1>. Novamente, visto que os documentos XML no tm um conjunto fixo de marcas, testa aproximao no funcionar. A apresentao de um documento XML dependente de uma folha de estilos. A linguagem de folha de estilos padro para os documentos XML a Extensible Style Language (XSL). Outras linguagens de folhas de estilos, como Cascading Style Sheets, tambm so suportadas.

34

Você também pode gostar