Seção 3: Autores

Q 3.12: Como criar meu próprio tipo de documento?

Analise a classe de documentos e escreva um DTD ou Schema

Os tipos de documentos geralmente precisam de uma descrição formal, seja um DTD ou um Esquema. Embora seja possível processar documentos XML bem formados sem qualquer descrição, tentar criá-los sem um é pedir problemas. Um DTD ou Esquema é usado com um editor XML ou interface de API para orientar e controlar a construção do documento, certificando-se de que os elementos certos vão nos lugares certos.

A criação do seu próprio tipo de documento, portanto, começa com uma análise da classe de documentos que deseja codificar: relatórios, faturas, cartas, arquivos de configuração, solicitações de verificação de cartão de crédito, romances, peças, teses ou qualquer outra coisa. Depois de ter a estrutura correta, você escreve o código para expressar isso formalmente, usando a sintaxe DTD ou Schema.

Se você quiser criar uma DTD, você precisa aprender a sintaxe da Declaração XML (muito simples: as palavras-chave de declaração começam com <! Em vez de apenas o suporte de ângulo aberto e a forma como as declarações são formadas também difere ligeiramente). Aqui está um exemplo de DTD para uma lista de compras, com base no fragmento usado anteriormente :

    <!ELEMENT Shopping-List (Item)+>
<!ELEMENT Item (#PCDATA)>
    

Diz que deve haver um elemento chamado Shopping-List e que deve conter elementos chamados de Item : deve haver pelo menos um Item (esse é o sinal de mais), mas pode haver mais de um Item. Ele também diz que o elemento Item pode conter apenas dados de caracteres analisados ​​(PCDATA, ou seja, texto: sem mais marcação).

Como não há outro elemento que contenha a Shopping-List , esse elemento é assumido como o elemento 'raiz', que inclui todo o resto no documento. Agora você pode usá-lo para criar um arquivo XML: dê ao editor as declarações:


<?xml version="1.0"?> 
<!DOCTYPE Shopping-List SYSTEM "shoplist.dtd"> 
    

(Assumindo que você colocou a DTD nesse arquivo). Agora o seu editor permitirá que você crie arquivos de acordo com o padrão:

    <Shopping-List>
  <Item>Chocolate</Item>
  <Item>Sugar</Item>
  <Item>Butter</Item>
</Shopping-List>
    

É possível desenvolver DTDs complexas e poderosas de grande sutileza, mas para qualquer uso significativo, você deve aprender mais sobre a análise de sistemas documentais e o design do tipo de documento. Veja, por exemplo Maler e el Andaloussie (1995 ): isso foi escrito para o SGML, mas talvez 95% deles se apliquem ao XML, como o XML é muito mais simples que o SGML completo - veja a lista de restrições que mostra o que foi cortado.

Aliás, um arquivo DTD nunca nunca teve uma Declaração DOCTYPE nele: isso ocorre apenas em uma instância de documento XML (é o que faz referência à DTD). E um arquivo DTD também nunca teve uma Declaração XML no topo. Infelizmente ainda existe um software rodando do qual se insere um ou ambos.