O SGML fornece um mecanismo para indicar que uma parte particular do documento deve ser processada de uma forma especial. Estas partes são denominadas “sessões marcadas”.
Como você esperaria, sendo uma
construção SGML, uma sessão
marcada inicia com um <!
.
O primeiro colchete começa a limitar a sessão marcada.
A Palavra-chave
descreve como
esta sessão marcada deve ser processada pelo
interpretador.
O segundo colchete indica que o conteúdo da sessão marcada inicia aqui.
A sessão marcada é finalizada pelo fechamento
dos dois colchetes e então retornando ao contexto do
documento a partir do contexto SGML com o
>
.
Estas palavras chave denotam o modelo do conteúdo das sessões marcadas, e permitem que você o altere a partir do padrão.
Quando um interpretador SGML esta processando um documento ele tenta seguir o que chamamos de “modelo de conteúdo”
Resumidamente, o modelo de conteúdo descreve que tipo de conteúdo o interpretador esta esperando encontrar, e o que fará com ele quando o encontrar.
Os dois modelos de conteúdo que você
provavelmente irá achar mais úteis
são o CDATA
e o
RCDATA
.
O CDATA
é para
“Dados de Caracter”. Se o interpretador
está neste modelo de conteúdo então ele
está esperando encontrar caracteres, e apenas
caracteres. Neste modelo os símbolos
<
e o &
perdem o seu status especial, e serão tratados como
caracteres ordinários.
O RCDATA
é para
“Referências de entidade e dados de caracter
”. Se o interpretador está neste
modelo de conteúdo ele está esperando
encontrar caracteres e entidades.
O símbolo <
perde
o seu status especial, mas o &
continuará sendo tratado como o inicio de uma
entidade geral.
Isto é particularmente útil se você
está incluindo algum texto literal o qual
contém muitos caracteres <
e
&
. Ao invés de atravessar o
texto todo tendo que verificar se todos os
<
estão convertidos para um
<
e todos os
&
estão convertidos para um
&
pode ser mais simples marcar
a sessão como contendo apenas
CDATA
. Quando o interpretador SGML
encontrá-los ele irá ignorar os símbolos
<
e &
embutidos no conteúdo.
Quando você utiliza CDATA
ou
RCDATA
nos exemplos de texto marcado em
SGML, tenha em mente que o conteúdo do
CDATA
não é validado.
Você tem que verificar o SGML incluso no texto
utilizando algum outro meio. Você pode, por
exemplo, escrever o exemplo em outro documento,
validar o código de exemplo, e então
colá-lo para o seu conteúdo
CDATA
.
Se você examinar o fonte deste documento você irá ver que esta técnica foi utilizada por toda parte.
Se a palavra chave for INCLUDE
então o conteúdo da sessão marcada
será processado. Se a palavra chave for
IGNORE
então a sessão
marcada será ignorada e não será
processada. Ela não irá aparecer no
output.
INCLUDE
e
IGNORE
nas sessões marcadasPor si só, isto não é muito útil. Se você desejar remover o texto do seu documento você pode cortá-lo fora, ou comentá-lo.
Torna-se mais útil quando você utilizar entidades de parâmetro para controlá-lo. Lembre-se que entidades de parâmetro só podem ser utilizadas em um contexto SGML, e que a palavra chave de uma sessão marcada é um contexto SGML.
Por exemplo, suponha que você produza uma cópia impressa e uma versão eletrônica de alguma documentação. Você pode desejar incluir na versão eletrônica algum conteúdo extra, o qual não deve aparecer na versão impressa.
Crie uma entidade de parâmetro, e configure seu valor
para INCLUDE
. Escreva seu documento,
usando uma sessão marcada para delimitar o
conteúdo
que deve aparecer apenas na versão eletrônica.
Nesta sessão marcada utilize a entidade de parâmetro
no lugar da palavra chave.
Quando você desejar produzir uma cópia
impressa do documento, altere o valor da entidade de
parâmetro para IGNORE
e reprocesse o
documento.
Quando for produzir uma versão impressa do documento, altere a definição da entidade para;
Ao reprocessar o documento, a sessão marcada
que utilizar a entidade %electronic.copy
como a sua palavra chave será
ignorada.
Crie um novo arquivo chamado
section.xml
, o qual deve conter o
seguinte conteúdo:
Normalize este arquivo utilizando o
osgmlnorm
e examine o resultado.
Observe quais parágrafos apareceram, quais desapareceram
e o que aconteceu com o conteúdo da
sessão marcada como CDATA.
Altere a definição da entidade
text.output
de INCLUDE
para IGNORE
. Re-normalize
o arquivo, e observe o resultado para ver o que foi
alterado.
Este, e outros documentos, podem ser obtidos em ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/
Para perguntas sobre FreeBSD, leia a
documentação antes de contatar
<questions@FreeBSD.org>.
Para perguntas sobre esta documentação, envie e-mail para
<doc@FreeBSD.org>.