<?xml version='1.0' encoding='iso-8859-1'?>
<!DOCTYPE slides SYSTEM "../slides-full.dtd">
<?dbhtml graphics-dir="./graphics"?>
<?dbhtml css-stylesheet="./browser/slides.css"?>
<?dbhtml script-dir="./browser"?>
<slides lang="es">
 <slidesinfo>
  <title>Documentación técnica usando
  <acronym>DocBook</acronym></title>
  <date>13 de Junio 2002</date>
  <author>
   <firstname>Jaime</firstname>
   <othername>Irving</othername>
   <surname>Dávila</surname>
  </author>
  <legalnotice>
   <para>El presente documento se cede al dominio público</para>
  </legalnotice>
 </slidesinfo>
 <section>
  <title>Introducción</title>
  <foil>
   <title>Historia</title>
   <itemizedlist>
    <listitem>
     <para><acronym>DocBook</acronym> nace en 1991 bajo la iniciativa
      de un grupo informal que incluía representantes de
      <wordasword>O'Reilly</wordasword>, <wordasword>Hal Computer
      Systems</wordasword> y representantes de los mayores vendedores
      de <acronym>UNIX</acronym> los cuales buscaban explorar formatos
      electrónicos que permitieran intercambiar los manuales de mejor
      forma.</para>
    </listitem>
    <listitem>
     <para>En 1994, este grupo informal se organiza bajo el nombre del
      <wordasword>grupo Davenport</wordasword> y continua su
      desarrollo hasta 1998.</para>
    </listitem>
    <listitem>
     <para>Dicho grupo se fusiona con <acronym>OASIS</acronym> hacia
      1998. <acronym>OASIS</acronym> es un consorcio de
     <acronym>XML/SGML</acronym> que busca la estandarización.</para>
    </listitem>
    <listitem> 
     <para>Hoy en día <acronym>DocBook</acronym> es utilizado por
      multitud de empresas como lo son <acronym>SUN</acronym>,
      <acronym>HP</acronym> y <wordasword>O'Reilly</wordasword> y por
      proyectos de Software Libre/Fuente Abierta como lo son
      <acronym>GNOME</acronym>, <acronym>Free BSD</acronym>,
      <acronym>KDE</acronym>, <acronym>PHP</acronym> y
      <acronym>LDP</acronym>.</para>
    </listitem>
   </itemizedlist>

  </foil>

  <foil>
   <title>¿Qué es <acronym>DocBook</acronym>?</title>

   <para>Es un formato de escritura <emphasis>estructurada</emphasis>
    basado en tecnología <acronym>SGML/XML</acronym> que permite
    escribir <emphasis>documentación técnica</emphasis>.</para> </foil>
  <foil>
   <title>Documentación estructurada ... ¿es decir?</title>

   <para>Se dice que un formato es <emphasis>estructurado</emphasis>
    si da énfasis a la estructura del documento, en contraste con la
    forma en que el documento es presentado</para>

   <para>Por ejemplo <acronym>HTML</acronym> usado de cierta forma
    puede ser un formato estructurado, como en el siguiente
    ejemplo:</para>
   <informalexample>
   <programlisting><![CDATA[
<html>
  <head>
    <title>Mi primera página</title>
  </head>
  <body>
    <h1>Título</h1>
    <p>Un párrafo</p>
  </body>
</html>
]]></programlisting>
</informalexample>
   <para>O puede no serlo ...</para>
   <informalexample>
<programlisting><![CDATA[
<html>
  <head>
    <title>Mi primera página</title>
  </head>
  <body>
    <font face="verdana,arial,helvetica" size="5"><b>Título</b><br/><br/>
      <em>Un párrafo</em>
  </body>
</html>
]]></programlisting>
   </informalexample>
  </foil>
  <foil>
   <title>... ¿Y qué es <acronym>SGML</acronym>? ¿y
   <acronym>XML</acronym>?</title>
   <itemizedlist>
    <listitem>
     <para><acronym>SGML</acronym> significa <foreignphrase>Standard
       Generalized Mark-up Language</foreignphrase> y es la
       especificación de un conjunto de lenguajes basados en
       marquillas. </para>

     <para>El ejemplo más famoso de <emphasis>dialecto</emphasis>
      <acronym>SGML</acronym> es <acronym>HTML</acronym>.</para>
    </listitem>

    <listitem>
     <para><acronym>XML</acronym> es una simplificación de
      <acronym>SGML</acronym> con propósitos de orientación a la
      <acronym>web</acronym>. No incluye características de
      <acronym>SGML</acronym> como lo son la minimización de
      marquillas.</para>
    </listitem>
   </itemizedlist>
  </foil>
  <foil>
   <title>¿Y qué es documentación técnica?</title>
   <para>Algunos ejemplos de documentación técnica:</para>
   <orderedlist>
    <listitem>
     <para>Manuales de usuario.</para>
    </listitem>
    <listitem>
     <para>Libros técnicos, de enseñanza de un lenguaje.</para>
    </listitem>
    <listitem>
     <para>Documentación de un <acronym>API</acronym></para>
    </listitem>
    <listitem>
     <para>Una sección de preguntas frecuentes (<acronym>FAQ</acronym>).</para>
    </listitem>
   </orderedlist>
   <para>Algunos ejemplos de documentación no técnica:</para>
   <orderedlist>
    <listitem>
     <para>Una carta.</para>
    </listitem>
    <listitem>
     <para>Una hoja de vida.</para>
    </listitem>
    <listitem>
     <para>Un libro de recetas.</para>
    </listitem>
   </orderedlist>
  </foil>
 </section>
 <section>
  <title>Un primer ejemplo en <acronym>DocBook</acronym></title>
  <foil>
   <title>Archivo <filename>hola.sgml</filename></title>
<programlisting><![CDATA[
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
<book lang="es">
  <chapter>
    <title>Hola</title>
    <para>Esta es la introducción</para>
    <!-- Un primer comentario -->
    <sect1>
      <title>Sección Única</title>
      <para>Y hasta dice algo. </para>
      <sect2>
	<title>Primera subsección</title>
	<para>1 &lt; 2</para>
      </sect2>
      <sect2>
	<title>Segunda subsección</title>
	<para>Nada que decir</para>
      </sect2>
    </sect1>
  </chapter>
</book>
]]>
</programlisting>
  </foil>
  <foil>
   <title>Descripción de las partes de
   <filename>hola.sgml</filename></title> 
   <variablelist>
    <varlistentry>
     <term>Encabezado</term>
     <listitem>
      <para>Es donde se describe que tipo de documento
       <acronym>SGML</acronym>, puede hacer referencia a un archivo
       físico o a un identificador que después se resuelve en un
       catálogo.</para> 
      <para>En este caso el encabezado es </para>
      <programlisting><![CDATA[
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
]]>
</programlisting>
     </listitem>
    </varlistentry>
    <varlistentry>
     <term>Elementos</term>
     <listitem>
      <para>Es cualquiera de las marquillas que describen la
       estructura, en este caso solo presentamos marquillas de
       organización del documento, las cuales son
       <sgmltag>book</sgmltag>, <sgmltag>sect1</sgmltag>,
       <sgmltag>title</sgmltag>.</para>
     </listitem>
    </varlistentry>
    <varlistentry>
     <term>Entidades</term>
     <listitem>
      <para>Usualmente representan caracteres que no pueden ser
       presentados textualmente. En este caso, la entidad que
       utilizamos era &amp;lt; en vez de &lt; que tiene significado
       adicional dentro de <acronym>SGML</acronym>.</para>
     </listitem>
    </varlistentry>
    <varlistentry>
     <term>Comentarios</term>
     <listitem>
      <para>Usualmente no son procesados, brindan aclaraciones en el
       documento. Es <programlisting>&lt;!-- Un primer comentario --></programlisting></para> 
     </listitem>
    </varlistentry>
   </variablelist>
  </foil>
  <foil>
   <title>Edición de <acronym>SGML/XML</acronym></title>
   <para>Puesto que los archivos <acronym>SGML</acronym> son archivos
    de texto, la edición se puede realizar a través de editores de
    texto. Sin embargo dependiendo del editor se tienen más
    facilidades para la escritura (escribir un documento
    <acronym>DocBook</acronym> en <application>Notepad</application>
    <emphasis>NO</emphasis> es recomendado)
   </para>
   <para>Los más populares editores que tienen facilidades para
    <acronym>DocBook</acronym> son: </para>
   <orderedlist>
    <listitem>
     <para><acronym>Emacs</acronym>: Tiene el modo
     <acronym>PSGML</acronym> el cual muestra cuales son las
      marquillas disponibles en un momento determinado, hace
     autocompletación ...</para>
    </listitem>
    <listitem>
     <para><acronym>Vim</acronym>: Existe una manera de configurarlo,
      para no escribir las marquillas completas.</para>
    </listitem>
    <listitem>
     <para><acronym>Jedit</acronym>: Es un editor hecho en
      <application>Java</application>, con muchas características
      gráficas, y que muestra por ejemplo el árbol de la estructura de
      un documento.</para>
    </listitem>
   </orderedlist>
  </foil>

  <foil>
   <title>Formatos de salida</title>
   <para>A partir de <filename>hola.sgml</filename> se pueden generar
    diversas salidas en diversos formatos como:</para>
   <orderedlist>
    <listitem>
     <para>HTML</para>
    </listitem>
    <listitem>
     <para>PS</para>
    </listitem>
    <listitem>
     <para>RTF</para>
    </listitem>
    <listitem>
     <para>PDF</para>
    </listitem>
   </orderedlist>

   <para>Esto se realiza a través de algunos
    <foreignphrase>scripts</foreignphrase> como
    <command>db2html</command>, <command>db2ps</command>,
    <command>db2rtf</command>, <command>db2pdf</command>.</para>

  </foil>
  <foil>
   <title>Algunos conceptos en <acronym>SGML/XML</acronym></title>
   <variablelist>
    <varlistentry>
     <term><acronym>DTD</acronym></term>
     <listitem>
      <para>Es un archivo en el cual se describe la sintaxis de un
       documento <acronym>SGML/XML</acronym>, en el se definen cuales
       son las marquillas válidas, que tipo de entidades se van a
       utilizar.</para>
     </listitem>
    </varlistentry>

    <varlistentry>
     <term>Hojas de estilo: <acronym>DSSSL</acronym> y
     <acronym>XSLT</acronym></term> 
     <listitem>
      <para>Definen cual va a ser la presentación que va a tener
       documento en formato <acronym>HTML</acronym> o en salida
       impresa. <acronym>DSSSL</acronym> es un lenguaje con una
       sintaxis similar a <acronym>LISP</acronym> y que es propia de
       <acronym>SGML</acronym>. <acronym>XSLT</acronym> cumple con el
       mismo propósito usando un lenguaje con sintaxis
       <acronym>XML</acronym>, simplificando algunas características
       de <acronym>DSSSL</acronym> </para>
      <para>Las hojas de estilo son bastante configurables, a través
       de multitud de parámetros y de las facilidades que brinde cada
       lenguaje de hojas de estilo.</para>
     </listitem>
    </varlistentry>
   </variablelist>
  </foil>
  <foil>
   <title>Algunos conceptos en <acronym>SGML/XML</acronym> (2)</title>
   <variablelist>
    <varlistentry>
     <term>Procesador <acronym>DSSSL</acronym> o <acronym>XSL</acronym></term>
     <listitem>
      <para>Son programas que toma un archivo <acronym>XML</acronym> y
       una hoja de estilo y generan una determinada salida.</para>
      <para>Algunos de los más populares y utilizados son</para>
      <variablelist>
       <varlistentry>
	<term><application>openjade/jade</application></term>
	<listitem>
	 <para>Es un procesador <acronym>DSSSL</acronym> bastante
	  maduro, que permite generar salida en
	  <acronym>HTML</acronym>, <acronym>TEX</acronym> y
	  <acronym>RTF</acronym></para>
	</listitem>
       </varlistentry>
       <varlistentry>
	<term><application>xsltproc</application></term>
	<listitem>
	 <para>Es el procesador <acronym>XSL</acronym> del proyecto
	  <acronym>Gnome</acronym>. Bastante rápido y genera salida en
	  <acronym>HTML</acronym>, <acronym>XML</acronym> y
	 <acronym>FOP</acronym>.</para>
	</listitem>
       </varlistentry>
       <varlistentry>
	<term><application>saxon</application></term>
	<listitem>
	 <para>Es un procesador <acronym>XSL</acronym> escrito en
	  <application>Java</application>, bastante popular.</para>
	</listitem>
       </varlistentry>
      </variablelist>

     </listitem>
    </varlistentry>
   </variablelist>

  </foil>
 </section>

 <section>
  <title>Algunas posibilidades</title>
  <foil>
   <title>Un pequeño artículo</title>
   <programlisting><![CDATA[
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
<article>
 <articleinfo>
  <author>
   <firstname>Jose</firstname>
   <othername role="mi">Fernando</othername>
   <surname>Pérez</surname>
  </author>
  <title>Una aproximación analítica a <phrase>Hola Mundo</phrase> </title>
  <pubdate>13 de Junio de 2002</pubdate>
  <copyright>
   <year>2002</year>
   <holder>Jose Pérez</holder>
  </copyright>
  <revhistory>
   <revision>
    <revnumber>1.0</revnumber>
    <date>15 de Mayo de 2002</date>
    <revremark>Versión inicial</revremark>
   </revision>
   <revision>
    <revnumber>1.1</revnumber>
    <date>13 de Junio de 2002</date>
    <revremark>Inclusión de capítulo Hello World</revremark>
   </revision>
  </revhistory>
 </articleinfo>
 <section>
  <title>Hola Mundo</title>
 </section>
</article>
]]>
</programlisting>
  </foil>
  <foil>
   <title>Un párrafo en un tutorial</title>
   <programlisting><![CDATA[
  <caution>
   <para>En <application>emacs</application> <keysym>C-x</keysym>
    significa que presione al mismo tiempo
    <keycap>Control</keycap> y <keycap>X</keycap></para>
  </caution>
  
  <important>
   <para>Puede conseguir información adicional de
    <application>emacs</application> en este <ulink
     url="http://www.emacs.org">enlace</ulink>, o una copia del
    archivo <ulink url="hola.txt">hola.txt</ulink>. En caso de dudas
    o comentarios puede enviar un
    <foreignphrase>email</foreignphrase> a
    <email>jadavila@uniandes.edu.co</email>.</para></important>

  <indexterm>
   <primary>hola.txt</primary>
  </indexterm>
  <indexterm>
   <primary>emacs</primary>
   <secondary>información</secondary>
  </indexterm>]]>
</programlisting>
  </foil>
  <foil>
   <title>Descripción de un <acronym>API</acronym></title>
   <programlisting><![CDATA[
  <classsynopsis>
   <ooclass>
    <classname>HelloWriter</classname>
   </ooclass>
   <constructorsynopsis>
    <methodname>HelloWriter</methodname>
    <methodparam>
     <type>String</type>
     <parameter>greeting</parameter>
    </methodparam>
   </constructorsynopsis>
   <methodsynopsis>
    <methodname>print</methodname>
   </methodsynopsis>
  </classsynopsis>]]></programlisting>
  </foil>
  <foil>
   <title>Preguntas Frecuentes</title>
   <programlisting><![CDATA[
 <qandaset defaultlabel="number">
  <qandaentry>
    <question>
     <para>¿Qué es <acronym>DocBook</acronym>?</para>
    </question>
    <answer>
     <para>Es un lenguaje de marcado útil para escribir
      documentación técnica.</para>
    </answer>
   </qandaentry>
  </qandaset>
]]>
</programlisting>

  </foil>
 </section>
 <section>
  <title>Recursos adicionales</title>
  <foil>
   <title>Bibliografía</title>

   <variablelist>
    <varlistentry>
     <term><foreignphrase>Docbook: The Definitive Guide</foreignphrase></term>
     <listitem>
      <para><ulink url="http://docbook.org/tdg/en/html/docbook.html"></ulink></para>
     </listitem>
    </varlistentry>
    <varlistentry>
     <term><foreignphrase>Introducing Docbook</foreignphrase></term>
     <listitem>
      <para><ulink
	url="http://nwalsh.com/docs/tutorials/winwriters2001/noframes"></ulink></para>
     </listitem>
    </varlistentry>
    <varlistentry>
     <term>Presentación de Docbook</term>
     <listitem>
      <para><ulink
	url="http://lucas.hispalinux.es/Presentaciones/0000otras/conf-olea1/html/"></ulink></para>
     </listitem>
    </varlistentry>
    <varlistentry>
     <term>Tutorial de Docbook: Un enfoque integrado y a través de ejemplos</term>
     <listitem>
      <para><ulink
	url="http://lucas.hispalinux.es/Tutoriales/DOCBOOK/doctut/multiple-html/index.html"></ulink></para>
     </listitem>
    </varlistentry>
   </variablelist>
   <para>Para resolver dudas existen: </para>
   <variablelist>
    <varlistentry>
     <term>Lista docbook-ayuda</term>
     <listitem>
      <para><ulink
	url="http://listas.hispalinux.es/mailman/listinfo/docbook-ayuda/"></ulink></para>
     </listitem>
    </varlistentry>
    <varlistentry>
     <term>Lista docbook y docbook-apps</term>
     <listitem>
      <para><ulink
	url="http://www.oasis-open.org/docbook/mailinglist/index.shtml"></ulink></para>
     </listitem>
    </varlistentry>
    <varlistentry>
     <term>Preguntas frecuentes (<acronym>FAQ</acronym>)</term>
     <listitem>
      <para><ulink url="http://www.dpawson.co.uk/docbook"></ulink></para>
     </listitem>
    </varlistentry>
   </variablelist>
  </foil>
 </section>
</slides>