..
/
download
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<!-- Converts a process data module to a shell script with interaction via
the dialog command. -->
<xsl:output method="text"/>
<xsl:param name="dialog">dialog</xsl:param>
<xsl:param name="height" select="24"/>
<xsl:param name="width" select="80"/>
<xsl:template match="dmodule">
<xsl:text>#!bin/sh</xsl:text>
<xsl:text>
</xsl:text>
<xsl:text>
</xsl:text>
<xsl:apply-templates select="content/process"/>
<xsl:text>clear</xsl:text>
<xsl:text>
</xsl:text>
</xsl:template>
<xsl:template match="process">
<xsl:apply-templates select="variableDeclarations|variablePreSet|dmSeq"/>
</xsl:template>
<xsl:template match="dmSeq|dmThenSeq|dmElseSeq">
<xsl:if test="@applicRefId">
<xsl:variable name="id" select="@applicRefId"/>
<xsl:text>if [ </xsl:text>
<xsl:apply-templates select="//applic[@id = $id]"/>
<xsl:text> ]</xsl:text>
<xsl:text>
</xsl:text>
<xsl:text>then</xsl:text>
<xsl:text>
</xsl:text>
</xsl:if>
<xsl:apply-templates select="dmNode|dmNodeAlts|dmIf|dmLoop|dmSeqAlts"/>
<xsl:if test="@applicRefId">
<xsl:text>fi</xsl:text>
<xsl:text>
</xsl:text>
</xsl:if>
</xsl:template>
<xsl:template match="dmSeqAlts">
<xsl:apply-templates select="dmSeq"/>
</xsl:template>
<xsl:template name="backtitle">
<xsl:text> --backtitle "</xsl:text>
<xsl:apply-templates select="ancestor-or-self::dmodule//dmAddressItems/dmTitle"/>
<xsl:text>"</xsl:text>
</xsl:template>
<xsl:template match="dmTitle">
<xsl:apply-templates select="techName"/>
<xsl:if test="infoName">
<xsl:text> - </xsl:text>
<xsl:apply-templates select="infoName"/>
</xsl:if>
</xsl:template>
<xsl:template match="dmNode">
<xsl:if test="@applicRefId">
<xsl:variable name="id" select="@applicRefId"/>
<xsl:text>if [ </xsl:text>
<xsl:apply-templates select="//applic[@id = $id]"/>
<xsl:text> ] </xsl:text>
<xsl:text>
</xsl:text>
<xsl:text>then</xsl:text>
<xsl:text>
</xsl:text>
</xsl:if>
<xsl:if test="proceduralStep">
<xsl:value-of select="$dialog"/>
<xsl:call-template name="backtitle"/>
<xsl:apply-templates select="title"/>
<xsl:text> --msgbox "</xsl:text>
<xsl:apply-templates select="proceduralStep"/>
<xsl:text>" </xsl:text>
<xsl:value-of select="$height"/>
<xsl:text> </xsl:text>
<xsl:value-of select="$width"/>
<xsl:text>
</xsl:text>
</xsl:if>
<xsl:apply-templates select="variablePreSet|dialog|message|externalApplication"/>
<xsl:if test="@applicRefId">
<xsl:text>fi</xsl:text>
<xsl:text>
</xsl:text>
</xsl:if>
</xsl:template>
<xsl:template match="proceduralStep">
<xsl:number level="multiple"/>
<xsl:text>. </xsl:text>
<xsl:apply-templates select="title"/>
<xsl:apply-templates select="para"/>
</xsl:template>
<xsl:template match="proceduralStep/title">
<xsl:apply-templates/>
<xsl:text>
</xsl:text>
</xsl:template>
<xsl:template match="dmRef">
<xsl:apply-templates select="dmRefIdent/dmCode"/>
</xsl:template>
<xsl:template match="dialog|dialogGroup">
<xsl:apply-templates select="userEntry|menu|dialogGroup"/>
</xsl:template>
<xsl:template match="userEntry">
<xsl:if test="validate">
<xsl:text>valid=false
</xsl:text>
<xsl:text>while ! $valid
</xsl:text>
<xsl:text>do
</xsl:text>
</xsl:if>
<xsl:value-of select="$dialog"/>
<xsl:call-template name="backtitle"/>
<xsl:if test="@mandatory = '1'">
<xsl:text> --no-cancel</xsl:text>
</xsl:if>
<xsl:apply-templates select="parent::title"/>
<xsl:text> --inputbox "</xsl:text>
<xsl:apply-templates select="prompt"/>
<xsl:text>" </xsl:text>
<xsl:value-of select="$height"/>
<xsl:text> </xsl:text>
<xsl:value-of select="$width"/>
<xsl:apply-templates select="default"/>
<xsl:text> 2>tmp</xsl:text>
<xsl:text>
</xsl:text>
<xsl:value-of select="variableRef/@variableName"/>
<xsl:text>=$(cat tmp)</xsl:text>
<xsl:text>
</xsl:text>
<xsl:text>rm tmp</xsl:text>
<xsl:text>
</xsl:text>
<xsl:if test="validate">
<xsl:apply-templates select="validate"/>
<xsl:text>done
</xsl:text>
</xsl:if>
</xsl:template>
<xsl:template match="default">
<xsl:text> </xsl:text>
<xsl:apply-templates select="expression"/>
</xsl:template>
<xsl:template match="message">
<xsl:value-of select="$dialog"/>
<xsl:call-template name="backtitle"/>
<xsl:text> --msgbox "</xsl:text>
<xsl:apply-templates select="prompt"/>
<xsl:text>" </xsl:text>
<xsl:value-of select="$height"/>
<xsl:text> </xsl:text>
<xsl:value-of select="$width"/>
<xsl:text>
</xsl:text>
</xsl:template>
<xsl:template match="prompt">
<xsl:apply-templates select="paraBasic|variableRef"/>
</xsl:template>
<xsl:template match="paraBasic">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="variableRef|globalPropertyRef">
<xsl:if test="parent::expression and not(parent::expression/parent::expression/numberOperator)">
<xsl:text>"</xsl:text>
</xsl:if>
<xsl:text>$</xsl:text>
<xsl:value-of select="@variableName|@applicPropertyIdent"/>
<xsl:if test="parent::expression and not (parent::expression/parent::expression/numberOperator)">
<xsl:text>"</xsl:text>
</xsl:if>
</xsl:template>
<xsl:template match="title">
<xsl:text> --title "</xsl:text>
<xsl:apply-templates/>
<xsl:text>"</xsl:text>
</xsl:template>
<xsl:template match="menu">
<xsl:value-of select="$dialog"/>
<xsl:call-template name="backtitle"/>
<xsl:if test="@mandatory = '1'">
<xsl:text> --no-cancel</xsl:text>
</xsl:if>
<xsl:apply-templates select="parent::title"/>
<xsl:text> --no-tags </xsl:text>
<xsl:choose>
<xsl:when test="@choiceSelection = 'single'">
<xsl:text>--radiolist </xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>--checklist </xsl:text>
</xsl:otherwise>
</xsl:choose>
<xsl:text>"</xsl:text>
<xsl:apply-templates select="prompt"/>
<xsl:text>" </xsl:text>
<xsl:value-of select="$height"/>
<xsl:text> </xsl:text>
<xsl:value-of select="$width"/>
<xsl:text> </xsl:text>
<xsl:value-of select="$height"/>
<xsl:text> </xsl:text>
<xsl:apply-templates select="menuChoice"/>
<xsl:text> 2>tmp</xsl:text>
<xsl:text>
</xsl:text>
<xsl:text>choice=$(cat tmp)</xsl:text>
<xsl:text>
</xsl:text>
<xsl:text>rm tmp</xsl:text>
<xsl:text>
</xsl:text>
<xsl:text>case $choice in</xsl:text>
<xsl:text>
</xsl:text>
<xsl:for-each select="menuChoice">
<xsl:value-of select="position()"/>
<xsl:text>) </xsl:text>
<xsl:apply-templates select="externalApplication|assertion"/>
<xsl:text>;;</xsl:text>
<xsl:text>
</xsl:text>
</xsl:for-each>
<xsl:text>esac</xsl:text>
<xsl:text>
</xsl:text>
</xsl:template>
<xsl:template match="menuChoice">
<xsl:variable name="on" select="@menuChoiceDefaultFlag = '1'"/>
<xsl:text>"</xsl:text>
<xsl:value-of select="position()"/>
<xsl:text>" "</xsl:text>
<xsl:apply-templates select="prompt"/>
<xsl:text>" </xsl:text>
<xsl:choose>
<xsl:when test="$on">
<xsl:text>on</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>off</xsl:text>
</xsl:otherwise>
</xsl:choose>
<xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="numberOperator|stringOperator|booleanOperator">
<xsl:variable name="operation" select="@numberOperation|@stringOperation|@booleanOperation"/>
<xsl:text> </xsl:text>
<xsl:choose>
<xsl:when test="$operation = 'equal'">=</xsl:when>
<xsl:when test="$operation = 'divide'">/</xsl:when>
<xsl:when test="$operation = 'greaterThan'">-gt</xsl:when>
<xsl:when test="$operation = 'greaterThanOrEqual'">-ge</xsl:when>
<xsl:when test="$operation = 'lessThan'">-lt</xsl:when>
<xsl:when test="$operation = 'lessThanOrEqual'">-le</xsl:when>
<xsl:when test="$operation = 'minus'">-</xsl:when>
<xsl:when test="$operation = 'plus'">+</xsl:when>
<xsl:when test="$operation = 'notEqual'">!=</xsl:when>
<xsl:when test="$operation = 'times'">*</xsl:when>
<xsl:when test="$operation = 'exponent'">**</xsl:when>
<xsl:when test="$operation = 'modulus'">%</xsl:when>
<xsl:when test="$operation = 'and'"> ] && [ </xsl:when>
<xsl:when test="$operation = 'or'"> ] || [ </xsl:when>
</xsl:choose>
<xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="expression">
<xsl:choose>
<xsl:when test="numberOperator[
@numberOperation = 'divide' or
@numberOperation = 'minus' or
@numberOperation = 'plus' or
@numberOperation = 'times' or
@numberOperation = 'modulus']">
<xsl:text>$((</xsl:text>
</xsl:when>
<xsl:when test="parent::dmIf or parent::dmLoop">
<xsl:text>[ </xsl:text>
</xsl:when>
</xsl:choose>
<xsl:apply-templates select="*"/>
<xsl:choose>
<xsl:when test="numberOperator[
@numberOperation = 'divide' or
@numberOperation = 'minus' or
@numberOperation = 'plus' or
@numberOperation = 'times' or
@numberOperation = 'modulus']">
<xsl:text>))</xsl:text>
</xsl:when>
<xsl:when test="parent::dmIf or parent::dmLoop">
<xsl:text> ]</xsl:text>
</xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template match="assertion">
<xsl:value-of select="variableRef/@variableName|globalPropertyRef/@applicPropertyIdent"/>
<xsl:text>=</xsl:text>
<xsl:apply-templates select="expression"/>
<xsl:text>
</xsl:text>
</xsl:template>
<xsl:template match="stringValue">
<xsl:text>"</xsl:text>
<xsl:apply-templates/>
<xsl:text>"</xsl:text>
</xsl:template>
<xsl:template match="integerValue|realValue">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="booleanValue">
<xsl:apply-templates select="falseValue|trueValue"/>
</xsl:template>
<xsl:template match="falseValue">
<xsl:text>"false"</xsl:text>
</xsl:template>
<xsl:template match="trueValue">
<xsl:text>"true"</xsl:text>
</xsl:template>
<xsl:template match="variablePreSet">
<xsl:apply-templates select="assertion"/>
<xsl:text>
</xsl:text>
</xsl:template>
<xsl:template match="dmIf">
<xsl:text>if </xsl:text>
<xsl:apply-templates select="expression"/>
<xsl:text>
</xsl:text>
<xsl:text>then</xsl:text>
<xsl:text>
</xsl:text>
<xsl:apply-templates select="dmThenSeq"/>
<xsl:if test="dmElseSeq">
<xsl:text>else</xsl:text>
<xsl:text>
</xsl:text>
<xsl:apply-templates select="dmElseSeq"/>
</xsl:if>
<xsl:text>fi</xsl:text>
<xsl:text>
</xsl:text>
</xsl:template>
<xsl:template match="dmLoop">
<xsl:apply-templates select="variablePreSet"/>
<xsl:text>while </xsl:text>
<xsl:apply-templates select="expression"/>
<xsl:text>
</xsl:text>
<xsl:text>do</xsl:text>
<xsl:text>
</xsl:text>
<xsl:apply-templates select="dmSeq"/>
<xsl:apply-templates select="assertion"/>
<xsl:text>done</xsl:text>
<xsl:text>
</xsl:text>
</xsl:template>
<xsl:template match="booleanFunction">
<xsl:choose>
<xsl:when test="@booleanAction = 'not'">! </xsl:when>
<xsl:when test="@booleanAction = 'defined'"></xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template match="variableDeclarations">
<xsl:apply-templates select="variable"/>
</xsl:template>
<xsl:template match="variable">
<xsl:value-of select="@variableName"/>
<xsl:text>=</xsl:text>
<xsl:apply-templates select="initialize"/>
<xsl:text>
</xsl:text>
</xsl:template>
<xsl:template match="initialize">
<xsl:apply-templates select="expression"/>
</xsl:template>
<xsl:template match="assert">
<xsl:text>"$</xsl:text>
<xsl:value-of select="@applicPropertyIdent"/>
<xsl:text>" = "</xsl:text>
<xsl:value-of select="@applicPropertyValues"/>
<xsl:text>"</xsl:text>
</xsl:template>
<xsl:template match="validate">
<xsl:text>if [ </xsl:text>
<xsl:apply-templates select="expression"/>
<xsl:text> ]
</xsl:text>
<xsl:text>then
</xsl:text>
<xsl:text>valid=true
</xsl:text>
<xsl:text>else
</xsl:text>
<xsl:value-of select="$dialog"/>
<xsl:call-template name="backtitle"/>
<xsl:text> --title Error --msgbox "</xsl:text>
<xsl:value-of select="@errorMessage"/>
<xsl:text>" </xsl:text>
<xsl:value-of select="$height"/>
<xsl:text> </xsl:text>
<xsl:value-of select="$width"/>
<xsl:text>
</xsl:text>
<xsl:text>fi
</xsl:text>
</xsl:template>
<xsl:template match="noAssertions"/>
<xsl:template match="applic">
<xsl:apply-templates select="evaluate|assert|expression"/>
</xsl:template>
<xsl:template match="evaluate">
<xsl:choose>
<xsl:when test="@andOr = 'or'"> ] || [ </xsl:when>
<xsl:when test="@andOr = 'and'"> ] && [ </xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template match="para">
<xsl:apply-templates/>
<xsl:text>
</xsl:text>
</xsl:template>
<xsl:template match="dmCode">
<xsl:value-of select="@modelIdentCode"/>
<xsl:text>-</xsl:text>
<xsl:value-of select="@systemDiffCode"/>
<xsl:text>-</xsl:text>
<xsl:value-of select="@systemCode"/>
<xsl:text>-</xsl:text>
<xsl:value-of select="@subSystemCode"/>
<xsl:value-of select="@subSubSystemCode"/>
<xsl:text>-</xsl:text>
<xsl:value-of select="@assyCode"/>
<xsl:text>-</xsl:text>
<xsl:value-of select="@disassyCode"/>
<xsl:value-of select="@disassyCodeVariant"/>
<xsl:text>-</xsl:text>
<xsl:value-of select="@infoCode"/>
<xsl:value-of select="@infoCodeVariant"/>
<xsl:text>-</xsl:text>
<xsl:value-of select="@itemLocationCode"/>
<xsl:if test="@learnCode">
<xsl:text>-</xsl:text>
<xsl:value-of select="@learnCode"/>
<xsl:value-of select="@learnEventCode"/>
</xsl:if>
</xsl:template>
<xsl:template match="externalApplication">
<xsl:if test="receiveValue">
<xsl:value-of select="receiveValue/variableRef/@variableName"/>
<xsl:text>="$(</xsl:text>
</xsl:if>
<xsl:value-of select="unparsed-entity-uri(@application)"/>
<xsl:apply-templates select="send"/>
<xsl:if test="receiveValue">
<xsl:text>)"</xsl:text>
</xsl:if>
<xsl:text>
</xsl:text>
</xsl:template>
<xsl:template match="send">
<xsl:text> </xsl:text>
<xsl:apply-templates select="variableRef|globalPropertyRef|stringValue"/>
</xsl:template>
<xsl:template match="dmNodeAlts">
<xsl:apply-templates select="*"/>
</xsl:template>
</xsl:stylesheet>
gopher://khzae.net/0/s1kd/s1kd-process2sh/src/process2sh.xsl