3.7. Állományok tartalmának elérése egyedeken keresztül
Vissza | 3. fejezet - SGML alapismeretek | Előre

## 3.7. Állományok tartalmának elérése egyedeken keresztül

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.

### 3.7.1. Állományok tartalmának elérése általános egyedekkel

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.

3.12. példa - Állományok tartalmának elérése általános egyeddel
<!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"> <!-- É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.xml`, `fejezet2.xml` és a többi) nem kezdődhetnek DOCTYPE deklarációval. Ez szintaktikai hibát eredményez!

### 3.7.2. Állományok tartalmának elérése paraméteregyedekkel

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.

3.13. példa - Á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.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" [ <!-- 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>

### 3.7.3. Egy kis gyakorlás…

#### 3.7.3.1. Állományok beillesztése általános egyedek segítségével

1. 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>

2. 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>

3. 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`

4. Nyissuk meg a böngészőnkkel a `próba.html` állományt és ellenőrizzük, hogy a `bekezd`n`.xml` állományok tartalma bekerült a `próba.html` állományba.

#### 3.7.3.2. Állományok beillesztése paraméteregyedek segítségével

### Megjegyzés:

Ehhez először végezzük el az előbbi lépéseket.

1. 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>

2. 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">

3. 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`

4. Nyissuk meg a böngészőnkben a `próba.html` állományt és ellenőrizzük, hogy a `bekezd`n`.xml` állományok szerepelnek a `próba.html` állományban.

Vissza | Fel | Előre
3.6. Egyedek | Főoldal | 3.8. Jelölt szakaszok

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>.