Archive for the 'XML/XSLT' Category

Generazione Date formato RFC822 con XSLT (Xalan-J)

Friday, April 17th, 2009

Ecco un template xslt per generare le date in formato RFC822, richiesto epr i campi data usati dai feed RSS

<!--======================================================================-->
<!-- Generate the date in RFC822 format as required by rss specifications -->
<!-- format rfc822 is : Sat, 07 Sep 2002 09:42:31 GMT -->
<!--======================================================================-->
<xsl:template name="RFC822_Date">
	<!-- format rfc822 is : Sat, 07 Sep 2002 09:42:31 GMT -->
	<xsl:variable name="jdate" select="string(java:java.util.Date.new())"/>
	<!-- output java: Fri Apr 17 09:56:38 CEST 2009 -->
	<xsl:variable name="year" select="substring($jdate,26,4)"/>
	<xsl:variable name="month" select="substring($jdate,5,3)"/>
	<xsl:variable name="day" select="substring($jdate,9,2)"/>
	<xsl:variable name="dayOfWeek" select="substring($jdate,1,3)"/>
	<xsl:variable name="TZ" select="substring($jdate,21,4)"/>
	<xsl:variable name="time" select="substring($jdate,12,8)"/>
	<xsl:value-of select="concat($dayOfWeek,', ',$day, ' ', $month,' ', $year,' ',$time,' ',$TZ)"/>
</xsl:template>

Passing a XSL parameter from Java using TRAX

Friday, February 20th, 2009

Ecco uno snippet di codice Java per passare all’interno di una classe java dei parametri da passare al template xslt per la trasformazione, usando TRAX (javax.xml.transform):

import java.io.File;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
 
public class GlobalParameters
{
  public static void parseAndProcess(String sourceID, 
                                     String xslID,
                                     String outputID)
  {
    try
    {
      TransformerFactory tfactory = TransformerFactory.newInstance();
 
      Transformer transformer 
        = tfactory.newTransformer(new StreamSource(xslID));
 
      // Use the setParameter method to set global parameters
      transformer.setParameter("startX", new Integer(50));
      transformer.setParameter("baseColor", "magenta");
 
      transformer.transform(new StreamSource(new File(sourceID)),
                            new StreamResult(new File(outputID)));
    }
    catch (TransformerConfigurationException tce)
    {
      System.err.println("Exception: " + tce);
    }
    catch (TransformerException te)
    {
      System.err.println("Exception: " + te);
    }
  }
 
 
  public static void main(String argv[])
    throws java.io.IOException, 
           org.xml.sax.SAXException
  {
    GlobalParameters gp = new GlobalParameters();
    gp.parseAndProcess("xyz.xml", "params.xsl", "output.text");
  }
}

Verificare se un elemento non è un numero

Monday, April 14th, 2008
<xsl:if test= "string(number(/xpath/to/the/element))='NaN'">is not a number</xsl:if>

Il principio di funzionamento è: number() cerca di convertire l’elemento in un numero, e se fallisce restituisce NaN.Pero per poterlo veriifcare dobbiamo prima convertirlo in stringa con string().

Questo esempio l’ho trovato sul blog di Luigi a cui il merito va a lui.

Decennale del linguaggio XML

Tuesday, February 19th, 2008

“There is essentially no computer in the world, desk-top, hand-held, or back-room, that doesn’t process XML sometimes”
Tim Bray

Anche il consorzio W3C festeggia il decennale del linguaggio XML con una pagina speciale accessibile al seguente link: http://www.w3.org/2008/xml10/

Comunicato stampa

XML compie 10 anni

Monday, February 18th, 2008

Oggi su slashdot c’è una nota che fa riferimento a un post di un blog che parla del momento in cui fu formalizzato lo standard XML nel 1998.

E’ interessante e ci sono divertenti annedoti sulle persone che ci avevano lavorato.

Il post è alla seguente url: http://www.tbray.org/ongoing/When/200x/2008/02/10/XML-People.

Buona lettura

Verifica presenza <p>

Wednesday, December 19th, 2007

Per verificare la presenza di <p> come primi elementi in un nodeset contenutore da un XML basta applicare questa

<xsl:if test="description/child::*[1][self::p]"> .... </xsl:if>

dove description e’ il campo xml che contiene il pezzo html.