Featured Posts

ExtJS, Spring MVC 3 e Hibernate 3.5: Exemplo de um... Este tutorial demonstra como implementar um CRUD Grid (Create, Read, Update, Delete) usando ExtJS, Spring MVC 3 e Hibernate 3.5 O que geralmente queremos fazer com os dados Create (Criar) - (Insert) Read...

Readmore

ExtJS plugin: PagingToolbarResizer Ei pessoal, Este é o meu primeiro plugin em ExtJS. Apesar de não ser algo complicado, estou muito feliz e é um grande feito para mim! Bem, chega e introduções e vamos ao que realmente interessa. O...

Readmore

8++ perguntas para @loiane - por @hlegius Tempos atrás o Helio me enviou um questionário para eu responder, uma espécie de "entrevista". E agora ele publicou no blog dele! :) São minhas opiniões pessoais, e isso não quer dizer que estou...

Readmore

Carreira em TI: Currículo em Inglês Uma das grandes dificuldades para as pessoas da área de TI é, muitas vezes, escrever um bom currículo em inglês. E ter um currículo em inglês, é essencial, já que inglês é tão importante quanto...

Readmore

Entrevista para o Jornal A Tribuna Jan/2010: Profissões... Na última de semana de janeiro tive a honra de conceder mais uma entrevista para o jornal A Tribuna - vendido no Espírito Santo, meu estado natal - sobre mercado de trabalho na área de TI. A reportagem...

Readmore

Validação de documentos XML com DTD – Introdução ao XML – Parte VII

Posted by Loiane | Posted in XML, tutorial | Posted on 13-04-2009

1

Agora que já sabemos como construir um DTD, vamos construir um, ou seja, mão na massa!

O primeiro passo é definir como vai ser nosso XML.

Suponha que você queira criar um XML que tenha as informações de um cliente. Entre essas informações, você quer incluir o nome do cliente e os dados para contato. Ainda quebramos o nome do cliente em primeiro, meio e último nome; e o contato em endereço e telefone. Ainda, quebramos o endereço em rua, numero, complemento, bairro, cidade, estado e cep. Também quebramos o telefone em residencial, comercial e celular. A figura abaixo representa o nosso modelo:

gif_1

Vamos então declarar os elementos desse XML conforme foi visto neste post.

dtd1

O primeiro passo foi feito! Declaramos toda a árvore de elementos. Agora precisamos especificar o tipo dos elementos que não possuem outros elementos contidos nestes:

dtd2

Pronto, já temos um DTD básico formado. Vamos então acrescentar alguns atributos aos elementos.

O cliente terá um atributo id que será sua identificação única, além da situação, que indica se é um cliente ativo ou inativo (não é mais cliente) e também tem como valor padrão o valor ‘ativo’. O cliente também terá um atributo que indica em qual loja realizou a compra (São Paulo, Rio de Janeiro, Belo Horizonte, Vitória), mas como nossa aplicação apenas tratará cliente de São Paulo, o atributo sempre terá esse valor.

O endereço terá um atributo que indica o tipo do endereço: residencial ou comercial. E terá também, um atributo que indica se aquele endereço é o endereço para correspondência. Observação: se um cliente tiver mais de um endereço, não é necessário indicar o atributo de correspondência em todos, apenas no que for afirmativo.

Acrescentando os atributos ao DTD:

dtd6

Vamos adicionar novas restrições aos elementos agora:
- O elemento meio é opcional, afinal, uma pessoa pode não ter nome do meio;
- Como já foi dito, um cliente pode possuir um ou mais endereços;
- Não é necessário preencher o campo complemento;
- O cliente pode ter nenhum ou vários números de celular;
- O cliente pode não ter um telefone comercial;

Fazemos então as alterações e teremos o seguinte DTD, que é o nosso DTD completo!

dtd3

Prontinho! Agora vamos criar um XML que seja compatível com nosso DTD. Abaixo, o XML mais simples que podemos gerar a partir do DTD criado:

dtd4

Ah, lembra que no post passado foi dito que um XML poderia ter um DTD embutido? Eis um exemplo bem simples:

dtd5

Conclusão

Vimos neste post como construir um DTD na prática. No próximo post, vamos ver uma alternativa ao DTD, o XML Schema.

Você pode baixar os arquivos deste post aqui:

download

Até a próxima!

  • Share/Bookmark