7.7. Usando Entidades para Incluir Arquivos

Ambas as entidades geral e parâmetro são particularmente úteis para incluir um arquivo dentro de outro .

7.7.1. Usando Entidades Gerais para Incluir Arquivos

Considere algum conteúdo para um livro XML organizado em arquivos, um arquivo por capítulo, chamado chapter1.xml, chapter2.xml e assim por diante, com um book.xml que conterá esses capítulos.

Para usar o conteúdo desses arquivos como valores para entidades, eles são declarados com a palavra-chave SYSTEM. Isso direciona o XML parser a incluir o conteúdo do arquivo nomeado como o valor da entidade.

Exemplo 7.10. Usando Entidades Gerais para Incluir Arquivos
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" [
<!ENTITY chapter.1 SYSTEM "chapter1.xml">
<!ENTITY chapter.2 SYSTEM "chapter2.xml">
<!ENTITY chapter.3 SYSTEM "chapter3.xml">
<!-- And so forth -->
]>

<html xmlns="http://www.w3.org/1999/xhtml">
  <!-- Use the entities to load in the chapters -->

  &chapter.1;
  &chapter.2;
  &chapter.3;
</html>

Atenção:

Ao usar entidades gerais para incluir outros arquivos em um documento, os arquivos que estão sendo incluídos ( chapter1.xml, chapter2.xml e assim por diante) não devem começar com uma declaração DOCTYPE. Este é um erro de sintaxe porque as entidades são constructors de baixo nível e são transformadas antes que qualquer análise ocorra.

7.7.2. Usando Entidades de Parâmetro para Incluir Arquivos

As entidades de parâmetro só podem ser usadas dentro de um contexto XML. A inclusão de um arquivo em um contexto XML pode ser usada para garantir que as entidades gerais sejam reutilizáveis.

Suponha que haja muitos capítulos no documento, e esses capítulos foram reutilizados em dois livros diferentes, cada livro organizando os capítulos de maneira diferente.

As entidades podem ser listadas no topo de cada livro, mas isso rapidamente se torna difícil de gerenciar.

Em vez disso, coloque as definições gerais da entidade em um arquivo e use uma entidade de parâmetro para incluir esse arquivo no documento.

Exemplo 7.11. Usando Entidades de Parâmetro para Incluir Arquivos

Coloque as definições de entidade em um arquivo separado chamado chapters.ent contendo este texto:

<!ENTITY chapter.1 SYSTEM "chapter1.xml">
<!ENTITY chapter.2 SYSTEM "chapter2.xml">
<!ENTITY chapter.3 SYSTEM "chapter3.xml">

Crie uma entidade de parâmetro para se referir ao conteúdo do arquivo. Em seguida, use a entidade de parâmetro para carregar o arquivo no documento, o que tornará todas as entidades gerais disponíveis para uso. Em seguida, use as entidades gerais como antes:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" [
<!-- Define a parameter entity to load in the chapter general entities -->
<!ENTITY % chapters SYSTEM "chapters.ent">

<!-- Now use the parameter entity to load in this file -->
%chapters;
]>

<html xmlns="http://www.w3.org/1999/xhtml">
  &chapter.1;
  &chapter.2;
  &chapter.3;
</html>

7.7.3. Para Fazer...

7.7.3.1. Use Entidades Gerais para Incluir Arquivos

  1. Crie três arquivos, para1.xml, para2.xml e para3.xml.

    Coloque conteúdo como este em cada arquivo:

    <p>This is the first paragraph.</p>
  2. Edite example.xml para que fique assim:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" [
    <!ENTITY version "1.1">
    <!ENTITY para1 SYSTEM "para1.xml">
    <!ENTITY para2 SYSTEM "para2.xml">
    <!ENTITY para3 SYSTEM "para3.xml">
    ]>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
        <title>An Example XHTML File</title>
      </head>
    
      <body>
        <p>The current version of this document is: &version;</p>
    
        &para1;
        &para2;
        &para3;
      </body>
    </html>
  3. Gere example.html ao normalizar example.xml.

    % xmllint --dropdtd --noent example.xml > example.html
  4. Carregue example.html no navegador web e confirme se os arquivos paran.xml foram incluídos em example.html.

7.7.3.2. Use Entidades de Parâmetro para Incluir Arquivos

Nota:

As etapas anteriores devem ser concluídas antes dessa etapa.

  1. Edite example.xml para que fique assim:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" [
    <!ENTITY % entities SYSTEM "entities.ent"> %entities;
    ]>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
        <title>An Example XHTML File</title>
      </head>
    
      <body>
        <p>The current version of this document is: &version;</p>
    
        &para1;
        &para2;
        &para3;
      </body>
    </html>
  2. Crie um novo arquivo chamado entities.ent com este conteúdo:

    <!ENTITY version "1.1">
    <!ENTITY para1 SYSTEM "para1.xml">
    <!ENTITY para2 SYSTEM "para2.xml">
    <!ENTITY para3 SYSTEM "para3.xml">
  3. Gere example.html ao normalizar example.xml.

    % xmllint --dropdtd --noent example.xml > example.html
  4. Carregue example.html no navegador web e confirme se os arquivos paran.xml foram incluídos em example.html.

All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/

Questions that are not answered by the documentation may be sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.