1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!--
- Licensed Materials - Property of IBM
- IBM Cognos Products: AGS
- (C) Copyright IBM Corp. 2005, 2008
- US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
- -->
- <xsl:stylesheet version="1.0" xmlns:xts="http://developer.cognos.com/schemas/xts/" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bus="http://developer.cognos.com/schemas/bibus/3/" exclude-result-prefixes="xts xsl SOAP-ENC xsi bus">
- <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
- <xsl:template match="/">
- <xts:sequence>
- <xsl:for-each select="/root/agent_item/parameterData/parameterValues/item">
- <xsl:variable name="item_name" select="./name"/>
- <xsl:choose>
- <!-- The question marks are to support SQL task parameters -->
- <!-- The Value is becuase SQL tasks use the value as parameter name-->
- <!-- not sure but reqd for doc litereal level 1 params -->
- <xsl:when test="not(/root/parametersResponse/parameter/item[./value = $item_name] or
- /root/parametersResponse/parameter/item[./name = $item_name] or
- /root/parametersResponse/parameter/item/item[./name = $item_name] or
- /root/parametersResponse/parameter/item[./name = concat('?',$item_name,'?')] or
- /root/parametersResponse/parameter/item[./value = concat('?',$item_name,'?')] or
- contains(./name, '/')
- )">
- <!--delete the parameter its been removed from the promptable item-->
- <xts:delete select="/root/agent_item/parameterData/parameterValues/item[./name='{$item_name}']"/>
- </xsl:when>
- </xsl:choose>
- </xsl:for-each>
-
- <!-- remove any assignments that no longer exist -->
- <xsl:for-each select="/root/agent_item/parameterData/parameterAssignments/parameterAssignment">
- <xsl:variable name="item_name" select="./parameterName"/>
-
- <!-- The Value is becuase SQL tasks use the value as parameter name-->
- <xsl:if test="not(/root/parametersResponse/parameter/item[./value = $item_name] or
- /root/parametersResponse/parameter/item[./name = $item_name] or
- /root/parametersResponse/parameter/item/item[./name = $item_name] or
- /root/parametersResponse/parameter/item[./name = concat('?',$item_name,'?')] or
- /root/parametersResponse/parameter/item[./value = concat('?',$item_name,'?')] or
- contains($item_name, '/') )">
- <!--delete the parameter its been removed from the promptable item-->
- <xts:delete select="/root/agent_item/parameterData/parameterAssignments/parameterAssignment[./parameterName = '{$item_name}']" />
- </xsl:if>
- </xsl:for-each>
- <!-- now check for any new additions to the report -->
- <xsl:for-each select="/root/parametersResponse/parameter/item">
- <!--xsl:variable name="param_name" select="./name/text()"/-->
- <xsl:variable name="param_name">
- <xsl:choose>
- <xsl:when test="contains(./value, '?')">
- <xsl:value-of select="substring-before(substring-after(./value, '?'),'?')"/>
- </xsl:when>
- <xsl:when test="./value!=''">
- <xsl:value-of select="./value"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="./name"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="not(/root/agent_item/parameterData/parameterValues/item[./name = $param_name])">
- <!--add the new param literal type with no saved value.... this means it defaults to whatever-->
- <xts:append select="/root/agent_item/parameterData/parameterValues">
- <item xsi:type="bus:parameterValue">
- <name xsi:type="xsd:string">
- <xsl:value-of select="$param_name"/>
- </name>
- <value xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="bus:parmValueItem[0]"/>
- </item>
- </xts:append>
- </xsl:when>
- </xsl:choose>
- </xsl:for-each>
- </xts:sequence>
- </xsl:template>
- </xsl:stylesheet>
|