html2sgml konverter

Programmet modtager en html fil og konvertere en række html tags til de tilsvarende DocBook tags. Fx. laves <i> om til <emphasis>. Html koden checkes ikke for fejl før den konverteres, brug htmltidy fra www.w3.org til at checke html koden.

Syntax:

html2sgml.pl

html2sgml.pl infile.html

html2sgml.pl infile.html outfile.smgl

html2sgml.pl infile.html -o outfile.smgl

Hvis en input fil ikke specificeres bruges stdin, hvis output ikke specificeres bruges stdout.

Download:

Hent html2sgml.pl her. Den nuværende version er Pi-3+0.42

html koder

Langt fra alle html tags genkendes, men kun de der har en semantisk ekvivalent i docbook, eller layoutmæssigt ligner dem der bruges i html versionen af linuxbogen, dem der ikke genkendes vil sendes til output uforandret. Alt der ligger uden før <body> og efter </body> slettes, dokumentet må manuelt indsættes i en passende docbook kontekst.

Konverteringstabel
Html kode Docbook kode
<p> <para>
<pre> <screen>
<code> <command> i tekst kontekst.

<prompt> i <pre>..</pre> kontekst

<strong> <filename> i tekst kontekst

<userinput> i <pre>..</pre> kontekst

<i> <emphasis>
<em> <emphasis>
<a href="URL">text</a> <ulink url="URL">text</ulink>
<a href="#ref">text</a> <xref linkend="ref">

text smides bort da docbook selv generere en tekst.

<ul> <itemizedlist mark="bullet">
<li>..</li>

Virker også uden </li>. Paragraf tags <li><p>..</p></li> er optional.

<listitem><para>..</para></listitem>
<h1 title="kamel">dromedar</h1>..

Alle tags imellem <h1> og </h1> slettes.

<chapter id="kamel">

<title>dromedar</title>

:

</chapter>

<h1>dromedar<a name="kamel"></h1>.. <chapter id="kamel">

<title>dromedar</title>

:

</chapter>

<h2> til <h5> <sect2> til <sect5>

den tilsvarende </sectX> bliver altid placeret lige før en ny <sectY> begynder hvis Y<=X. Ditto med chapter.

<img src="url" title="title" alt="beskrivelse" longdesc="lang beskrivelse af indeholdet"> <figure id="title" float="1">

<title>lang beskrivelse af billedet</title>

<graphic fileref="url" scale="60"></graphic>

</figure>

Se bemærkning.

<table summary="beskrivelse">

<caption>Overskrift</caption>

<thead>

<tr> <td>..</td> <td>..</td> </tr>

</thead>

<tbody>

<tr> <td>..</td> <td>..</td> </tr>

</tbody>

</table>

<table id="beskrivelse">

<title>Overskrift</title>

<tgroup cols="2" align="char">

<thead>

<row> <entry>..</entry> <entry>..</entry> </row>

</thead>

<tbody>

:

</tbody>

</tgroup>

</table>

Se bemærkning.

Billeder: Som figur id=".." bruges som default titel feltet, findes title ikke bruges alt feltet, og findes alt og title felterne ikke får figuren ikke nogen id. Som figur <title>..</title> bruges longdesc feltet, hvis dette ikke findes så bruges alt feltet. Findes hverken alt eller longdesc så får figuren ikke nogen titel. Scale bliver altid sat til 60. (korrekt?)

Tabeller: summary, caption og thead er alle optional. Ditto er <tbody>..</tbody> indpakningen også optional, antallet af kolonner indsættes automatisk og udregnes på basis af den første række i tbody. Perl scriptet vil automatisk forsøger at beautyfy SMGL outputtet så det ser æstetisk tilfredsstillende ud. Avancerede tabeller med rowspans og colspans vil blive konverteret på bedste vis, hvilket uden tvivel vil producere html kode, der er forkert, perl scriptet vil crashe, harddisken smelte sammen, og skærmen vil eksplodere - der udskrives ikke en fejl hvis dette sker.

Eksempler

Eksempel på <code> og <strong> i normal kontekst

Med kommandoen <code>cat /etc/passwd</code> vises filen
<strong>/etc/passwd</strong>

bliver til:

Med kommandoen <command>cat /etc/passwd</command> vises filen
<filename>/etc/passwd</filename>

Mens <code> og <strong> i <pre> kontekst

<pre>
<code>[root@daisy /root]# </code> <strong>ls -al /etc/passwd</strong>
 -rw-r--r-- 1 root root 649 jun 16 21:54 /etc/passwd 
</pre

bliver til

<screen>
<prompt>[root@daisy /root]# </prompt> <userinput>ls -al /etc/passwd</userinput>
 -rw-r--r-- 1 root root 649 jun 16 21:54 /etc/passwd
</screen>

Eksempel på headline handling

<h1 title="kamel">dromedar</h1>
Øverste niveau

<h2>lama<a name="hund"></h2>
h2 niveau

<h3><strong>hest</strong></h3>
h3 niveau

<h3>elefant</h3>
h3 niveau

<h2>spidsmus</h2>
h2 niveau

<h1>olietanker</h1>
h1 indhold.

Bliver konverteret til:

<chapter id="kamel">
  <title>dromedar</title>
Øverste niveau


<sect2 id="hund">
  <title>lama</title>
h2 niveau

<sect3>
  <title>hest</title>
h3 niveau
</sect3>

<sect3>
  <title>elefant</title>
h3 niveau
</sect3>
</sect2>

<sect2>
  <title>spidsmus</title>
h2 niveau
</sect2>
</chapter>

<chapter>
  <title>olietanker</title>
h1 indhold.
</chapter>

Unordered lists:

<ul>
<li>Bohr
<li>Planck
<li>Ehrenfest</li>
<li><p>Dirac</p></li>
</ul>

Bliver til:

<itemizedlist mark="bullet">
  <listitem>
     <para>Bohr</para>
  </listitem>

  <listitem>
     <para>Planck</para>
  </listitem>

  <listitem>
     <para>Ehrenfest</para>
  </listitem>

  <listitem>
     <para>Dirac</para>
  </listitem>
</itemizedlist>

Billeder

<img src="billed1.png">
<img src="billed2.png" alt="fisk">
<img src="billed3.png" longdesc="lang beskrivelse af fisk">
<img src="billed4.png" alt="fisk" longdesc="lang beskrivelse af fisk">
<img src="billed5.png" title="fiskebilled" alt="fisk" longdesc="lang beskrivelse af fisk">

konverteres til

<figure float="1">
<graphic fileref="billed1.png" scale="60"></graphic>
</figure>

<figure id="fisk" float="1">
<title>fisk</title>
<graphic fileref="billed2.png" scale="60"></graphic>
</figure>

<figure float="1">
<title>lang beskrivelse af fisk</title>
<graphic fileref="billed3.png" scale="60"></graphic>
</figure>

<figure id="fisk" float="1">
<title>lang beskrivelse af fisk</title>
<graphic fileref="billed4.png" scale="60"></graphic>
</figure>

<figure id="fiskebilled" float="1">
<title>lang beskrivelse af fisk</title>
<graphic fileref="billed5.png" scale="60"></graphic>
</figure>

Nogle eksempler på tabeller, en simpel tabel:

<table>
<tr><td>Fisk</td><td>Fugl</td></tr>
<tr><td>Stej</td><td>And</td></tr>
</table>

bliver til

<table >
<tgroup cols="2" align="char">
<tbody>
<row>
  <entry>Fisk</entry>
  <entry>Fugl</entry>
</row>

<row>
  <entry>Stej</entry>
  <entry>And</entry>
</row>
</tbody>

</tgroup>
</table>

Et mere avanceret eksempel:

<table summary="idkode">
<caption>Beskrivelse</caption>
<thead>
<tr>
 <td>col 1</td><td>col 2</td>
</tr>
</thead>

<tbody>
<tr>
 <td>1</td> <td>2</td>
</tr>

<tr>
 <td>3</td> <td>4</td>
</tr>
</tbody>
</table>

<table  id="idkode">
<title>Beskrivelse</title>
<tgroup cols="2" align="char">
<thead>
<row>
  <entry>col 1</entry>
  <entry>col 2</entry>
</row>
</thead>

<tbody>
<row>
  <entry>1</entry>
  <entry>2</entry>
</row>

<row>
  <entry>3</entry>
  <entry>4</entry>
</row>
</tbody>

</tgroup>
</table>