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>