Kapitel 3. Oversætte SGML til andre formater

Indholdsfortegnelse
3.1. Fejl i SGML-teksten
3.2. "Alle" de grimme detaljer

Du kan oversætte SGML filerne til HTML, PDF, Postscript og RTF. Der er også mulighed for at vælge at oversætte SGML til én HTML-fil og ikke til mange, opdelt for hver <sect1>. Oftest har én stor HTML fil ikke megen interesse, idet den ofte bliver meget stor.

Du oversætter din hoved SGML fil (f.eks. bog.sgml) til HTML ved at skrive db2html bog.sgml. Dine HTML filer gemmes i bog under dit nuværende katalog, fordi SGML-filen hedder bog.sgml.

Du skal selv sørge for at kopiere dine billed-filer (f.eks. PNG) til kataloget bog. Typisk kan dette gøres med en Makefile.

Tilsvarende kan man oversætte bog.sgml til PDF ved at skrive db2pdf bog.sgml. Igen skal alle billed-filer (typisk PNG) være placeret der hvor SGML-filerne oversættes. Jeg kopierer normalt alle de filer til et midlertidigt katalog og oversætter der.

Skal man oversætte til Postscript hedder kommandoen db2ps og RTF laves med db2rtf.

3.1. Fejl i SGML-teksten

Har du lavet fejl i din SGML-tekst, så er den oversætter man har i db2html faktisk til stor hjælp. Vi skal så på et par eksempler.

Eksempel 3-1. Manglende /para

Lad os prøve at oversætte følgende tekst

<!doctype book PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [
]>

<book id="index" lang="da">
  <bookinfo>
    <title>Min første Docbook-bog</title>
  </bookinfo>

<chapter id="forord">
<title>Mit første kapitel</title>

<para>
Vil du skrive i Docbook ?
</para>

<para>
Ja - men jeg kan ikke huske at slutte mine para-blokke.

</chapter>
</book>

Filen eks1.sgml oversættes nu

[root@MinMaskine /root]#   db2html eks1.sgml
TMPDIR is DBTOHTML_OUTPUT_DIR3088
 
input file was called eks1.sgml -- output will be in eks1
 
working on ../eks1.sgml
jade:../eks1.sgml:24:9:E: end tag for "PARA" omitted, but OMITTAG NO was specified
jade:../eks1.sgml:19:0: start tag was here
about to copy cascading stylesheet and admon graphics to temp dir
about to rename temporary directory to eks1

For det første laves et temporært katalog DBTOHTML_OUTPUT_DIR3088, og resultatet vil ende i eks1/ idet filen hedder eks1.sgml. Man får to ret klare fejlbeskeder. I linie 24 (næstsidste linie) må der ikke komme en </chapter>, når der bør komme en slut PARA, dvs. </para>. Den følgende linie fortæller dernæst at i linie 19 var den <para>, som ikke kunne matches.

Tilføj en </para> før næst-sidste linie og teksten oversætter fejlfrit.

Eksempel 3-2. To ens ID

Lad os prøve at oversætte følgende tekst

<!doctype book PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [
]>

<book id="index" lang="da">
  <bookinfo>
    <title>Eksempel</title>
  </bookinfo>

<toc id="toc"></toc>


<chapter id="id1">
<title>Mit første kapitel</title>

<para>
Vil du skrive i Docbook ?
</para>

<sect1 id="id1">
<title>Mit første underkapitel</title>
<para>
tekst1
</para>

</sect1>
</chapter>
</book>

Filen eks2.sgml oversættes nu

[root@MinMaskine /root]#   db2html eks2.sgml
TMPDIR is DBTOHTML_OUTPUT_DIR3110
 
input file was called eks2.sgml -- output will be in eks2
 
working on ../eks2.sgml
jade:../eks2.sgml:19:11:E: ID "ID1" already defined
jade:../eks2.sgml:12:13: ID "ID1" first defined here
about to copy cascading stylesheet and admon graphics to temp dir
about to rename temporary directory to eks2                  

Her ses at ID1 er erklæret to gange - og der oplyses hvilke steder der sker. Omdefiner den ene og oversæt igen.