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
970063753.051.png 970063753.062.png 970063753.063.png
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>
970063753.064.png 970063753.001.png 970063753.002.png 970063753.003.png 970063753.004.png 970063753.005.png 970063753.006.png 970063753.007.png 970063753.008.png 970063753.009.png
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)
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-
970063753.010.png 970063753.011.png
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.
970063753.012.png 970063753.013.png 970063753.014.png 970063753.015.png
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
970063753.016.png 970063753.017.png 970063753.018.png 970063753.019.png 970063753.020.png 970063753.021.png 970063753.022.png 970063753.023.png 970063753.024.png 970063753.025.png 970063753.026.png 970063753.027.png 970063753.028.png 970063753.029.png 970063753.030.png 970063753.031.png 970063753.032.png 970063753.033.png 970063753.034.png 970063753.035.png 970063753.036.png 970063753.037.png 970063753.038.png 970063753.039.png 970063753.040.png 970063753.041.png 970063753.042.png 970063753.043.png 970063753.044.png 970063753.045.png 970063753.046.png 970063753.047.png 970063753.048.png 970063753.049.png 970063753.050.png 970063753.052.png 970063753.053.png 970063753.054.png 970063753.055.png 970063753.056.png 970063753.057.png 970063753.058.png 970063753.059.png 970063753.060.png 970063753.061.png
Zgłoś jeśli naruszono regulamin