[PLUTO-devel] Ingenium, step 1

Claudio Cattazzo claudio a pluto.it
Gio 14 Lug 2005 16:28:23 CEST


On Thu, Jul 14, 2005 at 12:19:06PM +0200, Claudio Cattazzo wrote:
> Oggi provo a vedere cosa e quanto riesco a fare in XSL...

Ho un foglio di stile XSL funzionante, che converte l'articolo su cui stiamo
lavorando in formato XHTML Strict valido.
Mancano ancora varie cose (per questo articolo solo biblio mi sembra, ma in
generale mancano altri tag, come contributor, figures, ecc.), ma considerato
il fatto che ci ho lavorato poco tempo oggi pomeriggio e che sono arrivato
ad una prima versione già funzionante del foglio di stile, mi sembra che vada
bene.

Indentazione e ritorni a capo del codice HTML non sono davvero perfetti,
direi che una volta generata la pagina la si farà passare attraverso tidy,
che sistemerà tutto.

Allego il file XSL, si usa semplicemente così:
  xsltproc article.xsl swlibero-scie1.xpj > swlibero-scie1.html

Ovviamente è una beta, tutto è modificabile.

A questo punto, decidiamo se utilizzare XPathScript o XSLT. :-)


- Claudio
-------------- parte successiva --------------
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="xml" encoding="ISO-8859-1" omit-xml-declaration="no"
  standalone="yes" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
  doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
  indent="yes"/>

<xsl:template match="/">
  <html lang="it">
    <head>
      <title>
        <xsl:value-of select="//title"/>
      </title>
      <link rel="stylesheet" href="pj.css" type="text/css"/>
    </head>
    <body>
      <h1>
        <xsl:value-of select="//title"/>
      </h1>
      <p>
        di
        <a href="#authorinfo">
          <xsl:value-of select="//author"/>
        </a>
      </p>
      <div class="abstract">
        <h2>
          L'articolo...
        </h2>
        <p>
          <xsl:value-of select="//abstract"/>
        </p>
      </div>
      <hr/>
      <xsl:apply-templates select="//chapter"/>
    </body>
  </html>
</xsl:template>

<xsl:template match="//chapter">
  <xsl:apply-templates/>
</xsl:template>

<xsl:template match="//sect">
  <xsl:apply-templates/>
</xsl:template>

<xsl:template match="chapter/title">
  <h2>
    <xsl:apply-templates/>
  </h2>
</xsl:template>

<xsl:template match="section/title">
  <h3>
    <xsl:apply-templates/>
  </h3>
</xsl:template>

<xsl:template match="//p">
  <p>
    <xsl:apply-templates/>
  </p>
</xsl:template>

<xsl:template match="//list">
  <ul>
    <xsl:apply-templates/>
  </ul>
</xsl:template>

<xsl:template match="//item">
  <li>
    <xsl:apply-templates/>
  </li>
</xsl:template>

<xsl:template match="//link">
  <a>
    <xsl:attribute name="href">
      <xsl:value-of select="@url"/>
    </xsl:attribute>
    <xsl:apply-templates/>
  </a>
</xsl:template>

<xsl:template match="//kw">
  <tt>
    <xsl:apply-templates/>
  </tt>
</xsl:template>

<xsl:template match="//table">
  <table>
    <xsl:apply-templates/>
  </table>
</xsl:template>

<xsl:template match="//row">
  <tr>
    <xsl:apply-templates/>
  </tr>
</xsl:template>

<xsl:template match="//cell">
  <td>
    <xsl:apply-templates/>
  </td>
</xsl:template>

<xsl:template match="//bio">
  <hr/>
  <div id="authorinfo">
    <p class="bio">
      <xsl:apply-templates/>
    </p>
  </div>
</xsl:template>

</xsl:stylesheet>


Maggiori informazioni sulla lista pluto-devel