<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE webpage PUBLIC "-//Norman Walsh//DTD Website Full V2.4.0//EN" "http://docbook.sourceforge.net/release/website/2.4.0/schema/dtd/website-full.dtd">
<!--
      Este fichero es parte de la página web de AsturLiNUX. Las condiciones
      de utilización están sujetas a la misma licencia que la página web.
      Consulte la página web http://www.asturlinux.org/licencia.php para
      más detalles.
    -->
<!-- $Id: modelo-publicacion.xml 632 2005-02-20 11:29:15Z berrueta $ -->
<webpage lang="es" id="actividades.proyectos.web.modelo-publicacion">
  <config param="rcsdate" value="$Date: 2005-02-20 12:29:15 +0100 (dom, 20 feb 2005) $"/>

  <head>
    <title>Modelo de publicación</title>
  </head>

  <para>
    El modelo de publicación general de DocBook XML está ilustrado en
    el gráfico de <ulink>esta
      página</ulink> de la web de Norman Walsh.
  </para>

  <para>
    No todos los elementos del diagrama están presentes en el modelo
    de publicación que realmente se utiliza. Pero sí los siguientes:
  </para>

  <itemizedlist>

    <listitem>
      <para>
	Catálogos XML: son la forma de indicar a los procesadores de
	XSLT (y otras herramientas XML) dónde pueden encontrar las
	hojas de transformación XSLT y las definiciones de tipo de
	documento DTD. Se trata de ficheros con sintaxis XML, que se
	referencian unos a otros (de una forma similar a las
	construcciones <literal>include</literal> de muchos lenguajes
	de programación. El punto de comienzo para los catálogos de
	esta aplicación es el fichero <filename>catalog.xml</filename>
	que reside en el directorio raíz del módulo del CVS.
      </para>
    </listitem>

    <listitem>
      <para>
	Definiciones de tipo de documento (DTD): son ficheros que
	describen el vocabulario de los documentos XML válidos, es
	decir, los nombres de las etiquetas (y sus atributos) y las
	relaciones entre ellas.
      </para>
      <para>
	Las páginas web están descritas mediante el DTD <quote>Website
	  Full</quote> (algunas antiguas todavía utilizan la versión
	reducida, llamada simplemente <quote>Website</quote>. Una
	línea en la cabecera de cada documento XML especifica el DTD
	al que se adscribe el documento.
      </para>
      <para>
	La aplicación utiliza también otros DTD para describir otros
	documentos XML, como el catálogo, o el
	<literal>layout</literal>.
      </para>
    </listitem>

    <listitem>
      <para>
	Hojas de transformación XSLT: son ficheros (con sintaxis XML)
	que indican cómo realizar una transformación sobre un
	documento XML. La aplicación utiliza diversas hojas XSLT, con
	distintos propósitos, como se describe en una sección
	posterior.
      </para>
    </listitem>

    <listitem>
      <para>
	Procesador XSLT: aplicación para transformar un documento XML
	según las instrucciones de una hoja XSLT. Se utiliza para
	convertir los documentos XML originales en otros destinados a
	su publicación. Debido al gran número de veces que hay que
	aplicarlo y a la complejidad de sus parámetros, se utiliza la
	herramienta <command>make</command> para invocar las
	transformaciones. De todos los procesadores XSLT de código
	libre, se utiliza el <command>xsltproc</command>, aunque
	podría reemplazarse por cualquier otro.
      </para>
    </listitem>

  </itemizedlist>

  
  <section>
    <title>Hojas de transformación XSLT</title>

    <para>
      Se utilizan en esta aplicación distintos conjuntos de hojas de
      transformación, para los siguientes propósitos:
    </para>

    <itemizedlist>

      <listitem>
	<para>
	  Ayudar en el procesamiento de los documentos, realizando el
	  cálculo de dependencias (generación parcial del fichero
	  <filename>Makefile</filename>).
	</para>
      </listitem>

      <listitem>
	<para>
	  Reconocer la separación entre la disposición física de los
	  documentos XML en el directorio <filename>xml</filename> y
	  la disposición de las páginas generadas (es decir, sus
	  URLs).
	</para>
      </listitem>

      <listitem>
	<para>
	  Transformar los documentos XML en páginas XHTML, para lo
	  cual se usa las hojas de estilo de Norman Walsh (con una
	  ligera adaptación que se describe en el siguiente punto) y
	  unas hojas de estilo personales que modifican ciertos
	  parámetros de las anteriores.
	</para>
      </listitem>

      <listitem>
	<para>
	  Adaptar las hojas de estilo de Norman Walsh para que generen
	  XHTML totalmente válido. Las originales están pensadas para
	  HTML, pero como las propias hojas XSLT son a su vez
	  documentos XML, se puede usar otra hoja XSLT para realizar
	  algunas modificaciones sobre ellas.
	</para>
      </listitem>

      <listitem>
	<para>
	  Transformar los documentos XML en otros formatos, como HTML
	  y LaTeX.
	</para>
      </listitem>

    </itemizedlist>

  </section> <!-- Hojas de transformación XSLT -->


  <section>
    <title>Formatos de publicación</title>

    <para>
      FIXME: escribir esta seccción
    </para>

  </section> <!-- Formatos de publicación -->


  <section>
    <title>Configurando las herramientas en Debian</title>

    <para>
      Algunas particularidades referidas a la configuración de las
      herramientas necesarias en un sistema Debian GNU/Linux están
      anotadas en <ulink>este wiki</ulink>, incluyendo las listas de paquetes necesarios.
    </para>

    <para>
      El <ulink>capítulo 3</ulink> del libro <quote>DocBook XSL: The Complete Guide</quote> también contiene información útil sobre las herramientas.
    </para>

    <para>
      También resulta práctico el documento <ulink>Installing And Using An XML/SGML DocBook Editing Suite</ulink>.
    </para>

    <para>
      Para los amantes de (X)Emacs, existe un gran soporte para
      trabajar con DocBook XML y otras tecnologías (como XSLT). En la
      versión XEmacs ya están integradas en el editor, pero eso no es
      todo, ya que también se pueden conseguir extensiones como <ulink>ésta</ulink>.
    </para>

  </section> <!-- Configurando las herramientas en Debian -->


  <section>
    <title>Publicación mediante <command>make</command></title>

    <para>
      Las tres
      principales formas de invocar a <command>make</command> son las
      siguientes:
    </para>
  
    <variablelist>
      
      <varlistentry>
	<term><command>make</command> (o también <command>make all</command>)</term>
	<listitem>
	  <para>
	    Genera todas las páginas y las deja en el directorio
	    <filename>build</filename> listas para instalación.
	  </para>
	</listitem>
      </varlistentry>
      
      <varlistentry>
	<term><command>make install</command></term>
	<listitem>
	  <para>
	    Instala las páginas. Básicamente, copia el contenido del
	    directorio <filename>build</filename> (y otros) en los
	    sitios apropiados.
	  </para>
	</listitem>
      </varlistentry>
      
      <varlistentry>
	<term><command>make mrproper</command></term>
	<listitem>
	  <para>
	    Limpia todos los restos de la generación de las páginas.
	  </para>
	</listitem>
      </varlistentry>
      
    </variablelist>

  </section> <!-- Publicación mediante make -->

    
  <section>
    <title>Otros usos de <command>make</command></title>

    <variablelist>
      
      <varlistentry>
	<term><command>make check-xml</command></term>
	<listitem>
	  <para>
	    Comprueba que las páginas en <literal>XML</literal> sean
	    documentos bien formados y válidos con respecto a sus
	    correspondientes <literal>DTD</literal>. Es muy
	    convieniente ejecutar esta tarea antes de subir cualquier
	    cambio al <literal>CVS</literal>. Si no hay ningún error,
	    el comando no muestra ningún mensaje.
	  </para>
	</listitem>
      </varlistentry>
      
      <varlistentry>
	<term><command>make check-xhtml</command></term>
	<listitem>
	  <para>
	    Realiza la misma comprobación, pero para las páginas ya
	    generadas en <literal>XHTML</literal>. No deberían
	    detectarse errores en esta comprobación, lo contrario
	    indicaría un error en las hojas de estilo.
	  </para>
	</listitem>
      </varlistentry>
      
      <varlistentry>
	<term><command>make check-layout</command></term>
	<listitem>
	  <para>
	    Realiza también la comprobación, en este caso sólo para el
	    fichero <filename>layout.xml</filename>. Es conviente
	    ejecutar esta tarea después de modificar este fichero.
	  </para>
	</listitem>
      </varlistentry>
      
    </variablelist>

  </section> <!-- Otros usos de make -->

  <section>
    <title>Detalles del funcionamiento del <command>make</command></title>
  
    <para>
      FIXME: escribir esta sección
    </para>
  </section>

</webpage>
