Az (általános és paraméter-) egyedek különösen hasznosak olyan esetekben, amikor állományok tartalmát akarjuk beilleszteni másik állományokba.
Tegyük fel, hogy egy könyvön dolgozunk az SGML felhasználásával, amelyet fejezetenként állományokra bontottunk, fejezet1.sgml, fejezet2.sgml stb. néven, illetve a könyv.sgml állomány tartalmazza ezeket a fejezeket.
Az állományok tartalmát a SYSTEM kulcsszó használatával tudjuk egyedek értékeként megadni. Ennek hatására az SGML elemző a megadott állomány tartalmát adja az egyed értékének.
Példa 3-12. Állományok tartalmának elérése általános egyeddel
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN" [ <!ENTITY fejezet.1 SYSTEM "fejezet1.sgml"> <!ENTITY fejezet.2 SYSTEM "fejezet2.sgml"> <!ENTITY fejezet.3 SYSTEM "fejezet3.sgml"> <!-- És így tovább... --> ]> <html> <!-- Az egyedek segítségével végül betöltjük a fejezeteket --> &fejezet.1; &fejezet.2; &fejezet.3; </html>
Figyelem: Amikor általános egyedeken keresztül illesztünk be állományokat egy másik állományba, a beillesztett állományok (amilyen például a fejezet1.sgml, fejezet2.sgml és a többi) nem kezdődhetnek DOCTYPE deklarációval. Ez szintaktikai hibát eredményez!
Emlékezzünk vissza, hogy a paraméteregyedek csak SGML környezetben alkalmazhatóak. Miért akarnánk állományokat beilleszteni egy SGML környezetbe?
Így tudunk gondoskodni az általános egyedek újrafelhasználhatóságáról.
Tegyük fel, hogy a dokumentumunkban rengeteg fejezet található és ezeket két különböző könyvben is felhasználtuk, azonban eltérő stílusban.
A könyvek elején fel lehetne sorolni az egyedeket, de ezzel viszont gyorsan kezelhetetlenné válnának.
Ehelyett csak tegyünk az általános egyedekre vonatkozó definíciókat egyetlen állományba és a dokumentumunkban erre építve paraméteregyedek beiktatásával végezzük az adott állományok beillesztését.
Példa 3-13. Állományok beillesztése paraméteregyedekkel
Először vegyük az egyedek definícióit egy külön fejezetek.ent állományba. Ebben a következőek találhatóak:
<!ENTITY fejezet.1 SYSTEM "fejezet1.sgml"> <!ENTITY fejezet.2 SYSTEM "fejezet2.sgml"> <!ENTITY fejezet.3 SYSTEM "fejezet3.sgml">
Most pedig hozunk létre egy paraméteregyedet az állomány tartalmának hivatkozására. Ezután az iménti paraméteregyeddel illesszük be az állományt a dokumentumba, így az összes általános egyed elérhetővé válik. Innentől már a megszokott módon használhatjuk az általános egyedeket:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN" [ <!-- A fejezetekhez tartozó egyedek betöltéséhez definiálunk egy paraméteregyedet --> <!ENTITY % fejezetek SYSTEM "fejezetek.ent"> <!-- Most pedig a paraméteregyeddel töltsük be az állományt --> %fejezetek; ]> <html> &fejezet.1; &fejezet.2; &fejezet.3; </html>
Hozzunk létre három állományt: bekezd1.sgml, bekezd2.sgml és bekezd3.sgml.
Töltsük fel ezeket valami hasonló szöveggel:
<p>Ez az első bekezdés.</p>
Szerkesszük át a próba.sgml állományunk tartalmát az alábbi módon:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN" [ <!ENTITY valtozat "1.1"> <!ENTITY bekezd1 SYSTEM "bekezd1.sgml"> <!ENTITY bekezd2 SYSTEM "bekezd2.sgml"> <!ENTITY bekezd3 SYSTEM "bekezd3.sgml"> ]> <html> <head> <title>Próba HTML állomány</title> </head> <body> <p>A dokumentum jelenlegi változata: &valtozat;</p> &bekezd1; &bekezd2; &bekezd3; </body> </html>
A próba.sgml normalizálásával hozzuk létre a próba.html állományt.
% sgmlnorm -d próba.sgml > próba.html
Nyissuk meg a böngészőnkkel a próba.html állományt és ellenőrizzük, hogy a bekezdn.sgml állományok tartalma bekerült a próba.html állományba.
Megjegyzés: Ehhez először végezzük el az előbbi lépéseket.
Szerkesszük át a próba.sgml állományt a következőeknek megfelelően:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN" [ <!ENTITY % egyedek SYSTEM "egyedek.sgml"> %egyedek; ]> <html> <head> <title>Próba HTML állomány</title> </head> <body> <p>A dokumentum jelenlegi változata: &valtozat;</p> &bekezd1; &bekezd2; &bekezd3; </body> </html>
Hozzunk létre egy új állományt egyedek.sgml néven a következő tartalommal:
<!ENTITY valtozat "1.1"> <!ENTITY bekezd1 SYSTEM "bekezd1.sgml"> <!ENTITY bekezd2 SYSTEM "bekezd2.sgml"> <!ENTITY bekezd3 SYSTEM "bekezd3.sgml">
A próba.sgml normalizálásával állítsuk elő a próba.html állományt:
% sgmlnorm -d próba.sgml > próba.html
Nyissuk meg a böngészőnkben a próba.html állományt és ellenőrizzük, hogy a bekezdn.sgml állományok szerepelnek a próba.html állományban.
Ha kérdése van a FreeBSD-vel kapcsolatban, a következő
címre írhat (angolul): <freebsd-questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése,
kérjük erre a címre írjon: <gabor@FreeBSD.org>.