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.

    % sgmlnorm -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 bekezdn.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:

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