Entidades são um mecanismo para atribuir nomes para pedaços de conteúdo. Quando o interpretador SGML processar o seu documento, qualquer entidade que ele encontrar será substituída pelo conteúdo da entidade.
Esta é uma boa forma de ter pedaços de conteúdo reutilizáveis e facilmente alteráveis em seus documentos SGML. Esta é também a única forma de incluir um arquivo marcado dentro de outro utilizando SGML.
Existem dois tipos de entidades que podem ser utilizadas em duas situações diferentes; Entidades gerais e Entidades de parâmetros.
Você não pode utilizar uma entidade geral em um contexto SGML (embora você as defina em um). Elas podem ser utilizadas apenas no seu documento. Compare isto com as entidades de parâmetros.
Cada entidade geral possui um nome. Quando você
quer referenciar uma entidade geral (e consequentemente
incluir o texto que ela representa no seu documento),
você escreve
&
.
Por exemplo, suponha que você possui uma
entidade chamada nome-da-entidade
;current.version
, a qual
expande para a versão atual do seu produto.
Você pode escrever:
Quando o número de versão mudar, você pode simplesmente alterar a definição do valor da entidade geral e reprocessar o seu documento.
Você também pode utilizar entidades gerais
para incorporar caracteres que você não poderia
incorporar de outra forma em um documento SGML. Por exemplo,
os caracteres <
e
&
não podem aparecer normalmente
em um documento SGML. Quando o interpretador SGML vê
o símbolo <
ele assume que
aquilo é uma tag (uma tag de abertura ou de fechamento)
que está a ponto de aparecer, e quando ele vê o
símbolo &
ele assume que o
próximo texto será o nome de uma entidade.
Felizmente, você pode utilizar as duas entidades
gerais <
e
&
sempre que você precisar
incluí-los.
Uma entidade geral só pode ser definida dentro de um contexto SGML. Tipicamente, isto é feito imediatamente depois da declaração DOCTYPE.
Observe como a declaração DOCTYPE foi estendida adicionando-se um colchete no final da primeira linha. As duas entidades estão definidas nas próximas duas linhas, antes que o colchete seja fechado, e então a declaração DOTYPE é fechada.
O colchete é necessário para indicar que nós estamos extendendo o DTD indicado pela declaração DOCTYPE.
Assim como as entidades gerais , as entidades de parâmetro são utilizadas para atribuir um nome a pedaços reutilizáveis de texto. Entretanto, enquanto as entidades gerais só podem ser utilizadas com o seu documento, as entidades de parâmetro podem ser utilizadas apenas dentro de um contexto SGML.
As entidades de parâmetro são definidas de uma
forma similar as entidades gerais. Entretanto, ao
invés de utilizar
&
como referência, utiliza
nome-da-entidade
;%
[1].
A definição também inclui o
nome-da-entidade
;%
entre a palavra chave
ENTITY
e o nome da entidade.
Isto pode não parecer particularmente útil. Mas ele será.
Adicione uma entidade geral ao
example.xml
.
Valide o documento utilizando o onsgmls
Carregue o arquivo example.xml
no seu navegador web (Você pode precisar
copiá-lo para example.html
antes que o seu navegador possa reconhecê-lo como
um documento HTML).
A menos que o seu navegador seja muito
avançado, você não irá ver a
entidade referenciada por &version;
substituída pelo número de versão.
A maioria dos navegadores web possuem interpretadores
muito simplistas os quais não manuseiam
corretamente SGML [2].
A solução é normalizar seu documento utilizando um normalizador SGML. Um normalizador lê um SGML válido e retorna um SGML igualmente válido o qual foi transformado de alguma forma. Uma das formas em que o normalizador transforma o SGML é expandindo todas as entidades referenciadas no documento, substituindo as entidades pelo texto que elas representam.
Você pode utilizar o osgmlnorm
para fazer isto:
%
osgmlnorm example.xml > example.html
Você deve encontrar uma cópia
normalizada (isto é, entidades referenciadas
expandidas) do seu documento no arquivo
example.html
, pronta para ser
carregada no seu navegador web.
Se você examinar o retorno do
osgmlnorm
você ira ver que ele
não inclui a declaração DOCTYPE no
inicio. Para incluí-la você precisa
utilizar a opção -d
:
%
osgmlnorm -d example.xml > example.html
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>.