SGML:llä voidaan määritellä jonkin kielen (esim. HTML) syntaksi kirjoittamalla kielelle
HTML:n osalta
P-elementti on rakenteeltaan)
on määritelty SGML-kielellä
(mutta voidaan kuvata sanallisestikin
P-elementti
tarkoittaa kappaletta) on määritelty luonnollisella
kielellä (englanniksi)
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 -->
UL;
kielen muusta määrittelystä riippuu, ovatko tällaiset nimet
"case-sensitive" (HTML:ssä eivät ole)
<UL>
ja </UL>) ei voi jättää pois; jos merkinnän
- - tilalla olisi esim. - O niin
lopputägin saisi jättää pois (O=optional)
(LI)+, mikä tarkoittaa, että sen sisällä on
yksi tai useampia LI-elementtejä (eikä mitään muuta);
elementin sisältö on se, mitä on alku- ja lopputägin välissä
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:
CAPTION-elementti
COL- tai
COLGROUP-elementtejä, mutta ei molempia
THEAD-elementti
TFOOT-elementti
TBODY-elementtejä
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>