<?
xml version="1.0" encoding="UTF-8"?><
xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs ="http://www.w3.org/2001/XMLSchema" xmlns:fn= "http://www.w3.org/2005/xpath-functions" xmlns:java= "http://drools.org/semantics/java" > <xsl:output method="xml" version="1.0" indent= "yes" omit-xml-declaration="yes"/> <xsl:template match="/" > <package name="com.sample "> <global identifier="doc" type="Document" /> <xsl:apply-templates /> </package> </xsl:template> <xsl:template name="javaimport" match="java:import"> <import name="{.}" /> </xsl:template> <xsl:template name="javaFunction" match="java:functions"> <xsl:if test="contains(.,'public')" > <xsl:call-template name= "separate"> <xsl:with-param name="str" select="substring-after(.,'public ')" /> </xsl:call-template> </xsl:if> </xsl:template> <xsl:template name="separate" > <xsl:param name="str" /> <xsl:choose> <xsl:when test="contains($str,'public')" > <xsl:call-template name= "drlFn"> <xsl:with-param name="fnBody" select="substring-before($str,'public')" /> </xsl:call-template> <xsl:call-template name= "separate"> <xsl:with-param name="str" select="substring-after($str,'public ')" /> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:call-template name= "drlFn"> <xsl:with-param name="fnBody" select="$str" /> </xsl:call-template> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="drlFn" > <xsl:param name="fnBody" /> <function name="{substring-before(substring-after($fnBody,' '),'(')}" return-type="{substring-before($fnBody,' ')}"> <xsl:if test="normalize-space(substring-before(substring-after($fnBody,'(' ),')' ))!=''" > <xsl:call-template name= "params"> <xsl:with-param name="paramStr" select="normalize-space(substring-before(substring-after($fnBody,'(' ),')' ))" /> </xsl:call-template> </xsl:if> <body> <xsl:call-template name= "bdy"> <xsl:with-param name="bdyStr" select="substring-after($fnBody,'{' )" /> </xsl:call-template> </body> </function> </xsl:template> <xsl:template name="bdy" > <xsl:param name="bdyStr" /> <xsl:value-of select="substring-before($bdyStr,'}')" /> <xsl:if test="contains(substring-after($bdyStr,'}'),'}')" >}
<xsl:call-template name= "bdy"> <xsl:with-param name="bdyStr" select="substring-after($bdyStr,'}')" /> </xsl:call-template> </xsl:if> </xsl:template> <xsl:template name="params" > <xsl:param name="paramStr" /> <xsl:choose> <xsl:when test="contains($paramStr,',')" > <xsl:call-template name= "buildIdentifier"> <xsl:with-param name="tpy" select="substring-before($paramStr,' ')" /> <xsl:with-param name="idt" select="substring-after(substring-before($paramStr,','),' ')" /> </xsl:call-template> <xsl:call-template name= "params"> <xsl:with-param name="paramStr" select="normalize-space(substring-after($paramStr,','))"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:call-template name= "buildIdentifier"> <xsl:with-param name="tpy" select="substring-before($paramStr,' ')" /> <xsl:with-param name="idt" select="substring-after($paramStr,' ')" /> </xsl:call-template> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="buildIdentifier" > <xsl:param name="tpy" /> <xsl:param name="idt" /> <parameter identifier="{$idt}" type="{$tpy}" /> </xsl:template> <xsl:template name="rules" match="rule" > <rule name="{@name}" > <xsl:if test="java:condition" > <lhs> <and-constraint-connective> <xsl:for-each select="java:condition" > <eval><xsl:value-of select="normalize-space(.)" disable-output-escaping="no" /></eval> </xsl:for-each> </and-constraint-connective> </lhs> </xsl:if> <xsl:for-each select="java:consequence" > <rhs> <xsl:value-of select="." /> </rhs> </xsl:for-each> </rule> </xsl:template></
xsl:stylesheet>