full XSL Transformation
mathieu Jul 20, 2007 11:57 AMHello,
I am trying to deploy a .esb archive with a simple xsl transformation. I cannot get it to work...
Idealy I would like to have a self-contained archive without using the web console. I am using the 4.2MR3 release with the smooks.esb deployed?
Could you help me to get the configuratio right?
Thanks!
Mathieu
The file I would like to transform is:
<?xml version="1.0" encoding="UTF-8"?> <addresses xmlns="http://xmlns.babelgom.com/2007/smf/addresses" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.babelgom.com/2007/smf/addresses addresses.xsd"> <address fname="AAAAA" lname="-AAA-" mobile="+32478595433">11111</address> <address fname="BBBBB" lname="-BBB-" workphone="+3223548874">22222</address> <address fname="CCCCC" lname="-CCC-" workphone="+3223333333">33333</address> <address fname="DDDDD" lname="-DDD-" mobile="+37837837833">44444</address> </addresses>
the xslt is:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:addresses="http://xmlns.babelgom.com/2007/smf/addresses" xmlns="http://xmlns.babelgom.com/2007/smf/csv" version="2.0" exclude-result-prefixes="addresses"> <xsl:output method="xml" encoding="UTF-8" omit-xml-declaration="no" indent="yes"/> <xsl:template match="/"> <!--/csv--> <xsl:element name="csv"> <!--/csv/headers--> <xsl:element name="headers"> <!--/csv/headers/header[1]--> <xsl:element name="header"> <xsl:value-of select="'Firstname'"/> </xsl:element> <!--/csv/headers/header[2]--> <xsl:element name="header"> <xsl:value-of select="'Lastname'"/> </xsl:element> <!--/csv/headers/header[3]--> <xsl:element name="header"> <xsl:value-of select="'Address'"/> </xsl:element> </xsl:element> <!--/csv/line--> <xsl:for-each select="/addresses:addresses/addresses:address"> <xsl:element name="line"> <!--/csv/line/field[1]--> <xsl:element name="field"> <xsl:value-of select="@fname"/> </xsl:element> <!--/csv/line/field[2]--> <xsl:element name="field"> <xsl:value-of select="@lname"/> </xsl:element> <!--/csv/line/field[3]--> <xsl:element name="field"> <xsl:value-of select="concat(/addresses:addresses/addresses:address[1],'-',/addresses:addresses/addresses:address[2])"/> </xsl:element> </xsl:element> </xsl:for-each> </xsl:element> </xsl:template> </xsl:stylesheet>
My smooks-res.xml file looks like this:
<?xml version='1.0' encoding='UTF-8'?> <smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.0.xsd"> <resource-config selector="addresses" > <resource>/addresses-csv.xsl</resource> <param name="is-xslt-templatelet">false</param> </resource-config> </smooks-resource-list>
My jboss-esb.xml lokks like this:
<?xml version="1.0" encoding="utf-8"?> <jbossesb xmlns="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.0.1.xsd" parameterReloadSecs="5"> <providers> <jms-provider name="internalbus" connection-factory="ConnectionFactory" jndi-context-factory="org.jnp.interfaces.NamingContextFactory" jndi-URL="localhost" jndi-pkg-prefix=""> <jms-bus busid="account-1_hub-1_default_internalbus"> <jms-message-filter dest-type="QUEUE" dest-name="queue/internalbus" /> </jms-bus> </jms-provider> <ftp-provider name="FTPIn" hostname="localhost"> <ftp-bus busid="FTPIn"> <ftp-message-filter username="user1" password="password" passive="true" directory="/a" input-suffix=".dat" work-suffix=".esbWorking" post-delete="true" post-suffix=".COMPLETE" post-directory="/a/processed" error-delete="false" error-suffix=".HAS_ERROR" error-directory="/a/error" /> </ftp-bus> </ftp-provider> </providers> <services> <service category="category" name="service" description="description"> <listeners> <jms-listener name="internalbus" busidref="internalbus" maxThreads="1" /> <ftp-listener name="FTPIn" busidref="FTPIn" maxThreads="1" is-gateway="true" poll-frequency-seconds="10" ></ftp-listener> </listeners> <actions> <action name="print-before" class="org.jboss.soa.esb.actions.SystemPrintln"> <property name="message" value="Message before transformation" /> </action> <action name="transform" class="org.jboss.soa.esb.actions.converters.SmooksTransformer"> <property name="resource-config" value="/smooks-res.xml" /> </action> <action name="print-after" class="org.jboss.soa.esb.actions.SystemPrintln"> <property name="message" value="Message after transformation" /> </action> </actions> </service> </services> </jbossesb>