1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!--
- Licensed Materials - Property of IBM
- IBM Cognos Products: ps
- (C) Copyright IBM Corp. 2005, 2017
- US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
- -->
- <!--
- Copyright (C) 2008 Cognos ULC, an IBM Company. All rights reserved.
- Cognos (R) is a trademark of Cognos ULC, (formerly Cognos Incorporated).
- -->
- <xsl:stylesheet version="1.0"
- xmlns:bus="http://developer.cognos.com/schemas/bibus/3/"
- xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:xts="http://developer.cognos.com/schemas/xts/"
- xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
- exclude-result-prefixes="bus xsi xsl xts SOAP-ENC">
- <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
- <xsl:template match="/env">
- <routingTable xsi:type="bus:routingTableEntryArrayProp">
- <value xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="bus:routingTableEntry[{count(*[starts-with(@name,'rule_package_')]) - count(*[starts-with(@name,'rule_duplicate_') and .='true'])}]">
- <xsl:for-each select="*[local-name()='param' and starts-with(@name,'rule_package_')]">
- <xsl:sort select="substring-after(@name,'rule_package_')" data-type="number"/>
- <xsl:variable name="position" select="position()"/>
- <xsl:if test="/env/*[@name = concat('rule_duplicate_',$position)] != 'true'">
- <item xsi:type="bus:routingTableEntry">
- <rule xsi:type="bus:routingRuleObject">
- <hints xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="bus:routingHintObject[{count((/env/*[(@name = concat('rule_package_', $position) or @name = concat('rule_role_',$position) or @name = concat('rule_group_',$position)) and .!='']))}]">
- <xsl:if test="/env/*[@name = concat('rule_package_', $position)] != ''">
- <item xsi:type="bus:routingHintObject">
- <xsl:variable name="envClassVarName">
- <xsl:value-of select="concat('dataObjectToClass_', .)"/>
- </xsl:variable>
- <xsl:variable name="hintClass">
- <xsl:choose>
- <xsl:when test="count(/env/*[contains(@name, $envClassVarName)]) > 0">
- <xsl:value-of select="/env/*[contains(@name, $envClassVarName)]"/>
- </xsl:when>
- <xsl:otherwise>package</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <objectClass xsi:type="bus:classEnum"><xsl:value-of select="$hintClass"/></objectClass>
- <value xsi:type="xsd:string"><xsl:value-of select="/env/*[@name = concat('rule_package_', $position)]"/></value>
- </item>
- </xsl:if>
- <xsl:if test="/env/*[@name = concat('rule_group_', $position)] != ''">
- <item xsi:type="bus:routingHintObject">
- <objectClass xsi:type="bus:classEnum">group</objectClass>
- <value xsi:type="xsd:string"><xsl:value-of select="/env/*[@name = concat('rule_group_', $position)]"/></value>
- </item>
- </xsl:if>
- <xsl:if test="/env/*[@name = concat('rule_role_', $position)] != ''">
- <item xsi:type="bus:routingHintObject">
- <objectClass xsi:type="bus:classEnum">role</objectClass>
- <value xsi:type="xsd:string"><xsl:value-of select="/env/*[@name = concat('rule_role_', $position)]"/></value>
- </item>
- </xsl:if>
- </hints>
- </rule>
- <serverGroupName xsi:type="xsd:string"><xsl:value-of select="/env/*[@name = concat('rule_server_group_', $position)]"/></serverGroupName>
- </item>
- </xsl:if>
- </xsl:for-each>
- </value>
- </routingTable>
- </xsl:template>
- <!-- match all unmatched nodes -->
- <xsl:template match="node()" priority="0">
- <xsl:element name="{name()}" namespace="{namespace-uri()}">
- <xsl:copy-of select="@*"/>
- <xsl:apply-templates/>
- </xsl:element>
- </xsl:template>
- <!-- copy just the text -->
- <xsl:template match="text()" priority="0">
- <xsl:copy-of select="."/>
- </xsl:template>
- </xsl:stylesheet>
|