Até agora discutiu-se uma tecnologia que permite padronizar a anotação e produção documental e até mesmo validar estruturalmente os documentos que estão a ser produzidos. No entanto, não se abordou ainda dois aspectos fundamentais que são: o conteúdo e o produto final.
Relativamente ao conteúdo, pode-se questionar se não haverá uma forma de garantir certas restrições ou de impôr certas condições de contexto que ajudem a detectar e a precaver erros semânticos que, quando acontecem, podem ter consequências graves e embaraçosas, como se irá ver em certos exemplos. Mas, nesta área e enquando esta dissertação decorria não havia nada que permitisse de alguma maneira realizar esta tarefa. Daí ter sido alvo de um estudo aprofundado que teve como resultados alguns dos contributos mais importantes desta dissertação. Este assunto foi baptizado de "Semântica Estática" e é discutido em detalhe no Capítulo 7.
A questão do produto final é mais crítica que a anterior pois quem produz um documento quer depois vê-lo impresso ou distribuí-lo; se tal não fosse possível de certeza que não adoptaria a tecnologia em causa.
Assim, surgiu uma norma que visa padronizar a transformação dos documentos SGML nos vários produtos finais pretendidos pelos utilizadores. Este processo é discutido na Secção 6.2 que foi baptizada com o nome de "Semântica Dinâmica".
Reinventando a Roda? O facto de não existirem metodologias associadas ao SGML que permitam especificar a semântica estática, não quer dizer que aquelas tenham de ser desenvolvidas de raiz. Deve-se procurar dentro do mesmo domínio se não haverá já soluções desenvolvidas capazes de serem adaptadas a este caso. Assim, na próxima secção, vai-se estabelecer uma relação entre o processamento documental e o processamento das linguagens de programação, na tentativa de reaproveitar algumas soluções.
A seguir, apresenta-se uma secção dedicada à semântica dinâmica, mais relevante para o utilizador que quer ver o resultado final logo que possível e por isso, de alguma maneira, já normalizada há alguns anos.
No fim, na secção dedicada à semântica estática, apresentam-se algumas das inovações mais relevantes deste trabalho, com discussão de casos de estudo.
Neste momento, pode-se traçar um paralelismo entre um documento SGML e um programa escrito numa linguagem de programação. Este paralelismo é mais profundo do que parece; pode-se mesmo arriscar e dizer que a evolução que está a sofrer o processamento dos documentos é a mesma já sentida no processamento das linguagens de programação. Assim, surgiu a ideia de estudar este paralelismo e ver se as soluções adoptadas para as linguagens de programação poderiam ser aproveitadas para o processamento dos documentos estruturados, especialmente no campo do tratamento semântico que estava menos desenvolvido.
A tabela seguinte apresenta o resultado da comparação destes dois universos das ciências da computação.
Tabela 6-1. Documentos e Programas
| Instância do Documento | Programa |
| Linguagem de Anotação | Linguagem de Programação |
| Conjunto de anotações | Vocabulário |
| DTD | Gramática |
Pode-se ver o DTD de um documento SGML como uma gramática generativa formal. A partir daqui é fácil estabelecer as relações apresentadas na tabela.
Assim como as gramáticas são o cerne do processamento das linguagens de programação, também os DTDs serão o cerne do processamento dos documentos estruturados. As anotações definidas no DTD correspondem ao vocabulário da linguagem. Uma instância documental escrita de acordo com um DTD é equivalente a um programa escrito numa linguagem de programação.
É sempre necessário processar um programa para se obter o código executável correspondente. O processamento de um programa, ainda hoje designado por compilação, compreende as seguintes fases:
Análise Léxica
Análise Sintáctica
Análise Semântica Estática
Geração de Código, também designada por Processamento da Semântica Dinâmica
No início, o modelo utilizado e que ainda se utiliza, foi a Tradução Dirigida pela Sintaxe (TDS). Neste modelo, a análise léxica evoluiu e os analisadores léxicos são gerados automaticamente a partir da sua especificação. A análise sintáctica também evoluiu nesse sentido e os analisadores sintácticos são também gerados automaticamente mediante a sua especificação, mas a análise semântica não. Esta é programada pelo autor da linguagem na linguagem hospedeira (linguagem utilizada para implementar os analisadores gerados nas outras fases da compilação).
Olhando agora para o universo do SGML, o modelo TDS que se acabou de descrever corresponde ao estado actual de desenvolvimento do modelo de processamento do SGML. O parser de SGML realiza a análise léxica e sintáctica e a análise semântica é deixada para ser programada num ambiente externo.
Em 1968, Donald Knuth introduziu uma nova abordagem: as Gramáticas de Atributos [Knu68].
Com Gramáticas de Atributos consegue-se manter a simplicidade das Gramáticas Independentes de Contexto mas agora, com a possibilidade de dar significado às frases à custa de caracterizar os seus símbolos via atributos e especificar a semântica através de equações sobre esses atributos. Este novo formalismo deu origem a um novo modelo de processamento de linguagens de programação designado por Tradução Dirigida pela Semântica.
De alguma forma, o trabalho desenvolvido nesta tese colocou o processamento documental no ponto em que se encontrava o processamento das linguagens de programação no início dos anos 80. Há um formalismo para especificar a semântica, é preciso um motor capaz de o processar. No fim deste capítulo descrevem-se as várias hipóteses estudadas e desenvolvidas para permitir a especificação de semântica em documentos estruturados, mas antes ir-se-á ver de onde vem essa necessidade.