Una foto di Elia Contini.


UX Camp Italia 2009

Da oggi sono aperte le registrazioni ad UX Camp Italia 2009, il barcamp dedicato alla user experience che si terrà a Firenze il 17 ottobre 2009.

In più se siete nei paraggi di Firenze questo week end siete tutti invitati allo UX Campari. Ci saranno tutti i membri dello staff di UX Camp Italia 2009. Per maggiori info seguiteci su Twitter.

Vi aspetto!

Etichette: conferenze, UX, barcamp, uxci09, firenze

Appunti di XHTML 1.0 Strict e basi di accessibilità versione 1.2

Ho pubblicato la versione 1.2 degli Appunti di XHTML 1.0 Strict e basi di accessibilità e relativi esempi aggiornati.

Etichette: sviluppo web, appunti, xhtml, 1.0, strict, accessibilità

Piccolo tutorial su eXtensible Stylesheet Language Transformation (XSLT)

XSLT è una tecnologia sviluppata dal W3C che permette, a partire da dati in formato XML, di generare documenti nei più disparati formati. L'esempio che vedremo in questo breve tutorial genera a partire da un file XML una pagina XHTML 1.0 Strict.

Ammettiamo di avere un file XML che contiene i nostri appunti. Il contenuto del file XML è il seguente:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="transformation.xsl"?>
<notes>
  <note>
    <headingLevel1>Titolo livello 1 ol&eacute;</headingLevel1>
    <paragraph>
      Questa &egrave; la <strong>prima</strong> nota
      <emphatized>scritta</emphatized> con
      <link url="http://www.w3.org/XML/" urllang="en-EN">XML</link>.
    </paragraph>
		
    <list type="ordered">
      <list-item>
        elemento 1 di una lista <strong>ordinata</strong>
      </list-item>
      <list-item>elemento 2 <emphatized>corsivo</emphatized></list-item>
      <list-item>
        sito del <link url="http://www.w3.org/" urllang="en-EN">W3C</link>
      </list-item>
      <list-item>
        <headingLevel3>Titolo livello 3 ol&eacute;</headingLevel3>
        <list type="unordered">
          <list-item>
            elemento 1 di una lista <strong>non ordinata</strong>
          </list-item>
          <list-item>
            elemento 2 <emphatized>corsivo</emphatized>
          </list-item>
        </list>
      </list-item>
    </list>
  </note>
</notes>

Ora ciò che dobbiamo fare è creare una trasformazione XSLT che generi una pagina XHTML gestendo correttamente le lettere accentate e tutti gli elementi: titoli, paragrafi, liste e via dicendo. La trasformazione è la seguente:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    
  <xsl:output omit-xml-declaration="yes"/>
    
  <xsl:template match="/">
    <xsl:text disable-output-escaping="yes">
      <![CDATA[
      <!DOCTYPE html PUBLIC
      "-//W3C//DTD XHTML 1.0 Strict//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
      ]]>
    </xsl:text>
		
    <xsl:text disable-output-escaping="yes">
      <![CDATA[
      <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it">
      ]]>
    </xsl:text>
    <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      <title>Appunti</title>
    </head>
    <body>
      <xsl:apply-templates/>
    </body>
    <xsl:text disable-output-escaping="yes">
      <![CDATA[
      </html>
      ]]>
    </xsl:text>
  </xsl:template>
    
  <!-- Every text must be escaped-->
  <xsl:template match="text()">
    <xsl:value-of select="." disable-output-escaping="yes"/>
  </xsl:template>

  <!-- Heading levels -->
  <xsl:template match="headingLevel1">
    <h1><xsl:value-of select="." disable-output-escaping="yes"/></h1>
  </xsl:template>
    
  <xsl:template match="headingLevel2">
    <h2><xsl:value-of select="." disable-output-escaping="yes"/></h2>
  </xsl:template>
    
  <xsl:template match="headingLevel3">
    <h3><xsl:value-of select="." disable-output-escaping="yes"/></h3>
  </xsl:template>
    
  <xsl:template match="headingLevel4">
    <h4><xsl:value-of select="." disable-output-escaping="yes"/></h4>
  </xsl:template>
    
  <xsl:template match="headingLevel5">
    <h5><xsl:value-of select="." disable-output-escaping="yes"/></h5>
  </xsl:template>
    
  <xsl:template match="headingLevel6">
    <h6><xsl:value-of select="." disable-output-escaping="yes"/></h6>
  </xsl:template>

  <!-- paragraphs -->
  <xsl:template match="paragraph">
    <p>
      <xsl:apply-templates/>
    </p>
  </xsl:template>
    
  <!-- Lists -->
  <xsl:template match="//list[@type='ordered']">
    <ol>
      <xsl:apply-templates/>
    </ol>
  </xsl:template>
    
  <xsl:template match="//list[@type='unordered']">
    <ul>
      <xsl:apply-templates/>
    </ul>
  </xsl:template>
    
  <xsl:template match="list/list-item">
    <li>
      <xsl:apply-templates/>
    </li>
  </xsl:template>
    
  <!-- Commons -->
  <xsl:template match="//strong">
    <strong><xsl:value-of select="." disable-output-escaping="yes"/></strong>
  </xsl:template>
	
  <xsl:template match="//emphatized">
    <em><xsl:value-of select="." disable-output-escaping="yes"/></em>
  </xsl:template>
	
  <xsl:template match="//link">
    <a>
      <xsl:attribute name="href"><xsl:value-of select='@url'/></xsl:attribute>
      <xsl:attribute name="hreflang"><xsl:value-of select='@urllang'/></xsl:attribute>
      <xsl:value-of select="."/>
    </a> 
  </xsl:template>

</xsl:stylesheet>

A questo punto basterà aprire il file XML con un browser che supporta lato client le trasformazioni XSLT (in questo caso, strano a dirsi, tutti i browser tranne Firefox) per vedere il risultato. Se invece volete generare un file XHTML sul vostro filesystem allora potete usare Xalan o strumenti simili.

Alcune note

Il template

  <xsl:template match="text()">
    <xsl:value-of select="." disable-output-escaping="yes"/>
  </xsl:template>

serve a trasformare il testo correttamente. Se mancasse questo template le entità all'interno dei tag con figli non sarebbero trasformate correttamente.

Il template

  <xsl:template match="//link">
    <a>
      <xsl:attribute name="href"><xsl:value-of select='@url'/></xsl:attribute>
      <xsl:attribute name="hreflang"><xsl:value-of select='@urllang'/></xsl:attribute>
      <xsl:value-of select="."/>
    </a> 
  </xsl:template>

per la gestione dei link fa vedere come vanno gestiti gli attributi.

Potete anche scaricare l'esempio.

Etichette: codice, xslt, tutorial, trasformazioni, xhtml, w3c

Better Software e PyCon 3 Italia

Dal 6 al 10 di Maggio ho avuto il piacere di partecipare a Better Software prima e a PyCon 3 Italia poi.

Le due conferenze trattavano principalmete argomenti legati allo svilupppo di software di qualità ed alla fine il filo conduttore di entrambe le conferenze può essere riassunto da una frase di Charles Darwin tra l'altro citata più volte nei vari talk:

Non sopravvive chi è più forte o intelligente, ma chi si adatta più velocemente

Altro aspetto molto piacevole delle due conferenze è stato il networking "dal vivo": ho avuto modo conoscere tante persone ed ho avuto un ulteriore conferma sul fatto che l'Italia è ricca di persone di talento.

Mi manca già questo ambiente ed aspetto il prossimo anno per ripetere l'esperienza.

Etichette: conferenze, firenze, 2009, bettersoftware, pycon

Dal profondo del cuore ...

Java Shit!

E spero di non dover mai più sviluppare un'applicazione desktop in Java!

Etichette: personale, sfoghi

MS Internet Explorer 8 e il background del fieldset

Proseguo con la demolizione di ciò che la Microsoft ha avuto il coraggio di presentare come browser rivoluzionario e risolutore di tutti i problemi di visualizzazione a cui i web designer dovevano porre rimedio attraverso workaround.

Ma vediamo alcune immagini per chiarire il bug che speravo fosse stato corretto. Lo sfondo del fieldset come lo renderizza (incorrettamente) MS Internet Explorer. Come potete constatare impostando uno sfondo del fieldset differente da quello della pagina, MS Internet Eplorer 8 visualizza un rettangolo che comprende anche il tag legend e la parte esterna del fieldset. Questo "effetto" fa veramente schifo!

Ma vediamo come i veri browser renderizzano il form. Lo sfondo del fieldset come lo renderizza (correttamente) Firefox.

Potete visualizzare l'esempio su questa pagina.

Se ne avete necessità, ecco un workaround.

Etichette: ultime dal web, internet explorer 8, bug, fieldset, background

Ecco a voi Ubuntu GNU/Linux 9.04

Mentre scrivo il post la sto scaricando (usate torrent se potete).

Per conoscere le novità introdotte in questa versione potete visitare il sito ufficiale.

Se non avete una connessione a banda larga potete richiedere gratuitamente un CD utilizzanto il sistema Shipit.

Buona installazione!

Etichette: ubuntu, gnu, linux, 9.04, jaunty jackalope

1 2 3 4 5 6 7 8 9 10 11 12


Cerca nel blog

Categorie

RSS

Elia Contini Blog RRS Sottoscrivi RSS

Accesso in rame VDSL(Very high speed DSL)? No Grazie

Scarica Firefox! È gratis!