<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<!--
This xslt transform dynamically transforms ktr and kjb file to be viewed in the browser.
Dependencies:
The following files must be located in the home directory that the .ktr/.kjb is launched
1. pentaho.css
2. ui/images
3. ui/script/collapse_expand_single_item.js
Issues:
.ktr and .kjb cannot be opened by internet explorer.
internet explorer renders correctly if .ktr is changed to .xml
-->
<xsl:output
method="html"
version="4.0"
encoding="UTF-8"
omit-xml-declaration="yes"
media-type="text/html"
indent="yes"
doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"
doctype-system="http://www.w3.org/TR/html4/loose.dtd"
/>
<xsl:preserve-space elements="*"/>
<xsl:variable name="newline">
<!-- ie does not recognize white space so we explicitly define linefeed (newline) char here -->
<xsl:text>
</xsl:text>
</xsl:variable>
<!-- ==================================================================
START of matching
======================================================================= -->
<xsl:template match="/">
<!-- Use this snippet to hide and show a section by clicking
<img src="ui/images/u.gif" name="imgfirst" width="9" height="9" border="0" >
<a href="#first" onClick="shoh('first');" >Customer Support</a>
<div style="display: none;" id="first" >
Here is the content you want to collapse or expand. You can place tables here, images, anything.
</div>
-->
<html>
<!-- Use CSS from pentaho website -->
<head>
<link rel="stylesheet" type="text/css" href="ui/pentaho.css" media="all"/>
<script language="JavaScript" src="ui/script/collapse_expand_single_item.js"></script>
</head>
<body style="background-color:white">
<a href="http://wiki.pentaho.com/display/EAI/Latest+Pentaho+Data+Integration+%28aka+Kettle%29+Documentation">
<h1>Pentaho Data Integration Documentation</h1>
</a>
<!-- Call this template to process all nodes recursively -->
<xsl:call-template name="node"/>
</body>
</html>
</xsl:template>
<xsl:template name="node" >
<!-- Process leafs then process child nodes -->
<xsl:call-template name="leafs"/>
<!-- Process child nodes -->
<xsl:for-each select="*[count(*) > 0]">
<!-- HEADER -->
<!-- Start new div and show name of node in caps -->
<div class="wiki-content" style="padding-left:+20px; text-align:left;">
<!-- Set heading type according to Depth of tree -->
<xsl:choose>
<!-- Header for high level groups levels 1-2 or job entry -->
<xsl:when test="(count(ancestor::*) < 3 and name() != 'connection') or name()='entry'">
<h2 style="text-align:left">
<!-- Header for Trans or Job, info section, steps or entry -->
<xsl:choose>
<!-- level 1 Header for Transformation Block -->
<xsl:when test="name()='transformation'">
<xsl:call-template name="trans"/>
</xsl:when>
<!-- level 1 Header for Job Block -->
<xsl:when test="name()='job'">
<xsl:call-template name="job"/>
</xsl:when>
<!-- level 2 Header for Info Block, Trans or Job -->
<xsl:when test="name()='info'">
<xsl:call-template name="info"/>
</xsl:when>
<!-- Header for step or entry -->
<xsl:when test="name()='step' or name()='entry'">
<!-- STEP/ENTRY In CAPS -->
<span style="text-transform:uppercase">
<xsl:value-of select="name()"/>
</span>
<xsl:text> </xsl:text>
<!-- add image link -->
<xsl:call-template name="img">
<xsl:with-param name="name">
<xsl:value-of select="./type" />
</xsl:with-param>
</xsl:call-template>
<!-- Name of the step or entry in [] -->
<xsl:text> [</xsl:text>
<xsl:value-of select="./name"/>
<xsl:text>] </xsl:text>
</xsl:when>
<xsl:otherwise>
<span style="text-transform:uppercase">
<xsl:value-of select="name()"/>
</span>
</xsl:otherwise>
</xsl:choose>
</h2>
</xsl:when>
<!-- Lower level blocks -->
<xsl:otherwise>
<h4 style="text-transform:uppercase; text-align:left; background:white">
<xsl:value-of select="name()"/>
<xsl:if test="name">
<xsl:text> [</xsl:text><xsl:value-of select="name"/><xsl:text>]</xsl:text>
</xsl:if>
</h4>
</xsl:otherwise>
</xsl:choose>
<!-- bread crumbs
<code><xsl:for-each select="ancestor::*"><xsl:value-of select="name()"/>::</xsl:for-each></code>
-->
<!-- END OF HEADERS -->
<!-- "Show Hide" section -->
<a href="#{generate-id(.)}" onClick="shoh('{generate-id(.)}');" >
<img src="ui/images/u.gif" name="img{generate-id(.)}" width="9" height="9" border="0" />
</a>
<div style="display:none" id="{generate-id(.)}" >
<!-- Start of DIV, match to closing DIV -->
<!-- DETAILS -->
<xsl:choose>
<!-- Process special nodes where we pivot the attribute value pairs into a table -->
<!-- Connection attributes -->
<xsl:when test="name() = 'attributes'">
<xsl:call-template name="attr"/>
</xsl:when>
<!-- hops and order in trans and job -->
<xsl:when test="name() = 'order' or name() = 'hops'">
<xsl:call-template name="order"/>
</xsl:when>
<!-- all GUI XLOC and YLOC -->
<xsl:when test="name() = 'GUI'">
<xsl:call-template name="gui"/>
</xsl:when>
<!-- All instances of fields -->
<xsl:when test="name() = 'fields'">
<xsl:call-template name="leafs"/>
<h4 style="background:white">SELECT</h4>
<xsl:call-template name="fields"/>
<h4 style="background:white">METADATA</h4>
<xsl:call-template name="meta_fields"/>
</xsl:when>
<!-- Trans Lookup step -->
<xsl:when test="name() = 'lookup'">
<xsl:call-template name="leafs"/>
<h4 style="background:white">KEYS</h4>
<xsl:call-template name="keys"/>
<h4 style="background:white">VALUES</h4>
<xsl:call-template name="values"/>
</xsl:when>
<!-- Database connections -->
<xsl:when test="name() = 'connection'">
<xsl:call-template name="leafs"/>
</xsl:when>
<!-- Default: Process a child node (generate details) -->
<xsl:otherwise>
<xsl:call-template name="node"/>
</xsl:otherwise>
</xsl:choose>
</div> <!-- Details -->
</div> <!-- NODE -->
</xsl:for-each>
</xsl:template>
<!-- =================================================================
Display routines
==================================================================== -->
<!-- Process all leaf nodes of current node -->
<xsl:template name="leafs">
<!-- The leafs are laid out in a table of Element: Value pair -->
<table class="confluenceTable"><tbody>
<xsl:for-each select="*[count(text())=1]"> <!-- Show only non-empty elements -->
<tr>
<td valign="top" style="text-transform:uppercase" class="confluenceTd">
<xsl:value-of select="name()"/>
</td>
<td class="confluenceTd">
<xsl:choose>
<xsl:when test="name()='type'">
<!-- Lookup help page for the step/entry -->
<xsl:call-template name="wiki-pentaho">
<xsl:with-param name="name">
<xsl:value-of select="." />
</xsl:with-param>
</xsl:call-template>
</xsl:when>
<!-- Display code or multi line notes -->
<xsl:when test="name()='sql' or name()='jsScript_script' or name()='note'">
<code>
<xsl:call-template name="string-newline">
<xsl:with-param name="original">
<xsl:value-of select="."/>
</xsl:with-param>
</xsl:call-template>
</code>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="."/>
</xsl:otherwise>
</xsl:choose>
</td>
</tr>
</xsl:for-each>
</tbody></table>
</xsl:template>
<!-- Pivot table style 1:
<table-name>
<row>
<col-1>
<col-2>
<row>
<col1>
<col2>
-->
<xsl:template name="pivot1">
<table class="confluenceTable"><tbody>
<!-- Table Header -->
<xsl:if test="*[1]">
<xsl:for-each select="*[1]/*">
<th style="text-transform:uppercase" class="confluenceTh">
<xsl:value-of select="name()"/>
</th>
</xsl:for-each>
</xsl:if>
<!-- Table Rows -->
<xsl:for-each select="*">
<tr>
<xsl:for-each select="./*">
<td class="confluenceTd">
<xsl:value-of select="."/>
</td>
</xsl:for-each>
</tr>
</xsl:for-each>
</tbody></table>
</xsl:template>
<xsl:template name="table-row">
<tr>
<xsl:for-each select="*">
<td class="confluenceTd">
<xsl:value-of select="."/>
</td>
</xsl:for-each>
</tr>
</xsl:template>
<!-- Pivot table style 2: single row table
<table-name>
<col-1>
<col-2>
<col-3>
-->
<xsl:template name="pivot2">
<table class="confluenceTable"><tbody>
<!-- Header - name of the nodes -->
<xsl:for-each select="*">
<th style="text-transform:uppercase" class="confluenceTh">
<xsl:value-of select="name()"/>
</th>
</xsl:for-each>
<!-- Single row -->
<tr>
<xsl:for-each select="*">
<td class="confluenceTd">
<xsl:value-of select="."/>
</td>
</xsl:for-each>
</tr>
</tbody></table>
</xsl:template>
<!-- Pivot table style 3: Same as Style 1 but mixed rows
<group-of-tables>
<table-name-1>
<col-1>
<col-2>
<col-3>
<table-name-1>
<col-1>
<col-2>
<col-3>
<table-name-2>
<col-1>
<col-2>
<col-3>
<table-name-2>
<col-1>
<col-2>
<col-3>
Parameter1 table-name
-->
<xsl:template name="pivot3">
<xsl:param name="group"/>
<table class="confluenceTable"><tbody>
<!-- Table Header -->
<xsl:if test="*[name()=$group][1]">
<xsl:for-each select="*[name()=$group][1]/*">
<th style="text-transform:uppercase" class="confluenceTh">
<xsl:value-of select="name()"/>
</th>
</xsl:for-each>
</xsl:if>
<!-- Table Rows -->
<xsl:for-each select="*[name()=$group]">
<tr>
<xsl:for-each select="*">
<td class="confluenceTd">
<xsl:value-of select="."/>
</td>
</xsl:for-each>
</tr>
</xsl:for-each>
</tbody></table>
</xsl:template>
<!-- Transformation header -->
<xsl:template name = "trans">
<h1 style="text-align:left">
<img src="ui/images/TRN.png"/>
<a href="http://wiki.pentaho.com/display/EAI/Pentaho+Data+Integration+Steps">
<xsl:value-of select="./info/name/text()" />
</a>
<xsl:if test="./info/capture_step_performance/text()='Y'">
<img src="ui/images/perfmon2.jpeg"/>
</xsl:if>
</h1>
</xsl:template>
<!-- Job header -->
<xsl:template name = "job">
<h1 style="text-align:left">
<img src="ui/images/JOB.png"/>
<a href="http://wiki.pentaho.com/display/EAI/Pentaho+Data+Integration+Job+Entries">
<xsl:value-of select="./name/text()" />
</a>
</h1>
</xsl:template>
<!-- Info header -->
<xsl:template name = "info">
<h1 style="text-align:left">
INFORMATION
</h1>
</xsl:template>
<!-- Code attribute values in Connection -->
<xsl:template name="attr">
<xsl:call-template name="pivot1"/>
</xsl:template>
<!-- From To laid out in a table on the orders -->
<xsl:template name="order">
<xsl:call-template name="pivot1"/>
</xsl:template>
<!-- GUI coords, laid out in a single row table -->
<xsl:template name="gui">
<xsl:call-template name="pivot2"/>
</xsl:template>
<!-- Fields in a select step -->
<xsl:template name="fields">
<xsl:call-template name="pivot3">
<xsl:with-param name="group">field</xsl:with-param>
</xsl:call-template>
</xsl:template>
<!-- Meta of fields in a select step -->
<xsl:template name="meta_fields">
<xsl:call-template name="pivot3">
<xsl:with-param name="group">meta</xsl:with-param>
</xsl:call-template>
</xsl:template>
<!-- keys in lookup step -->
<xsl:template name="keys">
<xsl:call-template name="pivot3">
<xsl:with-param name="group">key</xsl:with-param>
</xsl:call-template>
</xsl:template>
<!-- Values in lookup step -->
<xsl:template name="values">
<xsl:call-template name="pivot3">
<xsl:with-param name="group">value</xsl:with-param>
</xsl:call-template>
</xsl:template>
<!-- Replace String -->
<xsl:template name="replace-substring">
<xsl:param name="original"/>
<xsl:param name="substring"/>
<xsl:param name="replacement" select="''"/>
<xsl:variable name="first">
<xsl:choose>
<xsl:when test="contains($original, $substring)">
<xsl:value-of select="substring-before($original, $substring)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$original"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="middle">
<xsl:choose>
<xsl:when test="contains($original, $substring)">
<xsl:value-of select="$replacement"/>
</xsl:when>
<xsl:otherwise>
<xsl:text></xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="last">
<xsl:choose>
<xsl:when test="contains($original, $substring)">
<xsl:choose>
<xsl:when test="contains(substring-after($original, $substring),$substring)">
<xsl:call-template name="replace-substring">
<xsl:with-param name="original">
<xsl:value-of select="substring-after($original, $substring)"/>
</xsl:with-param>
<xsl:with-param name="substring">
<xsl:value-of select="$substring"/>
</xsl:with-param>
<xsl:with-param name="replacement">
<xsl:value-of select="$replacement"/>
</xsl:with-param>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="substring-after($original, $substring)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:text></xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:value-of select="concat($first, $middle, $last)"/>
</xsl:template>
<!-- Print line separated by newline -->
<xsl:template name="string-newline">
<xsl:param name="original"/>
<xsl:variable name="first">
<xsl:choose>
<xsl:when test="contains($original, $newline)">
<xsl:value-of select="substring-before($original, $newline)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$original"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="last">
<xsl:choose>
<xsl:when test="contains($original, $newline)">
<xsl:value-of select="substring-after($original, $newline)"/>
</xsl:when>
<xsl:otherwise>
<xsl:text></xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:value-of select="$first"/><br/>
<xsl:if test="string-length($last) > 0">
<xsl:call-template name="string-newline">
<xsl:with-param name="original">
<xsl:value-of select="$last"/>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
</xsl:template>
<!-- Lookup to get anchor for step/entry images -->
<xsl:template name="img">
<xsl:param name="name"/>
<xsl:variable name="name-caps">
<xsl:value-of
select="translate(
$name
, 'abcdefghijklmnopqrstuvwxyz'
, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
)"
/>
</xsl:variable>
<xsl:variable name="fname">
<xsl:choose>
<xsl:when test="$name-caps='DUMMY'"><xsl:text>ui/images/DUM.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='APPEND'"><xsl:text>ui/images/APP.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='TABLEINPUT'"><xsl:text>ui/images/TIP.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='SOCKETREADER'"><xsl:text>ui/images/SKR.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='SOCKETWRITER'"><xsl:text>ui/images/SKW.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='SELECTVALUES'"><xsl:text>ui/images/SEL.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='TEXTFILEINPUT'"><xsl:text>ui/images/TFI.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='CALCULATOR'"><xsl:text>ui/images/CLC.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='CONSTANT'"><xsl:text>ui/images/CST.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='ABORT'"><xsl:text>ui/images/ABR.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='SEQUENCE'"><xsl:text>ui/images/SEQ.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='TABLEOUTPUT'"><xsl:text>ui/images/TOP.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='INFOBRIGHTOUTPUT'"><xsl:text>ui/images/IBL.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='SORTROWS'"><xsl:text>ui/images/SRT.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='ORABULKLOADER'"><xsl:text>ui/images/OBL.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='INJECTOR'"><xsl:text>ui/images/INJ.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='FILTERROWS'"><xsl:text>ui/images/FLT.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='TEXTFILEOUTPUT'"><xsl:text>ui/images/TFO.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='SYSTEMINFO'"><xsl:text>ui/images/SYS.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='STREAMLOOKUP'"><xsl:text>ui/images/SLU.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='UNIQUE'"><xsl:text>ui/images/UNQ.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='DBLOOKUP'"><xsl:text>ui/images/DLU.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='DBJOIN'"><xsl:text>ui/images/DBJ.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='DIMENSIONLOOKUP'"><xsl:text>ui/images/DIM.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='EXCELINPUT'"><xsl:text>ui/images/XLI.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='COMBINATIONLOOKUP'"><xsl:text>ui/images/CMB.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='SCRIPTVALUEMOD'"><xsl:text>ui/images/SCR_mod.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='JOINROWS'"><xsl:text>ui/images/JRW.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='UPDATE'"><xsl:text>ui/images/UPD.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='INSERTUPDATE'"><xsl:text>ui/images/INU.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='DELETE'"><xsl:text>ui/images/Delete.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='MAPPINGINPUT'"><xsl:text>ui/images/MPI.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='MAPPING'"><xsl:text>ui/images/MAP.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='MAPPINGOUTPUT'"><xsl:text>ui/images/MPO.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='SETVARIABLE'"><xsl:text>ui/images/SVA.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='GETVARIABLE'"><xsl:text>ui/images/GVA.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='NULLIF'"><xsl:text>ui/images/NUI.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='EXECSQL'"><xsl:text>ui/images/SQL.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='ROWSFROMRESULT'"><xsl:text>ui/images/FCH.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='ROWSTORESULT'"><xsl:text>ui/images/TCH.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='BLOCKINGSTEP'"><xsl:text>ui/images/BLK.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='HTTP'"><xsl:text>ui/images/WEB.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='MERGEROWS'"><xsl:text>ui/images/MRG.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='GETFILENAMES'"><xsl:text>ui/images/GFN.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='FILESFROMRESULT'"><xsl:text>ui/images/FFR.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='FILESTORESULT'"><xsl:text>ui/images/FTR.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='GROUPBY'"><xsl:text>ui/images/GRP.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='ANALYTICQUERY'"><xsl:text>ui/images/AQI.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='MERGEJOIN'"><xsl:text>ui/images/MJOIN.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='SORTEDMERGE'"><xsl:text>ui/images/SMG.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='XMLINPUT'"><xsl:text>ui/images/XIN.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='XMLINPUTSAX'"><xsl:text>ui/images/XIS.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='XMLOUTPUT'"><xsl:text>ui/images/XOU.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='EXCELOUTPUT'"><xsl:text>ui/images/XLO.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='DBPROC'"><xsl:text>ui/images/PRC.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='DENORMALISER'"><xsl:text>ui/images/UNP.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='NORMALISER'"><xsl:text>ui/images/NRM.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='FLATTENER'"><xsl:text>ui/images/FLA.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='XBASEINPUT'"><xsl:text>ui/images/XBI.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='ACCESSOUTPUT'"><xsl:text>ui/images/ACO.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='REGEXEVAL'"><xsl:text>ui/images/RGE.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='ACCESSINPUT'"><xsl:text>ui/images/ACI.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='ADDXML'"><xsl:text>ui/images/XIN.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='AGGREGATEROWS'"><xsl:text>ui/images/AGG.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='MONDRIANINPUT'"><xsl:text>ui/images/MON.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='GETFILESROWSCOUNT'"><xsl:text>ui/images/FRC.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='LDAPINPUT'"><xsl:text>ui/images/LIP.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='GETXMLDATA'"><xsl:text>ui/images/GXD.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='XSDVALIDATOR'"><xsl:text>ui/images/XSD.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='XSLT'"><xsl:text>ui/images/XSLT.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='VALIDATOR'"><xsl:text>ui/images/VLD.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='SQLFILEOUTPUT'"><xsl:text>ui/images/SFO.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='SPLITFIELDTOROWS'"><xsl:text>ui/images/SFtR.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='PROPERTYINPUT'"><xsl:text>ui/images/PFI.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='GPBULKLOADER'"><xsl:text>ui/images/GBL.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='PGBULKLOADER'"><xsl:text>ui/images/PGBL.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='LDIFINPUT'"><xsl:text>ui/images/LDI.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='PROPERTYOUTPUT'"><xsl:text>ui/images/PFO.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='VALUEMAPPER'"><xsl:text>ui/images/SWC.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='SWITCHCASE'"><xsl:text>ui/images/SWC.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='XMLJOIN'"><xsl:text>ui/images/XJN.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='STEPMETASTRUCTURE'"><xsl:text>ui/images/STMD.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='TABLEEXISTS'"><xsl:text>ui/images/TEX.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='COLUMNEXISTS'"><xsl:text>ui/images/CEX.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='FILEEXISTS'"><xsl:text>ui/images/FEX.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='CLONEROW'"><xsl:text>ui/images/CLR.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='DELAY'"><xsl:text>ui/images/DLT.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='CHECKSUM'"><xsl:text>ui/images/CSM.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='RANDOMVALUE'"><xsl:text>ui/images/RVA.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='GETSUBFOLDERS'"><xsl:text>ui/images/LSF.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='MONETDBBULKLOADER'"><xsl:text>ui/images/OBL.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='MAILVALIDATOR'"><xsl:text>ui/images/MAV.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='MAIL'"><xsl:text>ui/images/MAIL.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='CREDITCARDVALIDATOR'"><xsl:text>ui/images/CCV.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='PROCESSFILES'"><xsl:text>ui/images/PPF.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='DETECTLASTROW'"><xsl:text>ui/images/DLR.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='DETECTEMPTYSTREAM'"><xsl:text>ui/images/EMS.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='WRITETOLOG'"><xsl:text>ui/images/WTL.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='SAMPLEROWS'"><xsl:text>ui/images/SR.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='GETPREVIOUSROWFIELD'"><xsl:text>ui/images/PRV.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='EXECSQLROW'"><xsl:text>ui/images/SQLR.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='DYNAMICSQLROW'"><xsl:text>ui/images/DSR.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='NUMBERRANGE'"><xsl:text>ui/images/NRI.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='SYNCHRONIZEAFTERMERGE'"><xsl:text>ui/images/SAM.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='LUCIDDBBULKLOADER'"><xsl:text>ui/images/OBL.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='MYSQLBULKLOADER'"><xsl:text>ui/images/OBL.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='REPLACESTRING'"><xsl:text>ui/images/RST.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='STRINGCUT'"><xsl:text>ui/images/SRC.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='IFNULL'"><xsl:text>ui/images/IFN.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='RSSOUTPUT'"><xsl:text>ui/images/RRO.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='RSSINPUT'"><xsl:text>ui/images/RIN.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='SALESFORCEINPUT'"><xsl:text>ui/images/SFI.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='FORMULA'"><xsl:text>ui/images/FRM.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='JANINO'"><xsl:text>ui/images/janino.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='SCRIPTVALUEMOD'"><xsl:text>ui/images/janino.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='RESERVOIRSAMPLING'"><xsl:text>ui/images/RS.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='UNIVARIATESTATS'"><xsl:text>ui/images/US.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='UNIQUEROWSBYHASHSET'"><xsl:text>ui/images/URH.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='HTTPPOST'"><xsl:text>ui/images/HTP.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='SETVALUECONSTANT'"><xsl:text>ui/images/SVC.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='SETVALUEFIELD'"><xsl:text>ui/images/SVF.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='EXECPROCESS'"><xsl:text>ui/images/RPL.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='WEBSERVICELOOKUP'"><xsl:text>ui/images/WSL.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='CSVINPUT'"><xsl:text>ui/images/TFI.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='PARALLELGZIPCSVINPUT'"><xsl:text>ui/images/TFI.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='JOB'"><xsl:text>ui/images/JOB.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='TRANS'"><xsl:text>ui/images/TRN.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='SHELL'"><xsl:text>ui/images/SHL.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='MAIL'"><xsl:text>ui/images/MAIL.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='SQL'"><xsl:text>ui/images/SQL.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='FTP'"><xsl:text>ui/images/FTP.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='TABLE_EXISTS'"><xsl:text>ui/images/TEX.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='FILE_EXISTS'"><xsl:text>ui/images/FEX.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='EVAL'"><xsl:text>ui/images/RES.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='SPECIAL'"><xsl:text>ui/images/STR.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='SFTP'"><xsl:text>ui/images/SFT.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='HTTP'"><xsl:text>ui/images/WEB.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='CREATE_FILE'"><xsl:text>ui/images/CFJ.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='DELETE_FILE'"><xsl:text>ui/images/DFJ.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='WAIT_FOR_FILE'"><xsl:text>ui/images/WFF.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='SFTPPUT'"><xsl:text>ui/images/SFP.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='FILE_COMPARE'"><xsl:text>ui/images/BFC.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='MYSQL_BULK_LOAD'"><xsl:text>ui/images/MBL.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='MSGBOX_INFO'"><xsl:text>ui/images/INF.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='DELAY'"><xsl:text>ui/images/DLT.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='ZIP_FILE'"><xsl:text>ui/images/ZIP.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='XSLT'"><xsl:text>ui/images/XSLT.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='MYSQL_BULK_FILE'"><xsl:text>ui/images/MBF.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='ABORT'"><xsl:text>ui/images/ABR.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='GET_POP'"><xsl:text>ui/images/GETPOP.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='PING'"><xsl:text>ui/images/PNG.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='DELETE_FILES'"><xsl:text>ui/images/DFS.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='SUCCESS'"><xsl:text>ui/images/SUC.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='XSD_VALIDATOR'"><xsl:text>ui/images/XSD.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='WRITE_TO_LOG'"><xsl:text>ui/images/WTL.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='COPY_FILES'"><xsl:text>ui/images/CPY.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='DTD_VALIDATOR'"><xsl:text>ui/images/DTD.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='FTP_PUT'"><xsl:text>ui/images/PFP.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='UNZIP'"><xsl:text>ui/images/UZP.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='CREATE_FOLDER'"><xsl:text>ui/images/CRF.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='FOLDER_IS_EMPTY'"><xsl:text>ui/images/EFO.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='FILES_EXIST'"><xsl:text>ui/images/LFE.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='FOLDERS_COMPARE'"><xsl:text>ui/images/FCP.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='ADD_RESULT_FILENAMES'"><xsl:text>ui/images/AFN.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='DELETE_RESULT_FILENAMES'"><xsl:text>ui/images/DFN.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='MSSQL_BULK_LOAD'"><xsl:text>ui/images/MBL.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='MOVE_FILES'"><xsl:text>ui/images/MVF.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='COPY_MOVE_RESULT_FILENAMES'"><xsl:text>ui/images/CMR.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='JOBCATEGORY.CATEGORY.XML_WELL_FORMED'"><xsl:text>ui/images/XFC.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='SSH2_GET'"><xsl:text>ui/images/SHG.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='SSH2_PUT'"><xsl:text>ui/images/SHP.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='FTP_DELETE'"><xsl:text>ui/images/FTPD.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='DELETE_FOLDERS'"><xsl:text>ui/images/DSF.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='COLUMNS_EXIST'"><xsl:text>ui/images/CEX.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='EXPORT_REPOSITORY'"><xsl:text>ui/images/EREP.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='CONNECTED_TO_REPOSITORY'"><xsl:text>ui/images/CREP.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='TRUNCATE_TABLES'"><xsl:text>ui/images/TRT.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='SET_VARIABLES'"><xsl:text>ui/images/SVA.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='MS_ACCESS_BULK_LOAD'"><xsl:text>ui/images/MBL.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='WAIT_FOR_SQL'"><xsl:text>ui/images/WSQL.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='EVAL_TABLE_CONTENT'"><xsl:text>ui/images/ETC.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='SIMPLE_EVAL'"><xsl:text>ui/images/SEV.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='SNMP_TRAP'"><xsl:text>ui/images/SNMP.png</xsl:text></xsl:when>
<xsl:when test="$name-caps='JOBCATEGORY.CATEGORY.MAIL_VALIDATOR'"><xsl:text>ui/images/MAV.png</xsl:text></xsl:when>
<xsl:otherwise><xsl:text>ui/images/spoon32.png</xsl:text></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<img>
<xsl:attribute name="src">
<xsl:value-of select="$fname"/>
</xsl:attribute>
<xsl:attribute name="style">
<xsl:text>border:1px solid black</xsl:text>
</xsl:attribute>
</img>
</xsl:template>
<!-- Lookup to get anchor for step/entry help page on wiki.pentaho -->
<xsl:template name="wiki-pentaho">
<xsl:param name="name"/>
<xsl:variable name="name-caps">
<xsl:value-of
select="translate(
$name
, 'abcdefghijklmnopqrstuvwxyz'
, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
)"
/>
</xsl:variable>
<xsl:variable name="web-addr">
<xsl:choose>
<xsl:when test="$name-caps='SPECIAL'"><xsl:text>http://wiki.pentaho.com/display/EAI/Start </xsl:text></xsl:when>
<xsl:when test="$name-caps='DUMMY'"><xsl:text>http://wiki.pentaho.com/display/EAI/Dummy+Job+Entry </xsl:text></xsl:when>
<xsl:when test="$name-caps='ABORT'"><xsl:text>http://wiki.pentaho.com/display/EAI/Abort+Job </xsl:text></xsl:when>
<xsl:when test="$name-caps='MSGBOX_INFO'"><xsl:text>http://wiki.pentaho.com/display/EAI/Display+Msgbox+info </xsl:text></xsl:when>
<xsl:when test="$name-caps='JOB'"><xsl:text>http://wiki.pentaho.com/display/EAI/Job+%28Job+Entry%29 </xsl:text></xsl:when>
<xsl:when test="$name-caps='PING'"><xsl:text>http://wiki.pentaho.com/display/EAI/Ping+a+host </xsl:text></xsl:when>
<xsl:when test="$name-caps='SUCCESS'"><xsl:text>http://wiki.pentaho.com/display/EAI/Success </xsl:text></xsl:when>
<xsl:when test="$name-caps='TRAN'"><xsl:text>http://wiki.pentaho.com/display/EAI/Transformation+%28job+entry%29 </xsl:text></xsl:when>
<xsl:when test="$name-caps='WRITE_TO_LOG'"><xsl:text>http://wiki.pentaho.com/display/EAI/Write+to+log </xsl:text></xsl:when>
<xsl:when test="$name-caps='GET_POP'"><xsl:text>http://wiki.pentaho.com/display/EAI/Get+Mails+from+POP </xsl:text></xsl:when>
<xsl:when test="$name-caps='MAIL'"><xsl:text>http://wiki.pentaho.com/display/EAI/Mail </xsl:text></xsl:when>
<xsl:when test="$name-caps='ADD_RESULT_FILENAMES'"><xsl:text>http://wiki.pentaho.com/display/EAI/Add+filenames+to+result </xsl:text></xsl:when>
<xsl:when test="$name-caps='VALUEMAPPER'"><xsl:text>http://wiki.pentaho.com/display/EAI/Value+Mapper </xsl:text></xsl:when>
<xsl:when test="$name-caps='COPY_FILES'"><xsl:text>http://wiki.pentaho.com/display/EAI/Copy+Files </xsl:text></xsl:when>
<xsl:when test="$name-caps='CREATE_FOLDER'"><xsl:text>http://wiki.pentaho.com/display/EAI/Create+a+folder </xsl:text></xsl:when>
<xsl:when test="$name-caps='CREATE_FILE'"><xsl:text>http://wiki.pentaho.com/display/EAI/Create+a+file </xsl:text></xsl:when>
<xsl:when test="$name-caps='DELETE_FILE'"><xsl:text>http://wiki.pentaho.com/display/EAI/Delete+a+file </xsl:text></xsl:when>
<xsl:when test="$name-caps='DELETE_RESULT_FILENAMES'"><xsl:text>http://wiki.pentaho.com/display/EAI/Delete+filenames+from+result </xsl:text></xsl:when>
<xsl:when test="$name-caps='DELETE_FILES'"><xsl:text>http://wiki.pentaho.com/display/EAI/Delete+Files </xsl:text></xsl:when>
<xsl:when test="$name-caps='DELETE_FOLDERS'"><xsl:text>http://wiki.pentaho.com/display/EAI/Delete+folders </xsl:text></xsl:when>
<xsl:when test="$name-caps='FILE_COMPARE'"><xsl:text>http://wiki.pentaho.com/display/EAI/File+compare </xsl:text></xsl:when>
<xsl:when test="$name-caps='HTTP'"><xsl:text>http://wiki.pentaho.com/display/EAI/HTTP </xsl:text></xsl:when>
<xsl:when test="$name-caps='MOVE_FILES'"><xsl:text>http://wiki.pentaho.com/display/EAI/Move+files </xsl:text></xsl:when>
<xsl:when test="$name-caps='UNZIP'"><xsl:text>http://wiki.pentaho.com/display/EAI/Unzip+file </xsl:text></xsl:when>
<xsl:when test="$name-caps='WAIT_FOR_FILE'"><xsl:text>http://wiki.pentaho.com/display/EAI/Wait+for+a+file </xsl:text></xsl:when>
<xsl:when test="$name-caps='ZIP_FILE'"><xsl:text>http://wiki.pentaho.com/display/EAI/Zip+files </xsl:text></xsl:when>
<xsl:when test="$name-caps='TRUNCATE_TABLES'"><xsl:text>http://wiki.pentaho.com/display/EAI/Truncate+tables </xsl:text></xsl:when>
<xsl:when test="$name-caps='FOLDER_IS_EMPTY'"><xsl:text>http://wiki.pentaho.com/display/EAI/Check+if+a+folder+is+empty </xsl:text></xsl:when>
<xsl:when test="$name-caps='FILES_EXIST'"><xsl:text>http://wiki.pentaho.com/display/EAI/File+Exists+%28Job+Entry%29 </xsl:text></xsl:when>
<xsl:when test="$name-caps='COLUMNS_EXIST'"><xsl:text>http://wiki.pentaho.com/display/EAI/Columns+exist+in+a+table </xsl:text></xsl:when>
<xsl:when test="$name-caps='FILE_EXISTS'"><xsl:text>http://wiki.pentaho.com/display/EAI/File+Exists+%28Job+Entry%29 </xsl:text></xsl:when>
<xsl:when test="$name-caps='TABLE_EXISTS'"><xsl:text>http://wiki.pentaho.com/display/EAI/Table+Exists+%28Job+Entry%29 </xsl:text></xsl:when>
<xsl:when test="$name-caps='WAIT_FOR_FILE'"><xsl:text>http://wiki.pentaho.com/display/EAI/Wait+for </xsl:text></xsl:when>
<xsl:when test="$name-caps=''"><xsl:text>http://wiki.pentaho.com/display/EAI/Evaluating+conditions+in+The+JavaScript+job+entry </xsl:text></xsl:when>
<xsl:when test="$name-caps='SQL'"><xsl:text>http://wiki.pentaho.com/display/EAI/SQL </xsl:text></xsl:when>
<xsl:when test="$name-caps='SHELL'"><xsl:text>http://wiki.pentaho.com/display/EAI/Shell </xsl:text></xsl:when>
<xsl:when test="$name-caps=''"><xsl:text>http://wiki.pentaho.com/display/EAI/Bulkload+into+MySQL </xsl:text></xsl:when>
<xsl:when test="$name-caps=''"><xsl:text>http://wiki.pentaho.com/display/EAI/Check+if+XML+file+is+well+formed </xsl:text></xsl:when>
<xsl:when test="$name-caps='DTD_VALIDATOR'"><xsl:text>http://wiki.pentaho.com/display/EAI/DTD+Validator+%28Job+Entry%29 </xsl:text></xsl:when>
<xsl:when test="$name-caps='XSD_VALIDATOR'"><xsl:text>http://wiki.pentaho.com/display/EAI/XSD+Validator+%28Job+Entry%29 </xsl:text></xsl:when>
<xsl:when test="$name-caps='XSLT'"><xsl:text>http://wiki.pentaho.com/display/EAI/XSL+Transformation+%28Job+Entry%29 </xsl:text></xsl:when>
<xsl:when test="$name-caps='FTP'"><xsl:text>http://wiki.pentaho.com/display/EAI/Get+a+file+with+FTP </xsl:text></xsl:when>
<xsl:when test="$name-caps='SFTP'"><xsl:text>http://wiki.pentaho.com/display/EAI/Get+a+file+with+SFTP </xsl:text></xsl:when>
<xsl:when test="$name-caps='ACCESSINPUT'"><xsl:text>http://wiki.pentaho.com/display/EAI/Access+Input </xsl:text></xsl:when>
<xsl:when test="$name-caps='CSVINPUT'"><xsl:text>http://wiki.pentaho.com/display/EAI/CSV+Input </xsl:text></xsl:when>
<xsl:when test="$name-caps=''"><xsl:text>http://wiki.pentaho.com/display/EAI/De-serialize+from+file </xsl:text></xsl:when>
<xsl:when test="$name-caps='EXCELINPUT'"><xsl:text>http://wiki.pentaho.com/display/EAI/Excel+Input </xsl:text></xsl:when>
<xsl:when test="$name-caps=''"><xsl:text>http://wiki.pentaho.com/display/EAI/Fixed+File+Input </xsl:text></xsl:when>
<xsl:when test="$name-caps=''"><xsl:text>http://wiki.pentaho.com/display/EAI/Generate+Rows </xsl:text></xsl:when>
<xsl:when test="$name-caps='RANDOMVALUE'"><xsl:text>http://wiki.pentaho.com/display/EAI/Generate+Random+Value </xsl:text></xsl:when>
<xsl:when test="$name-caps='GETFILENAMES'"><xsl:text>http://wiki.pentaho.com/display/EAI/Get+File+Names </xsl:text></xsl:when>
<xsl:when test="$name-caps='GETFILESROWSCOUNT'"><xsl:text>http://wiki.pentaho.com/display/EAI/Get+Files+Row+Count </xsl:text></xsl:when>
<xsl:when test="$name-caps='SYSTEMINFO'"><xsl:text>http://wiki.pentaho.com/display/EAI/Get+System+Info </xsl:text></xsl:when>
<xsl:when test="$name-caps=''"><xsl:text>http://wiki.pentaho.com/display/EAI/Get+Data+From+XML </xsl:text></xsl:when>
<xsl:when test="$name-caps='LDAPINPUT'"><xsl:text>http://wiki.pentaho.com/display/EAI/LDAP+Input </xsl:text></xsl:when>
<xsl:when test="$name-caps='LDIFINPUT'"><xsl:text>http://wiki.pentaho.com/display/EAI/LDIF+Input </xsl:text></xsl:when>
<xsl:when test="$name-caps='MONDRIANINPUT'"><xsl:text>http://wiki.pentaho.com/display/EAI/Mondrian+Input </xsl:text></xsl:when>
<xsl:when test="$name-caps='PROPERTYINPUT'"><xsl:text>http://wiki.pentaho.com/display/EAI/Property+Input </xsl:text></xsl:when>
<xsl:when test="$name-caps='RSSINPUT'"><xsl:text>http://wiki.pentaho.com/display/EAI/RSS+Input </xsl:text></xsl:when>
<xsl:when test="$name-caps=''"><xsl:text>http://wiki.pentaho.com/display/EAI/Streaming+XML+Input </xsl:text></xsl:when>
<xsl:when test="$name-caps='TABLEINPUT'"><xsl:text>http://wiki.pentaho.com/display/EAI/Table+Input </xsl:text></xsl:when>
<xsl:when test="$name-caps='TEXTFILEINPUT'"><xsl:text>http://wiki.pentaho.com/display/EAI/Text+File+Input </xsl:text></xsl:when>
<xsl:when test="$name-caps='XBASEINPUT'"><xsl:text>http://wiki.pentaho.com/display/EAI/XBase+Input </xsl:text></xsl:when>
<xsl:when test="$name-caps=''"><xsl:text>http://wiki.pentaho.com/display/EAI/XML+Input </xsl:text></xsl:when>
<xsl:when test="$name-caps='ACCESSOUTPUT'"><xsl:text>http://wiki.pentaho.com/display/EAI/Access+Output </xsl:text></xsl:when>
<xsl:when test="$name-caps='DELETE'"><xsl:text>http://wiki.pentaho.com/display/EAI/Delete </xsl:text></xsl:when>
<xsl:when test="$name-caps='EXCELOUTPUT'"><xsl:text>http://wiki.pentaho.com/display/EAI/Excel+Output </xsl:text></xsl:when>
<xsl:when test="$name-caps='INSERTUPDATE'"><xsl:text>http://wiki.pentaho.com/display/EAI/Insert+-+Update </xsl:text></xsl:when>
<xsl:when test="$name-caps='PROPERTYOUTPUT'"><xsl:text>http://wiki.pentaho.com/display/EAI/Property+Output </xsl:text></xsl:when>
<xsl:when test="$name-caps='SQLFILEOUTPUT'"><xsl:text>http://wiki.pentaho.com/display/EAI/SQL+File+Output </xsl:text></xsl:when>
<xsl:when test="$name-caps=''"><xsl:text>http://wiki.pentaho.com/display/EAI/Serialize+to+file </xsl:text></xsl:when>
<xsl:when test="$name-caps='TABLEOUTPUT'"><xsl:text>http://wiki.pentaho.com/display/EAI/Table+Output </xsl:text></xsl:when>
<xsl:when test="$name-caps='TEXTFILEOUTPUT'"><xsl:text>http://wiki.pentaho.com/display/EAI/Text+File+Output </xsl:text></xsl:when>
<xsl:when test="$name-caps='UPDATE'"><xsl:text>http://wiki.pentaho.com/display/EAI/Update </xsl:text></xsl:when>
<xsl:when test="$name-caps='XMLOUTPUT'"><xsl:text>http://wiki.pentaho.com/display/EAI/XML+Output </xsl:text></xsl:when>
<xsl:when test="$name-caps='ABORT'"><xsl:text>http://wiki.pentaho.com/display/EAI/Abort </xsl:text></xsl:when>
<xsl:when test="$name-caps='ADDXML'"><xsl:text>http://wiki.pentaho.com/display/EAI/Add+XML </xsl:text></xsl:when>
<xsl:when test="$name-caps='CHECKSUM'"><xsl:text>http://wiki.pentaho.com/display/EAI/Add+a+checksum </xsl:text></xsl:when>
<xsl:when test="$name-caps='CONSTANT'"><xsl:text>http://wiki.pentaho.com/display/EAI/Add+Constants </xsl:text></xsl:when>
<xsl:when test="$name-caps='SEQUENCE'"><xsl:text>http://wiki.pentaho.com/display/EAI/Add+sequence </xsl:text></xsl:when>
<xsl:when test="$name-caps='ANALYTICQUERY'"><xsl:text>http://wiki.pentaho.com/display/EAI/Analytic+Query </xsl:text></xsl:when>
<xsl:when test="$name-caps='APPEND'"><xsl:text>http://wiki.pentaho.com/display/EAI/Append+streams </xsl:text></xsl:when>
<xsl:when test="$name-caps='BLOCKINGSTEP'"><xsl:text>http://wiki.pentaho.com/display/EAI/Blocking+step </xsl:text></xsl:when>
<xsl:when test="$name-caps='CALCULATOR'"><xsl:text>http://wiki.pentaho.com/display/EAI/Calculator </xsl:text></xsl:when>
<xsl:when test="$name-caps='CLONEROW'"><xsl:text>http://wiki.pentaho.com/display/EAI/Clone+row </xsl:text></xsl:when>
<xsl:when test="$name-caps=''"><xsl:text>http://wiki.pentaho.com/display/EAI/Closure+Generator </xsl:text></xsl:when>
<xsl:when test="$name-caps='VALIDATOR'"><xsl:text>http://wiki.pentaho.com/display/EAI/Data+Validator </xsl:text></xsl:when>
<xsl:when test="$name-caps='DELAY'"><xsl:text>http://wiki.pentaho.com/display/EAI/Delay+row </xsl:text></xsl:when>
<xsl:when test="$name-caps='DUMMY'"><xsl:text>http://wiki.pentaho.com/display/EAI/Dummy+%28do+nothing%29 </xsl:text></xsl:when>
<xsl:when test="$name-caps='FILTERROWS'"><xsl:text>http://wiki.pentaho.com/display/EAI/Filter+rows </xsl:text></xsl:when>
<xsl:when test="$name-caps='GROUPBY'"><xsl:text>http://wiki.pentaho.com/display/EAI/Group+By </xsl:text></xsl:when>
<xsl:when test="$name-caps=''"><xsl:text>http://wiki.pentaho.com/display/EAI/Metadata+Structure </xsl:text></xsl:when>
<xsl:when test="$name-caps='NULLIF'"><xsl:text>http://wiki.pentaho.com/display/EAI/Null+If </xsl:text></xsl:when>
<xsl:when test="$name-caps='NORMALISER'"><xsl:text>http://wiki.pentaho.com/display/EAI/Row+Normalizer </xsl:text></xsl:when>
<xsl:when test="$name-caps='DENORMALISER'"><xsl:text>http://wiki.pentaho.com/display/EAI/Row+De-normalizer </xsl:text></xsl:when>
<xsl:when test="$name-caps='FLATTENER'"><xsl:text>http://wiki.pentaho.com/display/EAI/Flattener </xsl:text></xsl:when>
<xsl:when test="$name-caps='SELECTVALUES'"><xsl:text>http://wiki.pentaho.com/display/EAI/Select+Values </xsl:text></xsl:when>
<xsl:when test="$name-caps='SORTROWS'"><xsl:text>http://wiki.pentaho.com/display/EAI/Sort+rows </xsl:text></xsl:when>
<xsl:when test="$name-caps=''"><xsl:text>http://wiki.pentaho.com/display/EAI/Field+Splitter </xsl:text></xsl:when>
<xsl:when test="$name-caps='SPLITFIELDTOROWS3'"><xsl:text>http://wiki.pentaho.com/display/EAI/Split+field+to+rows </xsl:text></xsl:when>
<xsl:when test="$name-caps='SWITCHCASE'"><xsl:text>http://wiki.pentaho.com/display/EAI/Switch-Case </xsl:text></xsl:when>
<xsl:when test="$name-caps='UNIQUE'"><xsl:text>http://wiki.pentaho.com/display/EAI/Unique+Rows </xsl:text></xsl:when>
<xsl:when test="$name-caps=''"><xsl:text>http://wiki.pentaho.com/display/EAI/Value+Mapper </xsl:text></xsl:when>
<xsl:when test="$name-caps='XSDVALIDATOR'"><xsl:text>http://wiki.pentaho.com/display/EAI/XSD+Validator </xsl:text></xsl:when>
<xsl:when test="$name-caps='XSLT'"><xsl:text>http://wiki.pentaho.com/display/EAI/XSL+Transformation </xsl:text></xsl:when>
<xsl:when test="$name-caps='DBPROC'"><xsl:text>http://wiki.pentaho.com/display/EAI/Call+DB+Procedure </xsl:text></xsl:when>
<xsl:when test="$name-caps='COLUMNEXISTS'"><xsl:text>http://wiki.pentaho.com/display/EAI/Check+if+a+column+exists </xsl:text></xsl:when>
<xsl:when test="$name-caps='DBJOIN'"><xsl:text>http://wiki.pentaho.com/display/EAI/Database+Join </xsl:text></xsl:when>
<xsl:when test="$name-caps='DBLOOKUP'"><xsl:text>http://wiki.pentaho.com/display/EAI/Database+lookup </xsl:text></xsl:when>
<xsl:when test="$name-caps='FILEEXISTS'"><xsl:text>http://wiki.pentaho.com/display/EAI/File+exists </xsl:text></xsl:when>
<xsl:when test="$name-caps='HTTP'"><xsl:text>http://wiki.pentaho.com/display/EAI/HTTP+Client </xsl:text></xsl:when>
<xsl:when test="$name-caps='STREAMLOOKUP'"><xsl:text>http://wiki.pentaho.com/display/EAI/Stream+Lookup </xsl:text></xsl:when>
<xsl:when test="$name-caps='TABLEEXISTS'"><xsl:text>http://wiki.pentaho.com/display/EAI/Table+Exists </xsl:text></xsl:when>
<xsl:when test="$name-caps='WEBSERVICELOOKUP'"><xsl:text>http://wiki.pentaho.com/display/EAI/Web+services+lookup </xsl:text></xsl:when>
<xsl:when test="$name-caps='JOINROWS'"><xsl:text>http://wiki.pentaho.com/display/EAI/Join+Rows+%28Cartesian+product%29 </xsl:text></xsl:when>
<xsl:when test="$name-caps='MERGEJOIN'"><xsl:text>http://wiki.pentaho.com/display/EAI/Merge+Join </xsl:text></xsl:when>
<xsl:when test="$name-caps='MERGEROWS'"><xsl:text>http://wiki.pentaho.com/display/EAI/Merge+rows </xsl:text></xsl:when>
<xsl:when test="$name-caps='SORTEDMERGE'"><xsl:text>http://wiki.pentaho.com/display/EAI/Sorted+Merge </xsl:text></xsl:when>
<xsl:when test="$name-caps='XMLJOIN'"><xsl:text>http://wiki.pentaho.com/display/EAI/XML+Join </xsl:text></xsl:when>
<xsl:when test="$name-caps='EXECSQL'"><xsl:text>http://wiki.pentaho.com/display/EAI/Execute+SQL+script </xsl:text></xsl:when>
<xsl:when test="$name-caps='SCRIPTVALUEMOD'"><xsl:text>http://wiki.pentaho.com/display/EAI/Modified+Java+Script+Value </xsl:text></xsl:when>
<xsl:when test="$name-caps='REGEXEVAL'"><xsl:text>http://wiki.pentaho.com/display/EAI/Regex+Evaluation </xsl:text></xsl:when>
<xsl:when test="$name-caps='FORMULA'"><xsl:text>http://wiki.pentaho.com/display/EAI/Formula </xsl:text></xsl:when>
<xsl:when test="$name-caps='COMBINATIONLOOKUP'"><xsl:text>http://wiki.pentaho.com/display/EAI/Combination+lookup-update </xsl:text></xsl:when>
<xsl:when test="$name-caps='DIMENSIONLOOKUP'"><xsl:text>http://wiki.pentaho.com/display/EAI/Dimension+Lookup-Update </xsl:text></xsl:when>
<xsl:when test="$name-caps='MAPPING'"><xsl:text>http://wiki.pentaho.com/display/EAI/Mapping </xsl:text></xsl:when>
<xsl:when test="$name-caps='MAPPINGINPUT'"><xsl:text>http://wiki.pentaho.com/display/EAI/Mapping+Input </xsl:text></xsl:when>
<xsl:when test="$name-caps='MAPPINGOUTPUT'"><xsl:text>http://wiki.pentaho.com/display/EAI/Mapping+Output </xsl:text></xsl:when>
<xsl:when test="$name-caps='ROWSTORESULT'"><xsl:text>http://wiki.pentaho.com/display/EAI/Copy+rows+to+result </xsl:text></xsl:when>
<xsl:when test="$name-caps='GETVARIABLE'"><xsl:text>http://wiki.pentaho.com/display/EAI/Get+Variable </xsl:text></xsl:when>
<xsl:when test="$name-caps='FILESFROMRESULT'"><xsl:text>http://wiki.pentaho.com/display/EAI/Get+files+from+result </xsl:text></xsl:when>
<xsl:when test="$name-caps='ROWSFROMRESULT'"><xsl:text>http://wiki.pentaho.com/display/EAI/Get+rows+from+result </xsl:text></xsl:when>
<xsl:when test="$name-caps='SETVARIABLE'"><xsl:text>http://wiki.pentaho.com/display/EAI/Set+Variable </xsl:text></xsl:when>
<xsl:when test="$name-caps='FILESTORESULT'"><xsl:text>http://wiki.pentaho.com/display/EAI/Set+files+in+result </xsl:text></xsl:when>
<xsl:when test="$name-caps='MAILVALIDATOR'"><xsl:text>http://wiki.pentaho.com/display/EAI/Mail+Validator </xsl:text></xsl:when>
<xsl:when test="$name-caps='AGGREGATEROWS'"><xsl:text>http://wiki.pentaho.com/display/EAI/Aggregate+Rows </xsl:text></xsl:when>
<xsl:when test="$name-caps='ORABULKLOADER'"><xsl:text>http://wiki.pentaho.com/display/EAI/Oracle+Bulk+Loader </xsl:text></xsl:when>
<xsl:otherwise><xsl:text>http://wiki.pentaho.com/display/EAI/Latest+Pentaho+Data+Integration+%28aka+Kettle%29+Documentation</xsl:text></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<a>
<xsl:attribute name="href">
<xsl:value-of select="$web-addr"/>
</xsl:attribute>
<xsl:value-of select="$name"/>
</a>
</xsl:template>
</xsl:stylesheet>
testing
1
2123
3
|