A FreeBSD Dokumentációs Projekt irányelvei kezdőknek
Előző | Fejezet 3. SGML alapismeretek | Következő

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

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

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>

## 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.sgml`, `bekezd2.sgml` és `bekezd3.sgml`.

   Töltsük fel ezeket valami hasonló szöveggel:

       <p>Ez az első bekezdés.</p>

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

3. A `próba.sgml` normalizálásával hozzuk létre a `próba.html` állományt.

       % osgmlnorm -d próba.sgml > 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`.sgml` á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.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>

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

3. A `próba.sgml` normalizálásával állítsuk elő a `próba.html` állományt:

       % osgmlnorm -d próba.sgml > 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`.sgml` állományok szerepelnek a `próba.html` állományban.

Előző | Tartalom | Következő
Egyedek | Fel | Jelölt szakaszok

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