Johdatusta SGML:ään

SGML:llä voidaan määritellä jonkin kielen (esim. HTML) syntaksi kirjoittamalla kielelle

  1. SGML Declaration, joka määrittelee eräitä parametreja kuten esim. nimien maksimipituuden
  2. Document Type Definition, DTD, joka määrittelee kielen rakenteiden (elementtien) sallitun muodon ja yhdistelytavan
Kielen rakenteiden merkitykset määritellään erikseen.

HTML:n osalta


SGML:llä määritellyssä kielessä elementtien yleinen rakenne on tavallisesti seuraavanlainen:
<nimi määrite1 = arvo1 ...> sisältö </nimi>

Esimerkki määrittelystä SGML:ssä:

<!ELEMENT UL - - (LI)+    -- unordered list -->

Määrittelee, että kielessä on elementti, jolla on seuraavat ominaisuudet:

Merkintä -- unordered list -- on pelkkä kommentti, jolla ei ole normatiivista merkitystä.


Rakenteiden kuvauksissa

() osoittavat vain ryhmittelyä
| osoittaa vaihtoehtoisuutta
, osoittaa peräkkäisyyttä (annetussa järjestyksessä)
& ja-operaattori: A&B tarkoittaa, että sekä A:n että B:n pitää esiintyä, mutta niiden järjestys on vapaa
+ osoittaa toistoa 1:n tai useampia kertoja
* osoittaa toistoa 0 tai useampia kertoja
? osoittaa valinnaisuutta (voi olla mukana tai puuttua)

Esimerkki:


<!ELEMENT TABLE - -
     (CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+)>

Tällöin TABLE-elementin sisältö on seuraava:

Elementin määritteet eli attribuutit määritellään seuraavaan tapaan:


<!ATTLIST UL
 id          ID     #IMPLIED  -- document-wide unique id --
 class       CDATA  #IMPLIED  -- space separated list of classes --
 style       CDATA  #IMPLIED  -- associated style info --
 title       CDATA  #IMPLIED  -- advisory title/amplification --
 >

Selityksiä:

ID arvon tulee olla tunnus, joka on dokumentin sisällä yksikäsitteinen
CDATA arvo on SGML:n kannalta vain merkkijono (miel. lainausmerkeissä, joskin ne voidaan eräissä tapauksissa jättää pois)
#IMPLIED määrite ei ole pakollinen

Esimerkki:
<UL ID="lista1" CLASS="luettelo" TITLE="Niitä näitä">
<LI>eka <LI>toka </UL>