123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!--
- Licensed Materials - Property of IBM
- IBM Cognos Products: ps
- (C) Copyright IBM Corp. 2005, 2011
- 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:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt"
- exclude-result-prefixes="xsl xtsext">
- <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
- <xsl:template match="*[local-name()='options']">
- <xsl:apply-templates/>
- </xsl:template>
-
- <!-- email cc field -->
- <xsl:template match="*[local-name()='item' and ./*[local-name()='name']='ccAddress']/*[local-name()='value']">
- <param name="email_cc">
- <xsl:apply-templates select="*[local-name()='item']" mode="items"/>
- </param>
- </xsl:template>
- <!-- email to field -->
- <xsl:template match="*[local-name()='item' and ./*[local-name()='name']='toAddress']/*[local-name()='value']">
- <param name="email_to">
- <xsl:apply-templates select="*[local-name()='item']" mode="items"/>
- </param>
- </xsl:template>
-
- <!-- email bcc field -->
- <xsl:template match="*[local-name()='item' and ./*[local-name()='name']='bccAddress']/*[local-name()='value']">
- <param name="email_bcc">
- <xsl:apply-templates select="*[local-name()='item']" mode="items"/>
- </param>
- </xsl:template>
- <!-- if the options contain a emailToAddress without a ccAddress, toAddress, bccAddress, cc, to or bcc item then use the emailToAddress -->
- <!-- upgrade from Baltic to Bering style -->
- <xsl:template match="*[local-name()='item' and ./*[local-name()='name']='emailToAddress' and not(./*[local-name()='name']='bcc') and not(./*[local-name()='name']='cc') and not(./*[local-name()='name']='to') and not(./*[local-name()='name']='ccAddress') and not(./*[local-name()='name']='toAddress') and not(./*[local-name()='name']='bccAddress')]/*[local-name()='value']">
- <param name="email_to">
- <xsl:apply-templates select="*[local-name()='item']" mode="items"/>
- </param>
- </xsl:template>
-
- <!-- build up the string that will go into the field -->
- <xsl:template match="*[local-name()='item']" mode="items">
- <xsl:value-of select="."/>
- <xsl:if test="position() != last()">
- <xsl:value-of select="';'"/>
- </xsl:if>
- </xsl:template>
-
- <!-- email subject field -->
- <xsl:template match="*[local-name()='item' and ./*[local-name()='name']='subject']">
- <param name="email_subject">
- <xsl:value-of select="*[local-name()='value']"/>
- </param>
- </xsl:template>
-
- <!-- baltic style subject -->
- <!-- if the options contain an emailSubject and no subject item, then use the emailSubject -->
- <!-- upgrade from Baltic to Bering style -->
- <xsl:template match="*[local-name()='item' and ./*[local-name()='name']='emailSubject' and not(./*[local-name()='name']='subject')]">
- <param name="email_subject">
- <xsl:value-of select="*[local-name()='value']/*[local-name()='item']/*[local-name()='value']"/>
- </param>
- </xsl:template>
-
- <!-- body field, links and attachments -->
- <xsl:template match="*[local-name()='item' and ./*[local-name()='name']='memoPart']">
- <!-- simple text body -->
- <xsl:choose>
- <xsl:when test="*[local-name()='value']/*[local-name()='text'] != ''">
- <param name="email_body">
- <xsl:value-of select="*[local-name()='value']/*[local-name()='text']"/>
- </param>
- </xsl:when>
- <xsl:when test="*[local-name()='value']/*[local-name()='parts']/*[local-name()='item']/*[local-name()='text'] != ''">
- <param name="email_body">
- <xsl:value-of select="*[local-name()='value']/*[local-name()='parts']/*[local-name()='item']/*[local-name()='text']"/>
- </param>
- </xsl:when>
- <!-- If there are attachments, then the email body is contained in a memopartComposite item -->
- <xsl:when test="*[local-name()='value']/*[local-name()='parts']/*[local-name()='item' and contains(@*[local-name()='type'],'memoPartComposite')]/*[local-name()='parts']/*[local-name()='item']/*[local-name()='text'] !='' ">
- <param name="email_body">
- <xsl:value-of select="*[local-name()='value']/*[local-name()='parts']/*[local-name()='item' and contains(@*[local-name()='type'],'memoPartComposite')]/*[local-name()='parts']/*[local-name()='item']/*[local-name()='text']"/>
- </param>
- </xsl:when>
- </xsl:choose>
- <!-- html body -->
- <xsl:choose>
- <!-- non empty html body -->
- <xsl:when test="*[local-name()='value']/*[local-name()='parts']/*[local-name()='item' and ./*[local-name()='dataType']='text/html' and ./*[local-name()='data']!='']">
- <xsl:variable name="richEditBody" select="xtsext:base64decode(string(*[local-name()='value']/*[local-name()='parts']/*[local-name()='item' and ./*[local-name()='dataType']='text/html']/*[local-name()='data']), false())"/>
- <xsl:choose>
- <xsl:when test="contains($richEditBody, '<HEAD><META name="user-entered-html-email-body"></META></HEAD>')">
- <param name="hidden_richEditBody">
- <xsl:value-of select="$richEditBody"/>
- </param>
- <param name="richEditMode">true</param>
- </xsl:when>
- <xsl:otherwise>
- <param name="richEditMode">false</param>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <!-- html body with attachments, so the body text is contained in a memoPartComposite item -->
- <xsl:when test="*[local-name()='value']/*[local-name()='parts']/*[local-name()='item' and contains(@*[local-name()='type'],'memoPartComposite')]/*[local-name()='parts']/*[local-name()='item' and ./*[local-name()='dataType']='text/html' and ./*[local-name()='data']!='']">
- <xsl:variable name="richEditBody" select="xtsext:base64decode(string(*[local-name()='value']/*[local-name()='parts']/*[local-name()='item' and contains(@*[local-name()='type'],'memoPartComposite')]/*[local-name()='parts']/*[local-name()='item' and ./*[local-name()='dataType']='text/html']/*[local-name()='data']), false())"/>
- <xsl:choose>
- <xsl:when test="contains($richEditBody, '<HEAD><META name="user-entered-html-email-body"></META></HEAD>')">
- <param name="hidden_richEditBody">
- <xsl:value-of select="$richEditBody"/>
- </param>
- <param name="richEditMode">true</param>
- </xsl:when>
- <xsl:otherwise>
- <param name="richEditMode">false</param>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- </xsl:choose>
- <!-- attachments -->
- <xsl:if test="*[local-name()='value']/*[local-name()='parts']/*[local-name()='item' and substring-after(@*,':')='memoPartAgentObject']">
- <attachments>
- <!-- loop through all the attachments except the eventList (format and locale are null) -->
- <xsl:for-each select="*[local-name()='value']/*[local-name()='parts']/*[local-name()='item' and substring-after(@*,':')='memoPartAgentObject' and *[local-name()='searchPath'] !='eventOutput' ]">
- <item>
- <searchPath>
- <xsl:value-of select="*[local-name()='searchPath']"/>
- </searchPath>
- <xsl:if test="*[local-name()='format']!='' ">
- <format>
- <xsl:value-of select="*[local-name()='format']"/>
- </format>
- </xsl:if>
- <xsl:if test="*[local-name()='locale']!=''">
- <locale>
- <xsl:value-of select="*[local-name()='locale']"/>
- </locale>
- </xsl:if>
- </item>
- </xsl:for-each>
- </attachments>
- <xsl:variable name="eventOutput" select="*[local-name()='value']/*[local-name()='parts']/*[local-name()='item' and substring-after(@*,':')='memoPartAgentObject' and *[local-name()='format']='' and *[local-name()='locale']='' and *[local-name()='searchPath'] ='eventOutput']"/>
- <xsl:if test="$eventOutput">
- <eventOutput>
- <searchPath>
- <xsl:value-of select="$eventOutput/*[local-name()='searchPath']"/>
- </searchPath>
- <position>
- <xsl:value-of select="count($eventOutput/preceding-sibling::*) + 2"/>
- </position>
- </eventOutput>
- </xsl:if>
- </xsl:if>
-
- <!-- links -->
- <xsl:if test="*[local-name()='value']/*[local-name()='parts']/*[local-name()='item' and substring-after(@*,':')='memoPartObjectLinks']">
- <link>
- <xsl:for-each select="*[local-name()='value']/*[local-name()='parts']/*[local-name()='item' and substring-after(@*,':')='memoPartObjectLinks']/*[local-name()='links']/*[local-name()='item']/*[local-name()='searchPath']">
- <item>
- <searchPath>
- <xsl:value-of select="."/>
- </searchPath>
- </item>
- </xsl:for-each>
- </link>
- </xsl:if>
- </xsl:template>
-
- <!-- if the options contain an emailBody and no memoPart item, then use the email Body -->
- <!-- upgrade from Baltic to Bering style -->
- <xsl:template match="*[local-name()='item' and ./*[local-name()='name']='emailBody' and not(./*[local-name()='name']='memoPart')]">
- <param name="email_body">
- <xsl:value-of select="*[local-name()='value']/*[local-name()='item']/*[local-name()='value']"/>
- </param>
- </xsl:template>
-
- <!-- email to searchPaths -->
- <xsl:template match="*[local-name()='item' and contains(@*[local-name()='type'],'bus:deliveryOptionSearchPathMultipleObjectArray') and ./*[local-name()='name']='to']/*[local-name()='value']">
- <to>
- <xsl:for-each select="*[local-name()='item']">
- <searchPath><xsl:value-of select="."/></searchPath>
- </xsl:for-each>
- </to>
- </xsl:template>
- <!-- email cc searchPaths -->
- <xsl:template match="*[local-name()='item' and ./*[local-name()='name']='cc']/*[local-name()='value']">
- <cc>
- <xsl:for-each select="*[local-name()='item']">
- <searchPath><xsl:value-of select="."/></searchPath>
- </xsl:for-each>
- </cc>
- </xsl:template>
- <!-- email bcc searchPaths -->
- <xsl:template match="*[local-name()='item' and ./*[local-name()='name']='bcc']/*[local-name()='value']">
- <bcc>
- <xsl:for-each select="*[local-name()='item']">
- <searchPath><xsl:value-of select="."/></searchPath>
- </xsl:for-each>
- </bcc>
- </xsl:template>
-
- <!-- if the options contain an emailTo item without a bcc, cc, to, bccAddress, ccAddress or toAddress item, then use the emailTo item -->
- <!-- upgrade from Baltic to Bering style -->
- <xsl:template match="*[local-name()='item' and ./*[local-name()='name']='emailTo' and not(./*[local-name()='name']='bcc') and not(./*[local-name()='name']='cc') and not(./*[local-name()='name']='to') and not(./*[local-name()='name']='ccAddress') and not(./*[local-name()='name']='toAddress') and not(./*[local-name()='name']='bccAddress')]/*[local-name()='value']">
- <to>
- <xsl:for-each select="*[local-name()='item']">
- <searchPath><xsl:value-of select="."/></searchPath>
- </xsl:for-each>
- </to>
- </xsl:template>
- <!-- email as attachment -->
- <xsl:template match="*[local-name()='item' and ./*[local-name()='name']='emailAsAttachment']">
- <param name="m_ro_emailAsAttachment">
- <xsl:value-of select="*[local-name()='value']"/>
- </param>
- </xsl:template>
- <!-- email as URL -->
- <xsl:template match="*[local-name()='item' and ./*[local-name()='name']='emailAsURL']">
- <param name="m_ro_emailAsURL">
- <xsl:value-of select="*[local-name()='value']"/>
- </param>
- </xsl:template>
-
- <xsl:template match="text()" priority="0"/>
- </xsl:stylesheet>
|