Uvod v SGML


Sestavil:
Vladimir Batagelj, Univerza v Ljubljani, Matematika, Jadranska 19, 61111 Ljubljana
e-mail: Vladimir.Batagelj@uni-lj.si

©1995 Vladimir Batagelj
zadnja sprememba: 24. september 1995
http://vlado.mat.uni-lj.si/vlado/sgml/sgmluvod.htm in http://vlado.mat.uni-lj.si/ftps.htm#sgml


Povzetek: SGML - Standard Generalized Markup Language je sestav namenjen za pripravo zvrsti spisov. Z dopolnitvijo spisov z opisom njihove zgradbe (v od vrste programa/ra~unalnika neodvisni obliki) omogo~imo izdelavo razli~nih programov za njihovo uporabo (priprava, vzdr`evanje, prikaz, iskanje in analiza) in prenosljivost med raznovrstnimi ra~unalniki.
V sestavku je podana kratka predstavitev sestava SGML.
Abstract: SGML - Standard Generalized Markup Language is a system for preparing document type definitions. Embedding of descriptive markup within documents enables us to produce different application programs (to prepare, display, maintain, search and analyze documents) and to transfer documents among different platforms.
In the paper a short introduction to SGML is given.

Sestavek je sestavljen iz dveh delov: Na koncu je zbranih {e nekaj smerokazov za samostojno brskanje.

1. Zakaj SGML?

1.1. Besedila, ra~unalnik in ozna~evanje

Po nekaterih ocenah v ZDA: Podobno velja tudi drugod v razvitem svetu.

Zaradi tehnolo{kih sprememb je potrebno tudi informacijo v ra~unalni{ki obliki pogosto pretvarjati za nove programe. Kompaktne plo{~e in omre`ja omogo~ajo hranjenje in raz{irjanje velikih koli~in podatkov.

Po drugi strani uporabnik `eli informacijo prilagojeno njegovim potrebam.

SGML - Standard Generalized Markup Language je poskus odgovora na te izzive.

V tiskarstvu se ozna~evanje pri oblikovanju besedil uporablja `e dolgo. Uporabljajo ga oblikovalci, kot navodila stavcem, za dolo~itev kje in kako naj se dani del besedila prika`e (sprememba pisave in njenih lastnosti, prehod na novo stran,...).

Podobno pri ra~unalni{kem oblikovanju besedila oblikovalnik (Word Star, Word, Word Perfect, ...) vklju~i med besedilo dodatne sestavine, ki dolo~ajo prikaz besedila. Taki so tudi opisi besedil v jezikih Postscript, RTF (Rich Text Format), roff, ... Ker ti opisi natanko dolo~ajo, kaj se zgodi s posameznim delom besedila, govorimo o postopkovni ozna~itvi besedila.

Korak naprej predstavljajo zvrsti besedila v LaTeXu in oblikovanje besedil z uporabo slogov (Word, ...), kjer za posamezni del besedila povemo le kaj je - opisna ozna~itev, oblikovalnik pa nato sam poskrbi za ustrezno oblikovanje glede na izbrani slog. Prednost opisne ozna~itve se poka`e pri preoblikovanjih besedila zaradi sprememb (~lanek, prosojnice).

Vendar tudi opisna ozna~itev {e ne omogo~a zadovoljive ra~unalni{ke obdelave besedil. To dose`emo {ele s posplo{enim ozna~evanjem, s katerim v besedilo vnesemo opis njegove zgradbe - dolo~itev zna~ilnih sestavin in njihove medsebojne povezanosti. S tem ustvarimo znakovno podatkovno bazo. SGML je sestav, ki to omogo~a.

Natan~neje, SGML zagotavlja:

1.2. Razvoj sestava SGML

Septembra leta 1967 je William Tunnicliffe na sestanku na Kanadskem dr`avnem uradu za tisk predstavil zamisel o potrebi po lo~itvi vsebine in oblike spisov.

Konec {estdesetih let je Stanley Rice, oblikovalec knjig iz New Yorka, predlagal nabor zna~k za opis zgradbe spisov. Ta nabor je bil ob podpori zdru`enja Graphic Communications Association razvit v prvi opisni nabor GenCode.

Na teh osnovah so leta 1969 Charles Goldfarb, Edwar Mosher in Raymond Lorie za podjetje IBM ustvarili GML - Generalized Markup Language. Vanj so vpeljali tudi pojem zvrsti spisa in gnezdenja sestavin. GML je postal osnova IBMove programske podpore zalo`ni{tva. Goldfarb je nadaljeval raziskave o zgradbi spisov in razvil vrsto dodatnih sestavin.

Leta 1978 je bila pri ANSI (American National Standards Institute) ustanovljena skupina za pripravo standarda jezika za opis besedil, ki bi izhajal iz jezika GML. Prvi osnutek standarda je bil predstavljen leta 1980; {esta razli~ica pa je `e dobila vlogo industrijskega standarda (GCA 101-1983).

Leta 1984 je za~elo sodelovanje med ANSI in ISO (International Standards Organization) na pripravi mednarodnega standarda. Osnutek je bil objavljen leta 1985, naslednje leto pa tudi sam standard SGML (ISO 8879:1986 Information processing - Text and office systems - Standard Generalized Markup Language).

1.3. Projekti

SGML je bil `e med nastajanjem in ob samem za~etku podprt z dvema ve~jima projektoma:

1.3.1. Electronic Manuscript Project

V letih 1983-1987 je delovna skupina pri Association of American Publishers pripravila v SGML opise zvrsti knjiga, ~asopis in ~lanek, s ~emer naj bi poenotila in olaj{ala izmenjavo rokopisov med pisci in zalo`bami. Te re{itve je sprejelo tudi porajajo~e se zalo`ni{tvo kompaktnih plo{~.

1.3.2. CALS

CALS - spo~etka (1987) Computer-aided Acquisition and Logistic Support, sedaj Continuous Acquisition and Life-cycle Support je projekt ameri{kega obrambnega ministrstva (US Department of Defense). @e februarja leta 1988 je bil izdan standard MIL-M-28001, ki temelji na SGML. Cilj projekta je zagotoviti, v ra~unalni{ki obliki, enotno tehni~no dokumentacijo vseh naro~enih izdelkov. To naj zagotovi pocenitev, sprotno obnovo in hitrej{i dostop do iskane informacije. O pomenu projekta marsikaj pove podatek, da ameri{ka bojna ladja nosi tudi 20 do 25 ton priro~nikov o njej. Odslej naj bi vsi dobavitelji DoD pripravljali dokumentacijo po pravilih CALS.

V devetdesetih letih je {tevilo projektov zelo naraslo. Med njimi bomo omenili le tri:

1.3.3. HTML

HTML (HyperText Markup Language) se uporablja na WWW (World-Wide Web) od leta 1990 dalje. To je preprost jezik za ozna~evanje, ki temelji na SGML in omogo~a pripravo sestavkov (besedilo, slika, zvok, video,...) prenosljivih med razli~nimi vrstami ra~unalnikov. HTML je v trajnem razvoju, za katerega skrbi IETF (Internet Engineering Task Force). Trenutno ve~ina pregledovalnikov podpira HTML 2.0; marca 1995 pa je `e iz{el osnutek za HTML 3.0.

1.3.4. TEI - Text Encoding Initiative

TEI je mednarodni projekt, ki ga podpirajo Association for Computing in Humanities, Association for Literary and Linguistic Computing in Association for Computational Linguistics. Usmerjen je na ozna~evanje gradiv s podro~ja umetnosti in dru`benih ved in naj bi ustvaril priporo~ila za pripravo in izmenjavo besedil v ra~unalni{ki obliki za raziskovalne in zalo`ni{ke namene.

1.3.5. UTF

Delovne skupine pri International Press Telecomunications Council in Newspaper Association of America so za osnovo novega standarda UTF (Universal Text Format), ki bo nadomestil standarda IPTC 7901 in ANPA 1312, izbrale SGML.

2. Osnove SGML

2.1. Osnovne sestavine

Pri opisu osnov sestava SGML bomo uporabljali obi~ajni zapis. Njegova pravila (uporabljena koda, lo~ila, dol`ina imen, ...) lahko po potrebi spremenimo.

2.1.1. Zna~ke

Opis zgradbe vna{amo z zna~kami (tag, ELEMENT). Posamezna zna~ka je obdana z znakoma za~etek zna~ke < in konec zna~ke >. Na primer <odstavek>. Poznamo: V obi~ajnem zapisu je ime zna~ke sestavljeno iz ~rk, {tevk in znakov . ter -; za~eti mora s ~rko; ni razlike med velikimi in malimi ~rkami; dolgo je lahko najve~ 8 znakov.

2.1.2. Delci

V besedilo lahko vklju~ujemo tudi delce besedila (ENTITY), katerih vsebina se nahaja izven samega spisa - v pomnilniku ali na datoteki. Delci so lahko od znaka do vsebine cele datoteke. Vklju~itev nekega delca zahtevamo tako, da zapi{emo njegovo ime predzna~eno z znakom & in zaklju~eno s podpi~jem ;. Za imena delcev veljajo v obi~ajnem zapisu ista pravila kot za imena zna~k, le da razlikujemo med velikimi in malimi ~rkami. Delci nam omogo~ajo: Delec oblike &#n; ozna~uje znak s kodo n (deseti{ko). SGML pozna tudi delce &#RS; (record start - za~etek zapisa), &#RE; (record end - konec zapisa), &#SPACE; (presledek), &#TAB; (predel~nik) in imena za znake, ki nastopajo v zna~kah. &lt;, &gt;, &amp;, &quot; dajo zaporedoma znake <, >, &, ".

Kako sami dolo~imo delce, bomo razlo`ili v nadaljevanju.

2.1.3. Stavki

Dolo~itev delcev in zna~k ter opis medsebojnih zvez med posameznimi zna~kami omogo~ajo stavki. Ti so nekak{ne samostojne zna~ke, ki za~enjajo s sestavljenim znakom za~etek stavka <!. Temu sledi ime vrste stavka (ELEMENT, ENTITY, ATTRIBUTE, NOTATION, LINK, SHORTREF,...) in za njim, glede na vrsto stavka, v predpisanem vrstnem redu in obliki zahtevane sestavine. V stavku ima del od za~etnega -- do kon~nega -- (oba vklju~no) vlogo pojasnila. To vlogo ima tudi stavek <!>.

2.1.4. Ukazi

Tudi ukazi so nekak{ne samostojne zna~ke, ki za~enjajo s sestavljenim znakom za~etek ukazov <?. Temu sledi zaporedje ukazov namenjenih programu, ki obdeluje spis.

2.2. Opis spisa v SGML

Opis spisa v SGML je sestavljen iz treh delov:
  1. dolo~itev na~ina zapisa
  2. opis zvrsti spisa
  3. spis
V posameznih programih/sestavih sta pogosto prvi in drugi razdelek stalna - vgrajena v program. Tedaj mora uporabnik pripraviti le sam spis. To je uporabljeno v HTML, ki uporablja obi~ajni zapis z dol`ino imen podalj{ano na 72. Opis jezika HTML (zvrst spisa) pa je tudi vgrajen v pregledovalnike (Netscape, Mosaic, Lynx, ...).

Stavki lahko nastopajo le v prvih dveh delih opisa.

2.2.1. Dolo~itev na~ina zapisa

SGML daje precej svobode pri dolo~itvi na~ina zapisa, vendar, kakor re~eno, se bomo v tem sestavku dr`ali obi~ajnega zapisa. Tega napovemo na za~etku opisa spisa s stavkom <!SGML "ISO 8879:1986"> ki ga ponavadi lahko opustimo.

2.2.2. Opis zvrsti spisa

Zvrst spisa je dolo~ena z zna~kami in delci, ki so zna~ilni za neko skupino spisov. Te so obi~ajno zbrane na eni ali ve~ datotekah s podalj{kom DTD (Document Type Definition).
   <!DOCTYPE zvrst SYSTEM "pot\zvrst.DTD">
V stavku DOCTYPE lahko v oglatih oklepajih vnesemo popravke in dopolnila opisa zvrsti spisa in poskrbimo za posamezne delce.

Praviloma zvrst spisa sestavimo za ve~jo skupino uporabnikov, ki uporabljajo in si izmenjujejo istovrstne spise. Najpogosteje v opisu zvrsti uporabljamo naslednje stavke:

2.2.2.1. Dolo~itev delcev

Najpreprostej{a oblika dolo~itve delca je vpeljava okraj{ave, ki ima obliko
   <!ENTITY ime "niz znakov">
Na primer <!ENTITY UI "Uporabna Informatika"> Del spisa na datoteki proglasimo za delec s stavkom
   <!ENTITY ime SYSTEM "pot\datoteka">
Na primer <!ENTITY uvod SYSTEM "D:\KNJIGA\UVOD.SGM"> Z opisom spisa lahko pove`emo (NOTATION) tudi neSGMLjevske datoteke (bitne slike, spise oblikovane v Wordu, ...).

Delce, ki vsebujejo ukaze vpeljemo s stavkoma oblike

   <!ENTITY ime PI "niz znakov">
   <!ENTITY ime SDATA "niz znakov">
Prvo obliko PI (Processing Instructions) uporabljamo takrat, ko gre za ~iste ukaze programu za obdelavo <!ENTITY Stran PI "newpage"> druga oblika pa vrne programu za obdelavo niz znakov. Tako je v dodatkih k ISO 8879, v opisu nabora znakov Latin 2, znak ~ podan kot <!ENTITY ccaron SDATA "[ccaron]"--=small c, caron--> Delec &ccaron; vrne v program za obdelavo niz [ccaron]. ^e pa v stavku [ccaron] nadomestimo z &#126;, bomo na starej{ih prirejenih tiskalnikih in zaslonih dobili `eljeni izpis.

Kadar `elimo delec ime uporabiti v definiciji nekega drugega delca, ga vpeljemo s stavkom oblike

   <!ENTITY % ime "niz znakov">
uporabimo pa z zahtevo %ime;. Na primer, kadar je delec na datoteki {ir{e uporaben (del knji`nice), to povemo z obliko
   <!ENTITY % ime PUBLIC "javno ime">
Tako delec ISOlat2 pove`emo z opisom nabora znakov Latin 2, v dodatkih k ISO 8879, s stavkom <!ENTITY % ISOlat2 PUBLIC "ISO 8879-1986//ENTITIES Added Latin 2//EN"> %ISOlat2; S stavkom
   <!ENTITY #DEFAULT "niz znakov">
lahko dolo~imo vrednost vklju~itev nenajavljenih delcev.

2.2.2.2. Zna~ke

Zna~ke vpeljemo s stavki oblike:
   <!ELEMENT ime zac kon sestava>
Pri tem je ime ime zna~ke. zac in kon lahko zavzameta vrednost - ali O. V opisu spisa omogo~ata opu{~anje posameznih zna~k, ki so dolo~ene z drugimi. Vrednost - pomeni, da je zna~ka obvezna; vrednost O pa, da jo lahko opustimo. SGML pozna {e ve~ vrst okraj{av, vendar moramo biti pri njih uporabi previdni, ker lahko privedejo do dvoumij.

sestava opisuje zgradbo in medsebojne povezanosti gradnikov in dolo~il. ^e uporabimo za sestavo besedico EMPTY, je pripadajo~a zna~ka dolo~ilo. Sicer je sestava dolo~ena z izrazom, ki pove katere zna~ke in v kak{nem vrstnem redu se lahko pojavijo znotraj gradnika. Izraz zgradimo postopno iz ~lenov oblike:

Tako na primer <!ELEMENT spis O O ((naslov&pisec?),odstavek+)> dolo~a, da se spis (za~etno in kon~no zna~ko lahko opustimo) za~ne z naslovom in neobveznim piscem ali pa piscem in naslovom. Sledi neprazno zaporedje odstavkov.

Pri opisu sestave gradnikov, lahko opise gradnikov z enako sestavo zdru`imo v en opis, ki ima namesto imena zna~ke skupino imen, lo~enih z |, zdru`enih gradnikov.

Opis sestave lahko nadaljujemo tudi z znakom + predzna~eno skupino imen, kar pomeni, da se te zna~ke lahko pojavljajo kjerkoli znotraj dane zna~ke. Predznak - ima nasprotni u~inek.

Posamezni zna~ki ime lahko pripi{emo lastnosti s stavkom:

   <!ATTLIST ime lastnost zaloga vrednost ...>
Trojica lastnost zaloga vrednost se ponovi za vsako lastnost, ki jo lahko pripi{emo zna~ki. Lastnost podamo z njenim imenom. Za zalogo vrednosti napi{emo seznam vseh mo`nih vrednosti (na{tetje) ali pa navedemo eno od vrst vrednosti: ID, IDREF, CDATA, NUMBER, NUMBERS, NAME, NAMES, NMTOKENS, NUTOKENS,... Za vrednost lahko napi{emo izbrano vrednost ali eno od gesel: Zaradi omejenega prostora, bomo tu na{ opis sestava SGML prekinili. Seveda SGML omogo~a {e vrsto stvari, ki pa presegajo okvire uvoda.

3. Primer

Za primer si oglejmo poenostavljen opis zvrsti, ki ustreza zbirki vesti. Shranimo ga na datoteki VESTI.DTD: <!-- % Document Type Definition for VESTI % Vladimir Batagelj, september 1995 --> <!ENTITY % kk "kdo|komu"> <!ELEMENT vesti O O (vest*)> <!ELEMENT vest - O (glava,telo) +(vrsta)> <!ELEMENT glava - O ((%kk;)*&datum&sklic*)> <!ELEMENT (%kk;) - O (oseba,naslov?)> <!ELEMENT (datum|clen|oseba|naslov|odstavek) - O (#PCDATA)> <!ELEMENT (sklic|vrsta) - O EMPTY> <!ELEMENT telo - O (odstavek|seznam)*> <!ELEMENT seznam - O (clen*)> <!ATTLIST vest oznaka ID #REQUIRED tajnost (zaupno|javno) zaupno > <!ATTLIST sklic oznaka IDREF #REQUIRED > <!ATTLIST seznam znak (crta|pika|crke|stej) stej > Na datoteki ZNAKI.ENT pripravimo nekaj razli~nih re{itev za obravnavo na{ih ~rk ~{`: <!ENTITY ccaron SDATA "c"--small c, caron--> <!ENTITY Ccaron SDATA "C"--capital C, caron--> <!ENTITY scaron "&#123;"--small s, caron--> <!ENTITY Scaron "["--capital S, caron--> <!ENTITY zcaron SDATA '"z'--small z, caron--> <!ENTITY Zcaron '"Z'--capital Z, caron--> Primer vesti je shranjen na datoteki JANEZ.SGM: <vest oznaka=janez01 tajnost=javno> <glava> <kdo> <oseba> X Y </oseba> <naslov> aaaa <vrsta> bbbb </naslov> </kdo> <komu> <oseba> U V </oseba> <naslov> cccc <vrsta> dddd </naslov> </komu> <datum> 10. januar 1995 </datum> </glava> <telo> <odstavek> &ccaron;ira &Ccaron;ara </odstavek> <odstavek> &zcaron;iga &Zcaron;aga </odstavek> </telo> </vest> Vse skupaj pove`emo z datoteko VLADO.SGM: <!-- VESTI - Vlado --> <!doctype vesti SYSTEM "./vesti.dtd" [ <!entity janez SYSTEM "./janez.sgm"> <!entity % znaki SYSTEM "./znaki.ent"> %znaki;] > <vesti> &janez; <vest oznaka=vlado01> <glava> <kdo> <oseba> U V <komu> <oseba> X Y <naslov> cccc <vrsta> &Scaron;i&scaron;ka <sklic oznaka=janez01> <datum> 23. januar 1995 <telo> <odstavek> bla <vrsta> bla <odstavek> ble ble </vesti> Za pregled pripravljenega opisa bomo v DOSu uporabili Clarkov raz~lenjevalnik nsgmls (SP parser). Da nam ne bo potrebno vsaki~ navajati vseh stikal, si jih pripravimo na datoteki SP.BAT: SET DOS4G=quiet nsgmls -deguv -f%1.ERR %1.SGM > %1.PRS Sedaj lahko preprosto zahtevamo SP vlado. Na datoteki vlado.ERR dobimo izpis sporo~il o napakah v opisu - v na{em primeru ostane prazna. Na datoteki vlado.PRS pa dobimo raz~lenjeni opis (prikazan je v dveh stolpcih): (VESTI AOZNAKA TOKEN VLADO01 AOZNAKA TOKEN JANEZ01 ATAJNOST TOKEN ZAUPNO ATAJNOST TOKEN JAVNO (VEST (VEST (GLAVA (GLAVA (KDO (KDO (OSEBA (OSEBA - U V - X Y )OSEBA )OSEBA )KDO (NASLOV (KOMU - aaaa (OSEBA (VRSTA - X Y\n )VRSTA )OSEBA - bbbb (NASLOV )NASLOV - cccc )KDO (VRSTA (KOMU )VRSTA (OSEBA - [i{ka\n - U V )NASLOV )OSEBA )KOMU (NASLOV AOZNAKA TOKEN JANEZ01 - cccc (SKLIC (VRSTA )SKLIC )VRSTA (DATUM - dddd - 23. januar 1995\n )NASLOV )DATUM )KOMU )GLAVA (DATUM (TELO - 10. januar 1995 (ODSTAVEK )DATUM - bla )GLAVA (VRSTA (TELO )VRSTA (ODSTAVEK - bla\n - \|c\|ira \|C\|ara )ODSTAVEK )ODSTAVEK (ODSTAVEK (ODSTAVEK - ble ble - \|"z\|iga "Zaga )ODSTAVEK )ODSTAVEK )TELO )TELO )VEST )VEST )VESTI C Znak C na koncu raz~lenitve pomeni conforming - opis je skladen z zvrstjo spisa. Podrobneje si oglejte, kaj je raz~lenjevalnik naredil s posameznimi delci za na{e ~rke. Primerjajte tudi vest iz datoteke JANEZ.SGM (polni opis) z vestjo z datoteke VLADO.SGM (okraj{ani opis).

4. Programska in druga podpora

^eprav lahko opise spisov pripravimo s poljubnim znakovnim urejevalnikom, je to precej la`je po~eti s prilagojenimi urejevalniki, ki upo{tevajo zvrst spisa. Taki so na primer Emacs, Author/Editor (SoftQuad) in dodatek WordPerfectu. Med proizvajalci programske podpore za SGML sta najbolj znani podjetji SoftQuad in ArborText.

Za preverjanje pravilnosti spisov je na voljo ve~ raz~lenjevalnikov. Med njimi sta najbolj znana Clarkova sgmls in novej{i nsgmls (SP), ki smo ga tudi mi uporabili v na{em primeru. Raz~lenjeni spis lahko z lastnimi programi naprej obdelamo glede na na{e potrebe. Za oba raz~lenjevalnika je mogo~e dobiti tudi izvorne programe napisane v Cju, kar nam omogo~a izdelati u~inkovitej{e (brez vmesne datoteke *.PRS) programe za obdelave spisov.

Obstaja tudi ve~ splo{no dostopnih opisov zvrsti (DTD): Association of American Publishers, Elsevier, ISO 12083, IBM Information Development document type, TEI, CALS, ...

S splo{nim ozna~evanjem lo~imo zgradbo spisa od njegove oblikovanosti pri prikazih. Tudi za opis oblike je bilo pripravljenih nekaj standardov. Taka sta na primer DSSSL (Document Style Semantics and Specification Language, ISO10179:1991) in FOSI (Formatted Output Specification Instance, CALS).

5. Viri

5.1. Pisna gradiva

  1. Charles F. Goldfarb: The SGML Handbook. Clarendon Press, Oxford 1990.
  2. Eric Van Herwijnen: SGML Pratique. International Thomson Publishing France, Paris 1995 (izpopolnjen prevod v franco{~ino knjige Practical SGML, Kluwer AP, 1994).
  3. Ian S. Graham: HTML Sourcebook. John Wiley, New York, 1995.
  4. Guidelines for Electronic Text Encoding and Interchange, C.M. Sperberg-McQueen, Lou Burnard, eds., 16. maj 1994: http://www.uic.edu/orgs/tei/info/guide.html
  5. Getting Started with SGML: http://www.arbortext.com/wp.html
  6. SGML Users' Group History: http://www.sil.org/sgml/sgmlhist0.html

5.2. Naslovi na Internetu

  1. SGML Web Page: http://www.sil.org/sgml/sgml.html;
  2. Department of Informatics, University of Oslo, SGML Repository: ftp://ftp.ifi.uio.no/pub/SGML;
  3. The <SGML> Project at Exeter Home Page http://www.ex.ac.uk/SGML/newsgml.html; FTP: ftp://info.ex.ac.uk/pub/SGML;
  4. Computer Science Department, Technical University of Darmstadt, SGML Archive: ftp://ftp.th-darmstadt.de/pub/text/sgml;
  5. James Clark's Home Page: http://www.jclark.com/ in njegovi SGML Parsers (SGMLS, SP): ftp://ftp.jclark.com/pub;
  6. TEI - Text Encoding Initiative Home Page: http://www.uic.edu/orgs/tei/; FTP: ftp://ftp-tei.uic.edu/pub/tei/;
  7. CALS / navy: http://navysgml.dt.navy.mil/cals.html ; glej {e The NTIS CALS Information Center: http://www.fedworld.gov/edicals/calsinf2.html;
  8. Oxford Text Archive: ftp://ota.ox.ac.uk/pub/ota;
  9. BNC - British National Corpus Project Text Archive: http://info.ox.ac.uk/bnc/index.html;
  10. Project Gutenberg Home Page: http://jg.cso.uiuc.edu/PG/;
  11. IADS - Interactive Authoring and Display System: ftp://ftp.ifi.uio.no/pub/SGML/IADS/v2_0/
  12. SoftQuad Inc. Home Page: http://www.sq.com/.

5.3. Slovar~ek

attribute lastnost
document spis
element gradnik, zna~ka
font pisava
entity delec
markup ozna~evanje
parser raz~lenjevalnik
style slog
tag zna~ka
text besedilo, znakovni
type zvrst