..
/
download
<?xml version="1.0" encoding="UTF-8"?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exslt="http://exslt.org/common" extension-element-prefixes="exslt" version="1.0">
<xsl:variable name="extension-namespaces">
<str:node xmlns:str="http://exslt.org/strings"/>
</xsl:variable>
<xsl:template match="/">
<xsl:element name="xsl:transform">
<xsl:attribute name="version">1.0</xsl:attribute>
<xsl:copy-of select="exslt:node-set($extension-namespaces)/*/namespace::*"/>
<xsl:attribute name="extension-element-prefixes">str</xsl:attribute>
<xsl:element name="xsl:param">
<xsl:attribute name="name">overwrite-display-text</xsl:attribute>
<xsl:attribute name="select">true()</xsl:attribute>
</xsl:element>
<xsl:element name="xsl:variable">
<xsl:attribute name="name">set-operator</xsl:attribute>
<xsl:value-of select="disptext/operators/set"/>
</xsl:element>
<xsl:element name="xsl:variable">
<xsl:attribute name="name">range-operator</xsl:attribute>
<xsl:value-of select="disptext/operators/range"/>
</xsl:element>
<xsl:element name="xsl:template">
<xsl:attribute name="match">@*|node()</xsl:attribute>
<xsl:element name="xsl:copy">
<xsl:element name="xsl:apply-templates">
<xsl:attribute name="select">@*|node()</xsl:attribute>
</xsl:element>
</xsl:element>
</xsl:element>
<xsl:apply-templates select="disptext"/>
<xsl:element name="xsl:template">
<xsl:attribute name="match">assert[text()]</xsl:attribute>
<xsl:attribute name="mode">text</xsl:attribute>
<xsl:element name="xsl:apply-templates"/>
</xsl:element>
<xsl:element name="xsl:template">
<xsl:attribute name="match">evaluate</xsl:attribute>
<xsl:attribute name="mode">text</xsl:attribute>
<xsl:element name="xsl:variable">
<xsl:attribute name="name">op</xsl:attribute>
<xsl:attribute name="select">@andOr|@operator</xsl:attribute>
</xsl:element>
<xsl:element name="xsl:for-each">
<xsl:attribute name="select">assert|evaluate</xsl:attribute>
<xsl:element name="xsl:if">
<xsl:attribute name="test">self::evaluate and (@andOr|@operator) != $op</xsl:attribute>
<xsl:element name="xsl:text">
<xsl:value-of select="disptext/operators/openGroup"/>
</xsl:element>
</xsl:element>
<xsl:element name="xsl:apply-templates">
<xsl:attribute name="select">.</xsl:attribute>
<xsl:attribute name="mode">text</xsl:attribute>
</xsl:element>
<xsl:element name="xsl:if">
<xsl:attribute name="test">self::evaluate and (@andOr|@operator) != $op</xsl:attribute>
<xsl:element name="xsl:text">
<xsl:value-of select="disptext/operators/closeGroup"/>
</xsl:element>
</xsl:element>
<xsl:element name="xsl:if">
<xsl:attribute name="test">position() != last()</xsl:attribute>
<xsl:element name="xsl:choose">
<xsl:element name="xsl:when">
<xsl:attribute name="test">$op = 'and'</xsl:attribute>
<xsl:element name="xsl:text">
<xsl:value-of select="disptext/operators/and"/>
</xsl:element>
</xsl:element>
<xsl:element name="xsl:when">
<xsl:attribute name="test">$op = 'or'</xsl:attribute>
<xsl:element name="xsl:text">
<xsl:value-of select="disptext/operators/or"/>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:element>
<xsl:element name="xsl:template">
<xsl:attribute name="match">@applicPropertyValues|@actvalues</xsl:attribute>
<xsl:attribute name="mode">text</xsl:attribute>
<xsl:element name="xsl:value-of">
<xsl:attribute name="select">str:replace(str:replace(., '|', $set-operator), '~', $range-operator)</xsl:attribute>
</xsl:element>
</xsl:element>
<xsl:element name="xsl:template">
<xsl:attribute name="match">applic[assert|evaluate|expression]</xsl:attribute>
<xsl:element name="xsl:variable">
<xsl:attribute name="name">disp-name</xsl:attribute>
<xsl:element name="xsl:choose">
<xsl:element name="xsl:when">
<xsl:attribute name="test">parent::status|parent::inlineapplics</xsl:attribute>
<xsl:text>displaytext</xsl:text>
</xsl:element>
<xsl:element name="xsl:otherwise">
<xsl:text>displayText</xsl:text>
</xsl:element>
</xsl:element>
</xsl:element>
<xsl:element name="xsl:variable">
<xsl:attribute name="name">para-name</xsl:attribute>
<xsl:element name="xsl:choose">
<xsl:element name="xsl:when">
<xsl:attribute name="test">parent::status or parent::inlineapplics</xsl:attribute>
<xsl:text>p</xsl:text>
</xsl:element>
<xsl:element name="xsl:otherwise">
<xsl:text>simplePara</xsl:text>
</xsl:element>
</xsl:element>
</xsl:element>
<xsl:element name="xsl:variable">
<xsl:attribute name="name">disp-elem</xsl:attribute>
<xsl:attribute name="select">displayText|displaytext</xsl:attribute>
</xsl:element>
<xsl:element name="xsl:copy">
<xsl:element name="xsl:apply-templates">
<xsl:attribute name="select">@*</xsl:attribute>
</xsl:element>
<xsl:element name="xsl:choose">
<xsl:element name="xsl:when">
<xsl:attribute name="test">$disp-elem and not ($overwrite-display-text)</xsl:attribute>
<xsl:element name="xsl:apply-templates">
<xsl:attribute name="select">$disp-elem</xsl:attribute>
</xsl:element>
</xsl:element>
<xsl:element name="xsl:otherwise">
<xsl:element name="xsl:element">
<xsl:attribute name="name">{$disp-name}</xsl:attribute>
<xsl:element name="xsl:element">
<xsl:attribute name="name">{$para-name}</xsl:attribute>
<xsl:element name="xsl:apply-templates">
<xsl:attribute name="select">assert|evaluate|expression</xsl:attribute>
<xsl:attribute name="mode">text</xsl:attribute>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:element>
<xsl:element name="xsl:apply-templates">
<xsl:attribute name="select">assert|evaluate|expression</xsl:attribute>
</xsl:element>
</xsl:element>
</xsl:element>
<xsl:element name="xsl:template">
<xsl:attribute name="name">applicPropertyName</xsl:attribute>
<xsl:element name="xsl:param">
<xsl:attribute name="name">id</xsl:attribute>
<xsl:attribute name="select">@applicPropertyIdent|@actidref</xsl:attribute>
</xsl:element>
<xsl:element name="xsl:param">
<xsl:attribute name="name">type</xsl:attribute>
<xsl:attribute name="select">@applicPropertyType|@actreftype</xsl:attribute>
</xsl:element>
<xsl:element name="xsl:variable">
<xsl:attribute name="name">prop</xsl:attribute>
<xsl:attribute name="select">//productAttribute[$type='prodattr' and @id=$id]|//prodattr[$type='prodattr' and @id=$id]|//cond[$type='condition' and @id=$id]|//condition[$type='condition' and @id=$id]</xsl:attribute>
</xsl:element>
<xsl:element name="xsl:variable">
<xsl:attribute name="name">disp</xsl:attribute>
<xsl:attribute name="select">$prop/displayName|$prop/displayname</xsl:attribute>
</xsl:element>
<xsl:element name="xsl:variable">
<xsl:attribute name="name">name</xsl:attribute>
<xsl:attribute name="select">$prop/name</xsl:attribute>
</xsl:element>
<xsl:element name="xsl:choose">
<xsl:element name="xsl:when">
<xsl:attribute name="test">$disp</xsl:attribute>
<xsl:element name="xsl:value-of">
<xsl:attribute name="select">$disp</xsl:attribute>
</xsl:element>
</xsl:element>
<xsl:element name="xsl:when">
<xsl:attribute name="test">$name</xsl:attribute>
<xsl:element name="xsl:value-of">
<xsl:attribute name="select">$name</xsl:attribute>
</xsl:element>
</xsl:element>
<xsl:element name="xsl:otherwise">
<xsl:element name="xsl:value-of">
<xsl:attribute name="select">$id</xsl:attribute>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:element>
<xsl:element name="xsl:template">
<xsl:attribute name="name">applicPropertyVal</xsl:attribute>
<xsl:element name="xsl:param">
<xsl:attribute name="name">id</xsl:attribute>
<xsl:attribute name="select">@applicPropertyIdent|@actidref</xsl:attribute>
</xsl:element>
<xsl:element name="xsl:param">
<xsl:attribute name="name">type</xsl:attribute>
<xsl:attribute name="select">@applicPropertyType|@actreftype</xsl:attribute>
</xsl:element>
<xsl:element name="xsl:variable">
<xsl:attribute name="name">prop</xsl:attribute>
<xsl:attribute name="select">//productAttribute[$type='prodattr' and @id=$id]|//prodattr[$type='prodattr' and @id=$id]|//condType[$type='condition' and @id=//cond[@id=$id]/@condTypeRefId]|//condition[$type='condition' and @id=//cond[@id=$id]/@condtyperef]</xsl:attribute>
</xsl:element>
<xsl:element name="xsl:variable">
<xsl:attribute name="name">values</xsl:attribute>
<xsl:attribute name="select">@applicPropertyValues|@actvalues</xsl:attribute>
</xsl:element>
<xsl:element name="xsl:variable">
<xsl:attribute name="name">label</xsl:attribute>
<xsl:attribute name="select">$prop/enumeration[@applicPropertyValues=$values]/@enumerationLabel</xsl:attribute>
</xsl:element>
<xsl:element name="xsl:choose">
<xsl:element name="xsl:when">
<xsl:attribute name="test">$label</xsl:attribute>
<xsl:element name="xsl:value-of">
<xsl:attribute name="select">$label</xsl:attribute>
</xsl:element>
</xsl:element>
<xsl:element name="xsl:otherwise">
<xsl:element name="xsl:apply-templates">
<xsl:attribute name="select">$values</xsl:attribute>
<xsl:attribute name="mode">text</xsl:attribute>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:template>
<xsl:template match="disptext">
<xsl:element name="xsl:template">
<xsl:attribute name="match">assert</xsl:attribute>
<xsl:attribute name="mode">text</xsl:attribute>
<xsl:element name="xsl:variable">
<xsl:attribute name="name">ident</xsl:attribute>
<xsl:attribute name="select">@applicPropertyIdent|@actidref</xsl:attribute>
</xsl:element>
<xsl:element name="xsl:variable">
<xsl:attribute name="name">type</xsl:attribute>
<xsl:attribute name="select">@applicPropertyType|@actreftype</xsl:attribute>
</xsl:element>
<xsl:element name="xsl:choose">
<xsl:apply-templates select="property"/>
<xsl:apply-templates select="conditionType"/>
<xsl:apply-templates select="productAttributes|conditions"/>
<xsl:apply-templates select="default"/>
</xsl:element>
</xsl:element>
</xsl:template>
<xsl:template match="property">
<xsl:element name="xsl:when">
<xsl:attribute name="test">
<xsl:text>$ident='</xsl:text>
<xsl:value-of select="@ident"/>
<xsl:text>' and $type='</xsl:text>
<xsl:value-of select="@type"/>
<xsl:text>'</xsl:text>
</xsl:attribute>
<xsl:apply-templates select="name|text|values"/>
</xsl:element>
</xsl:template>
<xsl:template match="conditionType">
<xsl:element name="xsl:when">
<xsl:attribute name="test">
<xsl:text>$type='condition' and (//cond[@id=$ident]/@condTypeRefId|//condition[@id=$ident]/@condtyperef)='</xsl:text>
<xsl:value-of select="@ident"/>
<xsl:text>'</xsl:text>
</xsl:attribute>
<xsl:apply-templates select="name|text|values"/>
</xsl:element>
</xsl:template>
<xsl:template match="default">
<xsl:element name="xsl:when">
<xsl:attribute name="test">true()</xsl:attribute>
<xsl:apply-templates select="name|text|values"/>
</xsl:element>
</xsl:template>
<xsl:template match="productAttributes">
<xsl:element name="xsl:when">
<xsl:attribute name="test">$type='prodattr'</xsl:attribute>
<xsl:apply-templates select="name|text|values"/>
</xsl:element>
</xsl:template>
<xsl:template match="conditions">
<xsl:element name="xsl:when">
<xsl:attribute name="test">$type='condition'</xsl:attribute>
<xsl:apply-templates select="name|text|values"/>
</xsl:element>
</xsl:template>
<xsl:template match="name">
<xsl:element name="xsl:call-template">
<xsl:attribute name="name">applicPropertyName</xsl:attribute>
</xsl:element>
</xsl:template>
<xsl:template match="text">
<xsl:element name="xsl:text">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
<xsl:template match="values">
<xsl:choose>
<xsl:when test="value">
<xsl:element name="xsl:choose">
<xsl:apply-templates select="value"/>
<xsl:element name="xsl:otherwise">
<xsl:element name="xsl:call-template">
<xsl:attribute name="name">applicPropertyVal</xsl:attribute>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:element name="xsl:call-template">
<xsl:attribute name="name">applicPropertyVal</xsl:attribute>
</xsl:element>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="value">
<xsl:element name="xsl:when">
<xsl:attribute name="test">
<xsl:text>@applicPropertyValues='</xsl:text>
<xsl:value-of select="@match"/>
<xsl:text>' or @actvalues='</xsl:text>
<xsl:value-of select="@match"/>
<xsl:text>'</xsl:text>
</xsl:attribute>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
</xsl:transform>
gopher://khzae.net/0/s1000d/s1kd-tools/src/tools/s1kd-aspp/disptext.xsl