Re: sgml xml chaos


To Petr Vanek <vanous zavinac penguin bod cz>
From Martin Slouf <xslom03 zavinac vse bod cz>
Date Tue, 28 Oct 2003 14:18:49 +0100 (CET)
Cc debian newsgroup <czdebian-l zavinac debian bod cz>

On Tue, 28 Oct 2003, Petr Vanek wrote:

> zatim tomu rozumim takto:
> 
> vzdy potrebuji tri soubory: moje sgml, k tomu dtd plus *.dsl styl:

to sedi, pricemz ciste teoreticky, lze se obejit bez styloveho souboru i 
dtd:
  * vyznam dtd je pouze pro overeni validity dokumentu sgml, coz v 
konecnem dusledku muze usnadnit treba i editaci v emacsu, neni to vsak 
nezbytne
  * parser, ktery pouzivas na sgml (docbook2<format>) muze, ale nemusi dtd 
pouzivat
  * soubor stylu pouze upravuje transformace, ktere sou delany parserem 
(jak ma tisknout treba element <b> -- jako tucnej font -- do latexu to 
muze znamenat napr. \textbf{text}), pricemz parser muze byt opet napsan 
tak, ze zadny soubor stylu nepouziva a ma to natvrdo v kodu

> 
> mam souboty dtd, ktere definuji logickou strukturu soboru - definuji
> se zde jednotlive elementy. pokud vyuzivam sgml syntaxe, definuji
> v hlavicce pouze jmeno dtd sablony. pri vyuziti xml bych definoval
> jmeno xml sablony. pro dokonceni: pri generovani vysledneho souboru
> pomoci sgmltool (docbook2...) pak mohu zvolit jmeno sablony definujici
> vysledny tvar/podobu vystupu - takoveto neco v priponou dsl?
> 

uprime nevim -- nepouzivam dsl, pouze se trochu orientuju v xslt, kde by 
to, co rikas sedelo

> a ted otazky:
> 
> vim, ze existuji tri root elementy - book, article a ten treti jsem
> zapomel :-). proc je k dispozici tak mnoho dtd souboru - jedna se o
> definice dalsich podtagu tech root elementu, specifickych pro dany
> ukol? jak vim, ktery budu potrebovat ja? (tedy ne dnes, ale treba
> pozdeji - jak zjistim, co ktere dtd vlastne obsahuje a k cemu se hodi?)
> 

dtd definice umoznuji rozdelovat definici dokumentu do nekolika souboru a 
logicky to clenit na zvladnutelne celky (elementy, entity, skupiny 
elementu atp.)

tebe (resp. me :-)) zajimaji pouze dtd definujici root elementy, nic 
jineho, zbytek se po ruznu inkluduje podle toho, co pouzivas (root, 
article a treti neznam :-)), jak to vypada u docbooku sem nikdy neresil 
(koneckoncu ani u niceho jineho -- a spokojene si edituji, upgraduju a 
tak).

> jak zjistim ktere dtd mam vlastne v systemu?
> 

dobrej dotaz. kazdej linux to ma jinak, muj debian stable se snazi 
pouzivat /usr/share/sgml. ale ne se stoprocentnim ucinkem

jistejsi je neco jako 'locate dtd | pager' a mas to (me to vyhodi na 580 
souboru, ne vsechny nutne s definici dtd -- uzij si to)

osobne stejne pouzivam akorat HTML, docbook a dtd souvisejici s J2EE plus 
asi 5 mych definic, dohromady tak 20 dtd -- o tech vim kde v systemu sou 
(nasel jsem je vyse uvedenym zpusobem v kombinaci s prohlizenim obsahu 
baliku) a zbytek me, jak to kulantne vyjadrit ... nezajima

> moje etc/sgml vypada trochu jinak (to bude tim unstable) - je tam
> spousta odkazu na odkazy odkazu na catalogy, nekde na konci jsou pak
> ty samotne catalogy, ta struktura je natolik komplikovana, ze prochozeni
> toho vseho je nad lidske sily, ukazka:
> 

to je jasny, ani u me to neni tak hezky -- ukazoval jsem ti soubor, ktery 
sem si editoval sam a misto odkazu na odkazy na odkazy odkazu ...  sem to 
udelal tak, abych se v tom vyznal

do politiky debianu na tomto poli sem pronik jen velice zbezne -- snazi se 
podle me vzdy do katalogu /etc/share/catalog a/nebo 
/etc/sgml/sgml-data.cat zapsat novy katalog pro novou aplikaci, ktera 
nejake to dtd pouziva (to uz je v tom tretim catalogu, chvala bohu), 
samotne dtd pak uklada do /usr/share/sgml.

nasledne psgml-mode pro emacs cte tyto catalogy (jejichz syntax nastesti 
definuje nejakej sgml standard, takze to je stejne na vsech systemech),
projde tyto katalogy a zaridi se podle toho -- v okamziku kdy napises 
<!DOCTYPE ...> do sgml, xml, html, ... do sveho souboru, tak se snazi 
najit prislusne dtd, pokud ho nenajde, je lepsi prepnout na fundamental-mode, 
protoze to zacne delat takovy psikusy, ze to radsi vzdavam :-)

z toho je patrna jedna neprijemnost, na prvni pohled nijak zrejma -- i do 
xml musis napsat definici sgml <!DOCTYPE ... > (coz podle standardu 
xml neni nutne), pokud ho chces rozume editovat v emacsu.

me tohle mapovani funguje na systemu dobre a zadny trable nemam, pouze sem 
si definoval vlastni catalog (/usr/local/etc/sgml/catalog), pridal jeho 
odkaz do tech globalnich (/etc/sgml/catalog) -- mozna uz to tak bylo 
nastaveny, coz je koneckoncu fuck -- a vsechny mnou pozuivane dtd si pisu 
tam, pokud aplikace, jichz jsou soucasti, z nejakeho duvodu nepouzivaji 
debianovskou politiku (vlastne jde jen o dtd pro j2ee/ant)

mnou vyrobene dtd si definuju jako DOCTYPE SYSTEM, nikoli PUBLIC (= PUBLIC 
IDENTFIER -- vlastne ani neznam jeho presnou syntax -- nezajima me to) a 
ty se pak nemusi ani psat do tech catalogu -- vypada to pak treba takto:

<!DOCTYPE project SYSTEM "/usr/local/lib/sgml/project.dtd">

jak vidis, mam k tomu ryze prakticky pristup, a co me mile prekvapilo, 
funguje to, jak ocekavam -- coz me neprestava udivovat doted ;-)

m.


Partial thread listing: