[ SlackList ] [ WkikiSlack ]




sgml-tools i docbook-xml

From: Maciej Bliziński <nie.pisz_malpka_na.to>
Date: Mon Apr 26 2004 - 00:41:54 CEST

Chciałbym dowiedzieć się, czy ktoś z grupowiczów walczył z xml-docbook
pod Slackware. Ja ostatnio trochę rozkminiałem i w końcu mam pewne
sukcesy. Założenie jest takie, żeby używać tych sgml-tools, które są
w paczce sgml-tools, czyli np. nie instalować wszystkiego ręcznie ze
źródeł, tak jak to jest opisane
w http://www.tldp.org/HOWTO/DocBook-OpenJade-SGML-XML-HOWTO/index.html
Myślę że jest duża szansa na to, że można robić wszystkie transformacje
przy pomocy tego, co mamy w dystrybucji (Slackware 9.1 i current).

Zdecydowałem się na używanie xml-docbook, głównie ze względu na to, żeby
można było edytować pliki nie tylko vimem, ale również takimi edytorami
jak oxygen albo xmlspy. Kodowanie znaków utf-8.

Pierwsza rzecz to wygenerowanie HTML. Niestety openjade nie rozumie
kodowania utf-8, więc musiałem dokonywać tymczasowej konwersji do
iso-8859-2. Po transformacji z kolei w plikach HTML nie było deklaracji
kodowania, więc rozwiązałem to, dodając "na chama" deklarację do każdego
pliku HTML po wygenerowaniu. W tej chwili transformację do HTML wykonuję
w taki sposób:

plik Makefile:

----------------8<-------------- ----------------8<--------------
DOC=doc.xml
ISODOC=iso.xml
all: docbk-html
clean:
        rm -rf html
        rm -f doc.tar.gz
docbk-html:
        rm -rf html
        mkdir -p html
        iconv -f utf-8 -t latin2 < $(DOC) > $(ISODOC)
        cd html; openjade -v -t xml \
        -d /usr/share/sgml/docbook/dsssl-stylesheets/html/docbook.dsl \
        /usr/share/sgml/xml.dcl ../$(ISODOC)
        cd html; ../add_encoding.sh
        rm $(ISODOC)
doc-dist:
        tar cfvz doc.tar.gz html
----------------8<-------------- ----------------8<--------------

skrypt add_encoding.sh:

----------------8<-------------- ----------------8<--------------
for i in *.htm
do
        cat $i \
        | sed -e 's/^><HEAD$/><HEAD><meta http-equiv="Content-type" content="text\/html; charset=iso-8859-2"/' > tmp.htm
        mv tmp.htm $i
done
----------------8<-------------- ----------------8<--------------

No i to by było na tyle moich skryptów. Niestety, w żaden sposób nie
potrafię wygenerować poprawnego pliku RTF ani PDF, a chciałbym.
W tej chwili, przy próbie wygenerowania pliku RTF, na przykład takim
wywołaniem...

openjade -v -t rtf -t xml -d \
/usr/share/sgml/docbook/dsssl-stylesheets/print/docbook.dsl \
/usr/share/sgml/xml.dcl iso.xml

....openjade pokazuje komunikat, że zaczyna przetwarzać dokument, po czym
wyświetla na ekranie fragment dokumentu w płaskim, i do tego
niesformatowanym, tekście, i zakańcza działanie. Plik iso.rtf nie
powstaje.

Zauważyłem też ciekawą rzecz. Otóż kiedy do wywołania openjade dodam
deklarację kodowania, na przykład:

openjade -v -b iso-8859-2 -t xml -t xml -d \
/usr/share/sgml/docbook/dsssl-stylesheets/html/docbook.dsl \
/usr/share/sgml/xml.dcl iso.xml

to openjade zastępuje polskie litery encjami, ale złymi: wygląda to
dokładnie tak, jak wtedy, kiedy plik w kodowaniu iso-8859-2 wyświetlamy
jako iso-8859-1, czyli np. 'ł' zamienia się na '^3'. Wygląda na to że
openjade wie, które znaki należą do iso-8859-2, ale błędnie podstawia
entities.

Kiedyś dawno temu udało mi się wykonać transformację sgml docbook
z kodowaniem iso-8859-2 do PDF, według instrukcji na stronie
http://mr0vka.eu.org, ale to było pod FreeBSD, a poza tym trzeba było
tworzyć nowe style do jadetex, i była z tym masa roboty. A ja chciałbym
wygenerować tego PDFa przy użyciu tego, co jest w dystrybucji (o ile to
możliwe, oczywiście).

To tyle na dzisiaj, chętnie dowiedziałbym się, czy ktoś oprócz mnie
walczył z tym tematem, i jakie ma doświadczenia.

--
Quidquid latine dictum sit, altum viditur.
(Whatever is said in Latin sounds profound.)
Received on Tue Apr 27 18:14:52 2004

This archive was generated by hypermail 2.1.8. Wyprawa Shackleton 2014