On Monday 4 August 2003, at 21 h 33, the keyboard of Vincent Lefevre 
<[EMAIL PROTECTED]> 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`"




Répondre à