08-pb.pdf
(
171 KB
)
Pobierz
1996
GUST, Zeszyt 7
47
matowaniu tekstu, albo nawet jego zawarto±ci me-
rytorycznej. Problemy istniej¡ tak»e w przypadku
wykorzystania w dokumencie niestandardowego
zestawu znaków. SGML pozwala rozwi¡zywa¢ ta-
kie problemy. Definiuje on zasady tworzenia j¦zy-
ków opisuj¡cych logiczn¡ struktur¦ dokumentów.
Dzi¦ki zestawowi deklaracji pozwala tak»e jed-
noznacznie okre±li¢ sposób kodowania informacji
zastosowany przy tworzeniu dokumentu. Ułatwia
wi¦c przenoszenie dokumentów mi¦dzy ró»nymi
systemami.
Standard słu»y jedynie do opisywania logicz-
nej struktury dokumentów, nie determinuje osta-
tecznej formy prezentacji informacji, która mo»e
by¢ docelowo przekształcana w najró»niejszy spo-
sób. Dokument zakodowany z wykorzystaniem
SGML-a mo»e słu»y¢ jako posta¢ wyj±ciowa do
formatowania tej samej informacji w ró»ny spo-
sób i prezentacji z u»yciem ró»nych mediów np.
w formie drukowanej na papierze, w postacji hi-
pertekstu albo tekstowej bazy danych. Bardzo pro-
sty przykład tego typu zastosowania b¦dzie zapre-
zentowany na zako«czenie artykułu.
Istnieje wiele narz¦dzi słu»¡cych do przetwa-
rzania dokumentów zakodowanych w SGML-u.
Wiele z nich jest dost¦pnych na zasadach public
domain, coraz cz¦±ciej pojawiaj¡ si¦ tak»e w pro-
duktach komercyjnych filtry słu»¡ce do przekształ-
cania informacji do postaci SGML.
Standardy
SGML w praktyce
Piotr Bolek
Co to jest SGML
SGML (
Standard Generalized Markup Language
)
jest nazw¡ j¦zyka zdefiniowanego w standardzie
ISO 8879 opublikowanym w pa¹dzierniku 1986 r.
Twórc¡ standardu jest dr Charles Goldfarb. SGML
jest
j¦zykiem
stosunkowo
zło»onym
i
bywa
okre±lany jako:
j¦zyk oznaczania (etykietowania) tekstu (ang.
tagging language
),
narz¦dzie do opisywania logicznej struktury
tekstów,
schemat ł¡czenia i odwoływania si¦ do plików,
system tekstowej bazy danych,
podstawa systemów hipertekstowych i multi-
medialnych,
narz¦dzie
umo»liwiaj¡ce
tworzenie
szablo-
nów dla dokumentów tekstowych,
narz¦dzie
pozwalaj¡ce
wykorzysta¢
zakodo-
wany
nim
tekst
w
sposób
nieprzewidziany
przez autora,
przeno±ny, niezale»ny od architektury sprz¦tu
i oprogramowania sposób kodowania tekstu,
Sposób kodowania dokumentów w SGML-u
narz¦dzie umo»liwiaj¡ce zapisywanie dowol-
nych struktur hierarchicznych,
Dokument w SGML-u zaczyna¢ si¦ powinien
od zestawu deklaracji (
SGML declaration
)okre-
±laj¡cych pewne parametry (np. długo±¢ identy-
fikatorów u»ywanych do oznaczania elementów
struktury), definiuj¡cych zestaw znaków u»ywany
w dokumencie oraz znaki specjalne słu»¡ce do
oznaczania ró»nych typów identyfikatorów. Dekla-
racje te nie zawsze wyst¦puj¡ w postaci jawnej,
cz¦sto ukryte s¡ w systemie słu»¡cym do przygo-
towywania lub przetwarzania tekstu.
Drugim wa»nym elementem jest Definicja
Typu Dokumentu (ang.
Document Type Definition
–DTD
). DTD okre±la w sposób formalny
logiczn¡ struktur¦ dokumentu – podobnie jak
style dokumentu w L
A
T
E
X-u (struktura ta musi
by¢ zachowana jednak bardziej rygorystycznie
ni» w L
A
T
E
X-u – nie byłoby mo»liwe opuszczenie
jednego
rozszerzalny j¦zyk opisu dokumentów,
standard komunikacji mi¦dzy ró»nymi typami
sprz¦tu i programami u»ytkowymi,
metaj¦zyk umo»liwiaj¡cy tworzenie j¦zyków
prezentacji struktury dokumentów.
Jak pisze C. Goldfarb wszystko to jest prawd¡,
ale nie cał¡. SGML jest po cz¦±ci tym wszystkim,
ale jako cało±¢ jest czym± jeszcze wi¦cej.
Potrzeba istnienia takiego standardu jak
SGML wynikała z problemów, które pojawiaj¡ si¦
w trakcie elektronicznego przetwarzania tekstów.
Cz¦ste s¡ w takich przypadkach trudno±ci z kon-
wersj¡ tekstów podczas przenoszenia mi¦dzy ró»-
nymi programami (edytorami, systemami składu
itp.) Przej±cie z jednego programu do innego cz¦-
stoprowadzidoutratyinformacjiostrukturze,for-
poziomu
nagłówków
np.
bezpo±rednio
© Copyright by Grupa U»ytkowników Systemu T
E
X 1996
http://www.GUST.org.pl
48
GUST, Zeszyt 7
1996
po \chapter u»ycie \subsection,cow
A
T
E
X-u
daje
i b¦dzie to równowa»ne z:
efekt
nieco
dziwaczny,
ale
nie
powoduje
<chap>
<title>Tytuł rozdziału
</title>
<p>Pierwszy akapit tekstu
</p>
</chap>
bł¦du).
Definicja DTD mo»e znajdowa¢ si¦ wewn¡trz
dokumentu, w jego nagłówku, je»eli jednak ma
by¢ u»yta przy tworzeniu wielu tekstów, zwykle
zapisywana jest w oddzielnym pliku.
Elementy.
W DTD zdefiniowane s¡ wszystkie lo-
giczne cz¦±ci danego typu dokumentu – elementy
(ang.
elements
), które maj¡ podobne zastosowanie
jak L
A
T
E
X-owe ±rodowiska. Ka»dy element składa
si¦ z etykiety otwieraj¡cej (ang.
start-tag
) i zamyka-
j¡cej (ang.
end-tag
). Etykieta otwieraj¡ca ma zwykle
posta¢ <elem>, a zamykaj¡ca </elem>.Inaczej
ni» w L
A
T
E
X-u, nie wszystkie elementy wyst¦puj¡ce
w tek±cie musz¡ mie¢ zaznaczone jawnie etykiety
otwieraj¡ce i zamykaj¡ce. W deklaracji SGML mo»-
liwe jest ustawienie parametrów dopuszczaj¡cych
ró»ne formy minimalizacji wpisywanych etykiet.
Minimalizacja taka mo»e polega¢ na mo»liwo±ci
opuszczenia etykiety (OMITTAG), u»yciu skróco-
nejwersjietykiety(SHORTTAG), grupowaniu ety-
kiet (RANK), albo automatycznym rozpoznawaniu
etykiet (DATATAG). Dodatkowo mo»liwe jest u»y-
wanie skrótów (ang.
short references
), pozwalaj¡-
cych w pewnych kontekstach u»ywa¢ zamiast ety-
kiet
W powy»szym przykładzie mo»emy tak»e zo-
baczy¢ jak wygl¡da definiowanie i u»ywanie ele-
mentów. Element chap zdefiniowali±my jako skła-
daj¡cy si¦ z tytułu (element title), z nast¦pu-
j¡cym po nim (przecinek „,”okre±la nast¦pstwo
elementów) co najmniej jednym akapitem (znak
plus „+” oznacza wyst¡pienie co najmniej jedno-
krotne). Element title zdefiniowany został jako
zawieraj¡cy dane tekstowe (#PCDATA ang.
parsed
characted data
), bez »adnych elementów ni»szego
poziomu. Znaki „--”, „OO”i„-O”wyst¦puj¡ce
w definicjach elementów chap, title i p okre-
±laj¡ czy mo»liwe jest pomini¦cie odpowiednich
etykiet otwieraj¡cych lub zamykaj¡cych. Znak mi-
nus „-” na pozycji pierwszej oznacza, »e etykieta
otwieraj¡ca musi wyst¡pi¢, na pozycji drugiej, »e
wymagana jest etykieta zamykaj¡ca. Litera „O”ze-
zwala na pomini¦cie odpowiedniej etykiety.
zdefiniowanych
uprzednio
symboli,
lub
ich
sekwencji.
Po dopuszczeniu mo»liwo±ci opuszczania ety-
kiet mo»na pomin¡¢ etykiet¦ otwieraj¡c¡ lub za-
mykaj¡c¡, je»eli da si¦ z kontekstu wydedukowa¢
konieczno±¢ jej istnienia. Je»eli np. zdefiniujemy
elementy chap, title i p w nast¦puj¡cy sposób:
Atrybuty.
Ka»dy z elementów mo»e zawiera¢
atrybuty okre±laj¡ce pewne cechy szczególne np.
fakt numerowania listy wylicze«:
<list type="numbered">
<item> Pierwszy
<item> Drugi
</list>
<!ELEMENT chap - - (title,p+)>
<!ELEMENT title O O (#PCDATA)>
<!ELEMENT p - O (#PCDATA)>
Element typu list ma w tym przykładzie
atrybut type, któremu przypisano warto±¢ num-
bered. W DTD zawarte s¡ definicje atrybutów
wszystkich elementów wraz z ich typami i dopusz-
czalnymi warto±ciami.
to mo»emy napisa¢ w dokumencie:
<chap>
<title>Tytuł rozdziału
<p>Pierwszy akapit tekstu
</chap>
Definicje.
W dokumencie SGML istnieje tak»e
mo»liwo±¢ definiowania pewnych powtarzalnych
cz¦±ci jako pewnego rodzaju definicji zwanych
w terminologii SGML-a
entities
.Definicjamo»e
zast¡pi¢ pewien cz¦sto u»ywany tekst i jest
w takim przypadku podobna do bezparametrowej
definicji T
E
X-owej np.:
anawet:
<chap>
Tytuł rozdziału
<p>Pierwszy akapit tekstu
</chap>
1996
GUST, Zeszyt 7
49
etykiety otwieraj¡ce i zamykaj¡ce wraz ze wszyst-
kimi atrybutami. Wyj±cie z parsera mo»e by¢ wy-
korzystane w etapie nast¦pnym – przygotowaniu
dokumentu do prezentacji w sformatowanej po-
staci.
Formatowanie tekstu to etap, którym stan-
dard si¦ ju» nie zajmuje, ale etap ten jest zwy-
kle niezb¦dny, aby zakodowana informacja mogła
by¢ w sensowny sposób wykorzystana. Dokument
mo»e by¢ sformatowany w sposób prosty bezpo-
±rednio z dokumentu ¹ródłowego, przez prost¡
edycj¦ przy pomocy standardowych narz¦dzi, słu-
»¡cych do przetwarzania tekstu (sed, awk, Perl),
albo
<!ENTITY sgml "Standard Generalized
Markup Language">
W tek±cie dokumentu ka»dy napis &sgml;
zostanie zast¡piony przez Standard Generali-
zed Markup Language.
Inny rodzaj definicji mo»e by¢ u»ywany
w pliku DTD, daj¡c mo»liwo±¢ definiowania pew-
nych wspólnych cech kilku elementów naraz.
Przykład tego typu definicji pojawi si¦ w przykła-
dowym DTD na ko«cu artykułu.
Inne składowe dokumentu SGML.
Wdokumen-
cieSGMLmo»ewyst¡pi¢jeszczewieleinnych
składowych, np. wyró»nione sekcje (ang.
marked
sections
), instrukcje formatuj¡ce (ang.
procesing in-
structions
), poddokumenty (ang.
subdocuments
), od-
wołania do znaków niedost¦pnych z klawiatury
(ang.
character references
). Nie ma tutaj miejsca na
szczegółowe
po
uprzednim
przetworzeniu
tekstu
przez
parser na posta¢ „rozwini¦t¡”.
Przykład
Na koniec chciałbym przedstawi¢ bardzo pro-
sty przykład prezentuj¡cy opisane powy»ej cechy
SGML oraz mo»liwo±ci, które daje ten sposób ko-
dowania informacji. Przykładem tym jest przygo-
towywanie tabel do publikacji w WWW. Nie jest
to przykład bardzo skomplikowany, stanowi on
prób¦ pokazania mo»liwo±ci praktycznego wyko-
rzystania SGML-a.
omówienie
ich
definiowania
i
spo-
sobu wykorzystania.
Praca z SGML-em
W praktyce najwa»niejsz¡ spraw¡ jest wst¦pne
zidentyfikowanie logicznej struktury dokumentu
i zbudowanie hierarchii elementów tej struktury.
Nast¦pnie nale»y stworzy¢ lub wykorzysta¢ istnie-
j¡cy
Problem i propozycja rozwi¡zania.
Prezentacja ta-
bel w WWW sprawia problemy, poniewa» brak
jest jednoznacznego sposobu ich kodowania w j¦-
zyku HTML. W definicji standardu HTML3 istnieje
co prawda dosy¢ ciekawy sposób tworzenia tabel,
ale wi¦kszo±¢ u»ywanych przegl¡darek nie obsłu-
guje jezyka HTML3. Sposób zapisywania tabel ro-
zumiany przez przegl¡dark¦ Netscape te» nie jest
całkiem wygodny, chocia» daje du»e mo»liwo±ci
i jest cz¦±ciowo zgodny ze standardem HTML3.
Wi¦kszo±¢ przegl¡darek zupełnie jednak nie radzi
sobie z wy±wietlaniem tabel.
W zaproponowanym rozwi¡zaniu tabele two-
rzone s¡ w kilku wariantach – oddzielnie dla Net-
scape’a w postaci przez niego zrozumiałej, a od-
dzielnie dla pozostałych przegl¡darek – w postaci
preformatowanego tekstu ASCII (tabelki s¡ w tym
przypadku składane z wykorzystaniem programu
groff z preprocesorem tbl). Obie te wersje (oraz
dodatkowa
DTD,
okre±laj¡cy
struktur¦
dokumentu
for-
malnie.
Po zidentyfikowaniu wszystkich logicznych
elementów tekstu i wybraniu odpowiedniego typu
dokumentu nale»y okre±li¢ struktur¦ dokumentu
wstawiaj¡c do tekstu etykiety (ang.
tags
), które
zaznaczaj¡ typy poszczególnych elementów do-
kumentu. Wprowadzenie etykiet do tekstu mo»e
mie¢ miejsce w trakcie tworzenia dokumentu i cza-
sem mo»e by¢ zupełnie niewidoczne dla u»ytkow-
nika. Etap ten mo»e stanowi¢ koniec pracy z tek-
stem. Dalsza obróbka mo»e by¢ dokonywana przez
innych. Zwykle nale»y jednak jeszcze dokona¢ we-
ryfikacji dokumentu, czyli sprawdzi¢ czy struk-
tura stworzonego dokumentu jest zgodna z defi-
nicjami zawartymi w DTD. Do weryfikacji struk-
tury słu»¡ programy zwane parserami, czytaj¡ce
DTD oraz dokument i stwierdzaj¡ce czy dany do-
kument ma struktur¦ okre±lon¡ w definicji czy nie.
Czasem parser mo»e tak»e dokona¢ przekształce-
nia struktury dokumentu na posta¢ kanoniczn¡
(rozwini¦t¡), w której jawnie wyst¦puj¡ wszystkie
trzecia
L
A
T
E
X-owa)
s¡
tworzone
z
tej
samej wersji ¹ródłowej zapisanej w SGML-u.
DTD.
Aby umo»liwi¢ przetwarzanie tabel nale»y
przede wszystkim przygotowa¢ odpowiedni¡ defi-
50
GUST, Zeszyt 7
1996
nicj¦ typu dokumentu – DTD. Do tego celu została
wykorzystana zmodyfikowana i nieco uproszczona
wersja definicji tabel z DTD dla j¦zyka HTML 3.0.
Przykładowa tabelka.
Oto
przykładowa
tabelka
zapisana
zgodnie
ze
zdefiniowan¡
w tab.dtd
specyfikacj¡.
<!doctype tab system>
<!-- tab.dtd - DTD dla tabelek -->
<TABLE width=440 border padding=3
COLSPEC="lrrrr">
<TR ALIGN=CENTER>
<TD>
<TD COLSPAN=4>Zasoby
<TR>
<TD>
<TD align=center colspan=2>Udokumentowane
<TD align=center colspan=2>Wydobywalne
<TR ALIGN=left>
<TD>Surowce
<TD>mld t <TD> %
<TD> mld t <TD> %
<TR>
<TD> W¦giel kam.
<TD> 36,18 <TD> 63,1 <TD> 14,47 <TD> 69,8
<TR>
<TD>W¦giel brun.
<TD> 2,74 <TD> 4,8 <TD> 2,46 <TD> 11,9
<TR>
<TD>Gaz ziemny
<TD> 0,17 <TD> 0,3 <TD> 0,14 <TD> 0,7
<TR>
<TD>Ropa naftowa
<TD> 0,005 <TD> 0,01 <TD> 0,004 <TD> 0,01
<TR>
<TD>Energia wód
<TD> 18,29 <TD> 31,9 <TD> 3,65 <TD> 17,6
</TABLE>
<!ELEMENT TABLE - - (TR+)>
<!ATTLIST TABLE
border (border) #IMPLIED
colspec CDATA #IMPLIED
units (en|pixels|relative) en
width NUMBER #IMPLIED
padding NUMBER #IMPLIED
spacing NUMBER #IMPLIED
>
<!ENTITY % cell "TH | TD">
<!ENTITY % horiz.align
"left|center|right|justify">
<!ENTITY % vert.align
"top|middle|bottom|baseline">
<!ELEMENT TR O O (%cell)* >
<!ATTLIST TR
align (%horiz.align) #IMPLIED
>
<!ELEMENT (%cell)-O(#PCDATA)>
<!ATTLIST (%cell)
colspan NUMBER 1
align (%horiz.align) #IMPLIED
>
<!ELEMENT TAB O O ANY>
Tabelka ASCII.
Oto przykładowa tabelka sforma-
towania programem groff i preprocesorem tbl:
+-------------+-------------------------------+
| | Zasoby |
+-------------+----------------+--------------+
| | Udokumentowane | Wydobywalne |
+-------------+--------+-------+-------+------+
|Surowce | mld t | % | mld t | % |
+-------------+--------+-------+-------+------+
|W¦giel kam. | 36,18 | 63,1 | 14,47 | 69,8 |
+-------------+--------+-------+-------+------+
|W¦giel brun. | 2,74 | 4,8 | 2,46 | 11,9 |
+-------------+--------+-------+-------+------+
|Gaz ziemny | 0,17 | 0,3 | 0,14 | 0,7 |
+-------------+--------+-------+-------+------+
|Ropa naftowa | 0,005 | 0,01 | 0,004 | 0,01 |
+-------------+--------+-------+-------+------+
|Energia wód | 18,29 | 31,9 | 3,65 | 17,6 |
+-------------+--------+-------+-------+------+
Tak¡ tabelk¦ mo»na umie±ci¢ na stronie HTML
przeznaczonej dla „ubogich” przegl¡darek WWW.
Narz¦dzia.
Do przetwarzania tabel u»yty został
parser sgmls Jamesa Clarka, oraz program sgml-
spl napisany w Perlu, korzystaj¡cy z biblioteki
SGMLS.pm (autorem programu i biblioteki jest Da-
vid Megginson z Kanady).
Program sgmlspl działa na danych wyj±cio-
wych z parsera sgmls. Argumentem tego pro-
gramu jest plik ze specyfikacj¡, w którym w po-
staci kodu w Perlu zdefiniowane s¡ akcje, które
nale»y wykona¢ po napotkaniu kolejnych elemen-
tów struktury dokumentu. Dla ka»dego z forma-
tów wyj±ciowych konieczny jest oczywi±cie inny
plik ze specyfikacj¡. Kod specyfikacji nie b¦dzie
tutaj przedstawiany poniewa» jest dosy¢ specy-
ficzny i stosunkowo skomplikowany, byłby wi¦c
mało zrozumiały nawet dla osób znaj¡cych Perla.
Zainteresowanych
odsyłam
do
dokumentacji
bi-
blioteki SGMLS.pm i programu sgmlspl.
1996
GUST, Zeszyt 7
51
Ta b e l k a
H T M L .
A tak wygl¡da ta sama tabelka
po
przetworzeniu
na
HTML
ogl¡dana
pod
Netscapem:
Ta b e l k a L
A
T
E
X.
Na koniec ta sama tabelka w L
A
T
E
X:
Literatura
1.
Charles F. Goldfarb:
The SGML Handbook
,
Oxford University Press, 1995,
2.
Martin Bryan:
SGML, an author’s guide to
the Standard Generalized Markup Language
,
Addison-Wesley, 1988.
3.
David Megginson: Dokumentacja do
biblioteki SGMLS.pm i programu sgmlspl,
http://www.uottawa.ca/~dmeggins/
SGMLSpm/sgmlspm.html,
http://www.uottawa.ca/~dmeggins/
sgmlspl/sgmlspl.html
4.
Daniel Gilly:
Unix in the Nutshell
,O’Reilly&
Associates, 1994.
Piotr Bolek
P.Bolek@ia.pw.edu.pl
Plik z chomika:
grzegorj
Inne pliki z tego folderu:
01-pt.pdf
(180 KB)
02-ab.pdf
(109 KB)
02-mw1.pdf
(145 KB)
02-pt.pdf
(219 KB)
03-bj.pdf
(51 KB)
Inne foldery tego chomika:
__Programy
_Asembler
_Asp
_Basic
_C
Zgłoś jeśli
naruszono regulamin