Етикетите, както общи така и параметрични) са особено полезни, когато се използват за включване на един файл в друг.
Да предположим, че имате съдържанието на 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 декларация. Това е синтактична грешка.
Припомнете си, че параметричните етикети могат да бъдат използвани само вътре в 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>
Създайте три файла, para1.sgml, para2.sgml и para3.sgml.
Сложете следното във всеки файл;
<p>This is the first paragraph.</p>
Редактирайте 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>
¶1;
¶2;
¶3;
</body>
</html>
Генерирайте example.html като нормализирате example.sgml.
% sgmlnorm -d example.sgml > example.html
Заредете example.html в уеб браузер и потвърдете, че paran.sgml файлове са включени в example.html.
Note: Необходимо е най-напред да сте извършили предишните стъпки.
Редактирайте 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>
¶1;
¶2;
¶3;
</body>
</html>
Създайте нов файл entities.sgml със следното съдържание:
<!ENTITY version "1.1"> <!ENTITY para1 SYSTEM "para1.sgml"> <!ENTITY para2 SYSTEM "para2.sgml"> <!ENTITY para3 SYSTEM "para3.sgml">
Генерирайте example.html като нормализирате example.sgml.
% sgmlnorm -d example.sgml > example.html
Заредете example.html в браузер и потвърдете, че paran.sgml файловете са били включени в example.html.
Този и други документи можете да намерите в ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
За въпроси отностно FreeBSD, прочетете
документацията
преди да попитате в <questions@FreeBSD.org>.
За въпроси отностно този документ, e-mail <doc@FreeBSD.org>.