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.xml
,
fejezet2.xml
stb. néven, illetve a
könyv.xml
á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.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN" [ <!ENTITY fejezet.1 SYSTEM "fejezet1.xml"> <!ENTITY fejezet.2 SYSTEM "fejezet2.xml"> <!ENTITY fejezet.3 SYSTEM "fejezet3.xml"> ]> <html> &fejezet.1; &fejezet.2; &fejezet.3; </html>
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.xml
,
fejezet2.xml
é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.
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.xml"> <!ENTITY fejezet.2 SYSTEM "fejezet2.xml"> <!ENTITY fejezet.3 SYSTEM "fejezet3.xml">
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" [ <!ENTITY % fejezetek SYSTEM "fejezetek.ent"> %fejezetek; ]> <html> &fejezet.1; &fejezet.2; &fejezet.3; </html>
Hozzunk létre három
állományt: bekezd1.xml
,
bekezd2.xml
és
bekezd3.xml
.
Töltsük fel ezeket valami hasonló szöveggel:
<p>Ez az első bekezdés.</p>
Szerkesszük át a
próba.xml
á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.xml"> <!ENTITY bekezd2 SYSTEM "bekezd2.xml"> <!ENTITY bekezd3 SYSTEM "bekezd3.xml"> ]> <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.xml
normalizálásával hozzuk létre a
próba.html
állományt.
%
osgmlnorm -d próba.xml > próba.html
Nyissuk meg a böngészőnkkel a
próba.html
állományt és ellenőrizzük,
hogy a
bekezdn.xml
állományok tartalma bekerült a
próba.html
állományba.
Ehhez először végezzük el az előbbi lépéseket.
Szerkesszük át a
próba.xml
állományt a következőeknek
megfelelően:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN" [ <!ENTITY % egyedek SYSTEM "egyedek.xml"> %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.xml
néven a következő tartalommal:
<!ENTITY valtozat "1.1"> <!ENTITY bekezd1 SYSTEM "bekezd1.xml"> <!ENTITY bekezd2 SYSTEM "bekezd2.xml"> <!ENTITY bekezd3 SYSTEM "bekezd3.xml">
A próba.xml
normalizálásával állítsuk
elő a próba.html
állományt:
%
osgmlnorm -d próba.xml > próba.html
Nyissuk meg a böngészőnkben a
próba.html
állományt és ellenőrizzük,
hogy a
bekezdn.xml
á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):
<questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon:
<gabor@FreeBSD.org>.