AzSGML (Standard Generalized Markup Language, szabványos általános jelölőnyelv) egyISO szabványosjelölőnyelv dokumentumformátumok leírására. Az SGML elődjét, aGML-t (Generalized Markup Language) az1960-as években fejlesztette ki azIBM-nélCharles Goldfarb,Edward Mosher ésRaymond Lorie (családnevük kezdőbetűi alapján találta ki Goldfarb a GML nevet). Ennek leszármazottja az SGML, ami1986-ban lettISO(International Organization for Standardization) szabvány.[1]
Az SGML egy absztraktszintaxist biztosít, amit sokféle alkalmazásban használhatunk. A szabványos szintaktika lehetővé teszi, hogy az ilyen formátumú dokumentumokat egy általános célúértelmezővel (parser) könnyen beolvashassuk, írhassuk vagy formailag ellenőrizhessük. SGML-ben a jelölések(tag) jelentése nincs meghatározva, ez mindig az SGML-t használó alkalmazás feladata (például aHTML-ben, ami az egyik legismertebb SGML alkalmazás, a jelöléseknek már konkrét jelentésük van, és a jelölések értékkészlete véges).
Az SGML-t eredetileg arra tervezték, hogy lehetővé tegyék a nagy kormányzati és ipari projektek dokumentumainak közzétételét számítógép által is beolvasható formában, azzal a megkötéssel, hogy a dokumentumoknak több évtizedig is olvashatóknak kell lenniük, ami az informatikában nagyon hosszú időnek számít. A formátumnak nagy hasznát vették továbbá a nyomdatechnikai iparágak, de a bonyolultsága megakadályozta, hogy széles körben elterjedjen kisebb méretű általános alkalmazásokban.
Elsősorban szöveges alapú adatbázisok kezeléséhez és közzétételéhez tervezték, és első nagyobb alkalmazásainak egyike azOxford English Dictionary (OED) második kiadása volt, ami teljes egészében SGML jelölésrendszert használt. Ma leggyakrabbanHTML dokumentum formájában találkozunk az SGML-lel, tekintve, hogy aW3C (World Wide Web Consortium) támogatásával a HTML az internetes dokumentumok egyik fő szabványává vált.
Az SGML lehetővé teszi, hogy a szintaxist az egyes alkalmazásokban testre szabjuk (kis- és nagybetű érzékenység, jelölők határainak megadása, stb.). Egy SGML dokumentum szintaxisátdokumentumtípus-definícióban (Document Type Definition) határozhatjuk meg.
Az alapértelmezett szintaxist használva egy SGML-dokumentumrészlet például így nézhet ki:
<QUOTE TYPE="example"> Valami blabla, benne egy <ITALICS>kiemelt</ITALICS> szakasz. </QUOTE>
Megjegyzendő, hogy SGML szinten az egyes jelölőknek nincs kitüntetett jelentésük. Azt, hogy például az<ITALICS>...</ITALICS> a fenti példában mit jelent, már a használt alkalmazás dönti el. Alapértelmezés szerint az SGML nem betűérzékeny, így a<QUOTE>,<quote> és<Quote> ugyanazt jelentik (ez felülbírálható a NAMECASE NAMING deklarációval).
Azt, hogy egy jelölőt párosával kell-e alkalmazni (mint a fenti példában a<QUOTE>...</QUOTE> párt), vagy lehet-e önmagában is (mint pl, a<HR> elemetHTML-ben), a dokumentumot leíró DTD-ben lehet megszabni.
Az SGML megenged néhány rövidítő konstrukciót is. Ha például egy jelölő elembe biztosan nem akarunk más elemet beágyazni, a hosszabb<ELEM>tartalom</ELEM> helyett írhatjuk azt is, hogy<ELEM/tartalom/ (NET vagy Null End Tag konstrukció). Ha az elemből a tartalom is hiányzik, azonban csak párosával (lezáró elemmel együtt) szerepelhet, az írható a következő módon is:<ELEM//, ahol az első "/" a NET nyitóelem zárását (NET-enabling start-tag close, NETSC), a második meg magát a NET-et zárja le (XML-ben is van NET konstrukció, de a NET lezárását ott ">" jelzi, ezért az előző példa XML-ben így írandó:<ELEM/>). Egy "</>" elemmel pedig a legutoljára megnyitott jelölő zárható le, például<ELEM>tartalom</>.
Egy általános SGML dokumentum csak 7 bitesASCII kódolást használhat. A konkrét alkalmazások ettől eltérhetnek (pl. aHTML alapértelmezésbenISO-8859-1, vagyis nyugat-európai, azXML pedigUnicode kódolást használ), azonban minden esetben lehetővé kell tenni, hogy nemzetközi szövegeket is le lehessen írni SGML-ben. Az ASCII-ban nem szereplő-, illetve a védett karakterek (pl. a jelölő nyitását jelző "<" karakter) elhelyezésére a szövegbenSGML entitások alkalmazásával van mód.
Az SGML entitásokat a dokumentumtípus-definícióban lehet definiálni, használatukhoz pedig az entitás nevét "&" és ";" jelek között kell elhelyezni a dokumentumban. Az előző példa magyar ékezetes betűkkel:
<QUOTE TYPE="example"> Valami szöveg, benne egy <ITALICS>kiemelt</ITALICS> rész. </QUOTE>
Ahol "ouml" az "ö", "eacute" az "é" betűt jelöli.
Entitások használata nélkül is lehetséges bármilyenUnicode karakterre hivatkozni annakUCS kódjával. Ehhez a karakter kódját "&" és ";" jelek közé kell írni. Ez akkor lehet hasznos, ha a karakterhez nincs entitásnév rendelve. Az alábbi két példa agörög nagy szigma (Σ) jelet kódolja:
ΣΣ
Az első esetbendecimális, míg a második esetbenhexadecimális módon szerepel a karakter kódja, ahol a hexadecimális megadást az "x" jelzi.
AHTML azSGML egyik legelterjedtebb alkalmazása, amitweboldalak készítéséhez fejlesztettek ki, és mára már internetes szabvánnyá vált aW3C (World Wide Web Consortium) támogatásával. Bár a HTML eredeti verzióját is az SGML jelölés ihlette, csak a 2.0-s verziótól vált hivatalosan is SGML alkalmazássá. Ennek ellenére a HTML szabványt sok böngésző és webes dokumentumkészítő alkalmazás önkényesen értelmezi és használja, ezért szigorúan véve az internetes oldalak alig néhány százaléka felel meg maradéktalanul az SGML szabványnak.[2]
ADTD (Document Type Definition,dokumentumtípus-definíció) Szintén SGML-alkalmazás, dokumentumtípusok specifikációjára használatos. DTD-ben specifikálják például az egyesHTML dokumentumtípusokat is.
Az XML a SGML egy részhalmaza, szintén általános célújelölőnyelv. Az XML-ben sokat egyszerűsítettek az SGML eredeti szintaxisán, így sokkal egyszerűbb hozzáértelmezőt írni. Ennek következtében az XML manapság széles körben elterjedtté vált. XML alapú alkalmazások például a következők:XHTML,SVG,RSS ésSOAP.