[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: docbook XML et debian



On Monday 4 August 2003, at 21 h 33, the keyboard of Vincent Lefevre 
<vincent@vinc17.org> wrote:

> À part ça, concernant l'écriture de fichiers DocBook pour faire des
> pages web (HTML ou XHTML) avec XSLT, j'avais crossposté ceci dans
> fr.comp.infosystemes.www.auteurs et fr.comp.text.xml, mais je n'ai
> pas eu de réponse:
...
> Y a-t-il des documents expliquant comment on peut écrire un site web à
> partir de sources en DocBook (éventuellement modifié) et transformées
> par XSLT?

Avec la DTD WebSite <URL:http://sourceforge.net/projects/docbook/>, une 
customisation de DocBook? Ou bien avec du vrai DocBook (chose que je fais en 
ce moment) ?

> D'autre part, comment gérer plusieurs langues (pour produire des pages
> web dans plusieurs langues)? On écrit un fichier par langue (ce que je
> fais actuellement avec mes sources en XHTML) ou y a-t-il une solution
> préférable?

J'écris un fichier par langue, avec l'attribut lang.
 
> Existe-t-il un élément (ou autre chose) permettant de faire un
> remplacement? Par exemple:
> 
>   Ce document a été généré à la date <ext value="date"/>.

Il n'existe pas de moyen simple et standard de faire cela. Mon approche est de 
tester si EXSLT est disponible (il l'est dans xsltproc, par exemple), et de 
l'utiliser dans ce cas. Sinon, c'est au programme appelant (dans mon cas, 
make) de fournir la date via un paramètre XML.

Voici les parties de la feuille de style qui font cela :

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                xmlns:date="http://exslt.org/dates-and-times";
                version='1.0'>
...
    <xsl:choose>
      <xsl:when test="function-available('date:date-time')">
        <xsl:variable name="now" select="date:date-time()"/>
        <xsl:value-of select="date:year($now)"/>
        <xsl:text>/</xsl:text>
        <xsl:value-of select="date:month-in-year($now)"/>
        <xsl:text>/</xsl:text>
        <xsl:value-of select="date:day-in-month($now)"/>
        <xsl:text> (date obtained by the XSL processor)</xsl:text>
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="$current_date"/>
        <xsl:text> (date obtained from the calling program)</xsl:text>
      </xsl:otherwise>
    </xsl:choose>

Si la fonction XSLT n'est pas disponible, il aura fallu appeler le processeur 
XSL avec une valeur pour current_date.

Par exemple, pour Sablotron (qui n'a pas EXSLT), mon Makefile fait :

sabcmd ${STYLESHEET} $< $@ "\$$current_date=`date +%Y/%m/%d`"






Reply to: