3.7 Използване на етикети за включване на файлове

Етикетите, както общи така и параметрични) са особено полезни, когато се използват за включване на един файл в друг.

3.7.1 Използване на общи етикети за включване на файлове

Да предположим, че имате съдържанието на SGML книга организирано във файлове, по един за всяка глава и наречени chapter1.sgml, chapter2.sgml и така нататък, със book.sgml, който съдържа тези глави.

За да използвате съдържанието на тези файлове като стойност за етикет, трябва да декларирате етикетите с ключова дума SYSTEM. Това принуждава SGML парсера да използва съдържанието на посочения файл като стойност за етикета.

Example 3-12. Използване на общи етикети за включване на файлове

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN" [
<!ENTITY chapter.1 SYSTEM "chapter1.sgml">
<!ENTITY chapter.2 SYSTEM "chapter2.sgml">
<!ENTITY chapter.3 SYSTEM "chapter3.sgml">
<!-- And so forth -->
]>

<html>
  <!-- Use the entities to load in the chapters -->

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

Warning: Когато използвате общи етикети за включване на файлове в документ, файловете, които включвате (chapter1.sgml, chapter2.sgml и т.н.) не трябва да започват с DOCTYPE декларация. Това е синтактична грешка.

3.7.2 Използване на параметрични етикети за включване на файлове

Припомнете си, че параметричните етикети могат да бъдат използвани само вътре в SGML съдържание. Защо тогава бихте искали да включите файл в SGML съдържание?

Можете да използвате това, за да вмъкнете отново общи етикети.

Да предположим, че имате много глави във вашият документ и използвате глави в две различни книги, като всяка книга използва главите по различен начин.

Бихте могли да опишете главите в началото на всяка книга, но това бързо става неудобно за управляване.

Вместо това сложете дефинициите на общите етикети във файл и използвайте параметрични етикети, за да включите този файл в документа ви.

Example 3-13. Използване на параметрични етикети за включване на файлове

Първо, сложете дефинициите на етикетите в отделен файл наречен chapters.ent. Този файл включва следното;

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

Сега създайте параметричен етикет обръщащ се към съдържанието на файла. След това използвайте параметрични етикети за да заредите файла в документ, което ще направи всички общи етикети достъпни. Използвайте ги както преди;

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN" [
<!-- 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>
  &chapter.1;
  &chapter.2;
  &chapter.3;
</html>

3.7.3 За упражнение...

3.7.3.1 Използване на общи етикети за да включване на файлове

  1. Създайте три файла, para1.sgml, para2.sgml и para3.sgml.

    Сложете следното във всеки файл;

    <p>This is the first paragraph.</p>
    
  2. Редактирайте example.sgml така, че да изглежда по следния начин;

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN" [
    <!ENTITY version "1.1">
    <!ENTITY para1 SYSTEM "para1.sgml">
    <!ENTITY para2 SYSTEM "para2.sgml">
    <!ENTITY para3 SYSTEM "para3.sgml">
    ]>
    
    <html>
      <head>
        <title>Примерен HTML файл</title>
      </head>
    
      <body>
        <p>The current version of this document is: &version;</p>
    
        &para1;
        &para2;
        &para3;
      </body>
    </html>
    
  3. Генерирайте example.html като нормализирате example.sgml.

    % sgmlnorm -d example.sgml > example.html
    
  4. Заредете example.html в уеб браузер и потвърдете, че paran.sgml файлове са включени в example.html.

3.7.3.2 Използване на параметрични етикети за включване на файлове

Note: Необходимо е най-напред да сте извършили предишните стъпки.

  1. Редактирайте example.sgml така, че да изглежда по следния начин;

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN" [
    <!ENTITY % entities SYSTEM "entities.sgml"> %entities;
    ]>
    
    <html>
      <head>
        <title>An example HTML file</title>
      </head>
    
      <body>
        <p>The current version of this document is: &version;</p>
    
        &para1;
        &para2;
        &para3;
      </body>
    </html>
    
  2. Създайте нов файл entities.sgml със следното съдържание:

    <!ENTITY version "1.1">
    <!ENTITY para1 SYSTEM "para1.sgml">
    <!ENTITY para2 SYSTEM "para2.sgml">
    <!ENTITY para3 SYSTEM "para3.sgml">
    
  3. Генерирайте example.html като нормализирате example.sgml.

    % sgmlnorm -d example.sgml > example.html
    
  4. Заредете example.html в браузер и потвърдете, че paran.sgml файловете са били включени в example.html.

Този и други документи можете да намерите в ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

За въпроси отностно FreeBSD, прочетете документацията преди да попитате в <questions@FreeBSD.org>.
За въпроси отностно този документ, e-mail <doc@FreeBSD.org>.