Seção 3: Autores

Q 3.14: Vejo que existe muita menção sobre alternativas para DTDs. O que é um Schema?

Como uma DTD para validação de conteúdo, assim como estrutura.

A recomendação do Schema XML do W3C fornece um meio de especificar a digitação formal de dados e a validação do conteúdo do elemento em termos de tipos de dados, de modo que os designers de tipos de documentos podem fornecer critérios para verificar o conteúdo de dados dos elementos, bem como a própria marcação. Os esquemas são escritos em XML Document Syntax, como são os documentos XML, evitando a necessidade de processamento de software para poder ler XML Declaration Syntax (usado para DTDs).

Há uma FAQ de Esquema em http://schema.org/docs/faq.html O termo "vocabulário" às vezes é usado para se referir DTDs e Schemas juntos. Os Schemas visam o comércio eletrônico, o controle de dados e as aplicações de estilo de banco de dados onde o conteúdo de dados de caracteres requer validação e onde é necessário um controle de dados mais rigoroso do que é possível com DTDs; Ou onde é necessária uma forte digitação de dados. Normalmente, eles não são necessários para aplicativos tradicionais de publicação de documentos de texto, onde as DTDs continuam a ser usadas.

Ao contrário de DTDs, Schemas não podem ser especificados em uma Declaração de Tipo de Documento XML. Eles podem ser especificados em um Namespace , onde o software com conhecimento de esquema deve buscá-lo, mas isso é opcional:

    <?xml version="1.0"?>
<invoice xml:id="abc123"
         xmlns="http://example.org/ns/books/"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://acme.wilycoyote.org/xsd/invoice.xsd">
...
</invoice>         
    

Mais comumente, você especifica o Schema no seu software de processamento, que deve gravar separadamente qual Esquema é usado pelo qual a instância do documento XML.

Em contraste com a complexidade do modelo do Esquema do W3C, o Relax NG é uma linguagem de esquema XML leve e fácil de usar desenvolvida por James Clark (veja http://relaxng.org/ ) com o desenvolvimento hospedado pelo OASIS . Ele permite uma riqueza de expressão semelhante e o uso de XML como sua sintaxe, mas fornece uma sintaxe simplificada adicional, que é mais fácil de usar para aqueles que estão acostumados a DTDs.

Autores e editores devem notar que o plural em inglês do Esquema é um Esquema: o uso do singular para fazer o dever para o plural é um falecido querido para o semi-alfabetizado; O uso do esquema antigo (grego) plural é didática desnecessária.

Os escritores também devem notar que o plural de DTD é DTDs : não há apóstrofo - veja Truss (2003 ).

Bob DuCharme escreve:

Muitos desenvolvedores XML estavam insatisfeitos com a sintaxe das declarações de marcação descritas na especificação XML por dois motivos. Primeiro, eles sentiram que se os documentos XML fossem tão bons em descrever informações estruturadas, então a descrição da própria estrutura de um tipo de documento (seu schema) deveria estar em um documento XML em vez de escrito com sua própria sintaxe especial. Além de ser mais consistente, isso facilitaria a edição e manipulação do schema com ferramentas regulares de manipulação de documentos. Em segundo lugar, eles sentiram que a notação DTD tradicional não permitia aos designers de tipos de documentos o poder de impor restrições suficientes aos dados - por exemplo, a capacidade de dizer que um determinado tipo de elemento deve ter sempre um valor inteiro positivo, que pode não ser Vazio, ou que deve ser uma lista de opções possíveis. Isso facilita o desenvolvimento de software usando esses dados porque o desenvolvedor possui menos código de verificação de erros para escrever.

Peter Flynn escreve:

Um DTD é apenas para especificar a estrutura do elemento de um arquivo XML, com uma quantidade muito limitada de controle sobre os valores de atributos. Ele dá os nomes dos elementos, atributos e entidades que podem ser usados, e como eles se encaixam. DTDs são projetados para uso com documentos de texto tradicionais, não dados retangulares ou tabulares, de modo que o conceito de tipos de dados não é tão relevante: o texto é apenas texto. Se você precisar especificar intervalos numéricos ou definir limitações ou verificações no conteúdo de dados de caracteres (texto), um DTD é a ferramenta errada.