[ SlackList ] [ WkikiSlack ] |
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