123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379 |
- <?xml version="1.0"?>
- <xsl:stylesheet xmlns="http://www.developer.cognos.com/schemas/bmt/51/0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:fmfunc="http://www.developer.cognos.com/bmt" xmlns:xalan="http://xml.apache.org/xalan" xmlns:table="http://www.developer.cognos.com/schemas/bmt/51/transformTables" exclude-result-prefixes="fmfunc xalan table">
- <xsl:include href="fmmd_generalTemplates.xsl"/>
- <xsl:strip-space elements="*"/>
- <xsl:output encoding="utf-8" method="xml" indent="no"/>
-
-
-
- <xsl:template match="*[local-name() = 'dataSource']/*[local-name()='property' and @*[local-name()='name' and .='limitedLocalScope']]"/>
-
-
-
- <xsl:template match="*[local-name()='dimension']/*[local-name()='lastChanged']"/>
- <xsl:template match="*[local-name()='dimension']/*[local-name()='property' and @*[local-name()='name' and (.='uniqueName' or .='dimensionType' or .='hierarchyType' or .='multiRoot' or .='balanced' or .='ragged' or .='sortedHierarchy' or .='hierarchyCardinality' or .='rootMember' or .='defaultHierarchy')]]"/>
- <xsl:template match="*[local-name()='dimension']/*[local-name()='hierarchy']/*[local-name()='property' and @*[local-name()='name' and (.='dimensionType' or .='hierarchyType' or .='uniqueName' or .='multiRoot' or .='balanced' or .='ragged' or .='sortedHierarchy' or .='hierarchyCardinality' or .='rootMember' or .='defaultHierarchy')]]"/>
- <xsl:template match="*[local-name()='dimension']/*[local-name()='hierarchy']/*[local-name()='level']/*[local-name()='property' and @*[local-name()='name' and .='uniqueName']]"/>
-
- <xsl:template match="*[local-name()='dimension']/*[local-name()='hierarchy']">
- <xsl:variable name="hierarchy" select="."/>
- <xsl:variable name="externalName" select="*[local-name()='externalName']"/>
- <xsl:element name="{local-name()}">
- <xsl:for-each select="./node()">
- <xsl:choose>
-
- <xsl:when test="local-name()='defaultHierarchy' or local-name()='externalName'"/>
-
- <xsl:when test="local-name()='property' and @*[local-name()='name' and (.='dimensionType' or .='multiRoot' or .='balanced' or .='ragged' or .='sortedHierarchy' or .='hierarchyCardinality' or .='rootMember' or .='defaultHierarchy')]"/>
- <xsl:otherwise>
- <xsl:apply-templates select="."/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
- <xsl:if test="$externalName">
- <xsl:element name="externalName">
- <xsl:value-of select="$externalName"/>
- </xsl:element>
- </xsl:if>
- <xsl:for-each select="*[local-name()='property' and @*[local-name()='name' and .='multiRoot']]">
- <xsl:element name="{@*[local-name()='name']}">
- <xsl:value-of select="."/>
- </xsl:element>
- </xsl:for-each>
- <xsl:for-each select="*[local-name()='property' and @*[local-name()='name' and .='balanced']]">
- <xsl:element name="{@*[local-name()='name']}">
- <xsl:value-of select="."/>
- </xsl:element>
- </xsl:for-each>
- <xsl:for-each select="*[local-name()='property' and @*[local-name()='name' and .='ragged']]">
- <xsl:element name="{@*[local-name()='name']}">
- <xsl:value-of select="."/>
- </xsl:element>
- </xsl:for-each>
- <xsl:for-each select="*[local-name()='property' and @*[local-name()='name' and .='rootMember']]">
- <xsl:element name="{@*[local-name()='name']}">
- <xsl:value-of select="."/>
- </xsl:element>
- </xsl:for-each>
- <xsl:element name="sortedHierarchy">none</xsl:element>
- <xsl:for-each select="*[local-name()='property' and @*[local-name()='name' and .='hierarchyCardinality']]">
- <xsl:element name="cardinality">
- <xsl:value-of select="."/>
- </xsl:element>
- </xsl:for-each>
- <xsl:element name="externalNumberOfLevels">
- <xsl:value-of select="count($hierarchy/*[local-name()='level'])"/>
- </xsl:element>
- </xsl:element>
- </xsl:template>
-
-
-
- <xsl:template match="*[local-name()='querySubject' or local-name()='dimension']/*[local-name()='definition']/*[local-name()='dbQuery' or local-name()='mdQuery']/*[local-name()='calculations']"/>
-
- <xsl:template match="*[local-name()='querySubject']/*[local-name()='definition']/*[local-name()='modelQuery']/*[local-name()='queryItems']"/>
-
- <xsl:template match="*[local-name()='queryItem' or local-name()='measure']/*[local-name() = 'columnName']">
- <xsl:variable name="strColumnName" select="string(.)"/>
- <xsl:variable name="querySubject" select="ancestor::*[local-name()='querySubject' or local-name()='dimension'][1]"/>
- <xsl:variable name="querySubject_id" select="generate-id($querySubject)"/>
- <xsl:variable name="qiCalcDefinition" select="key('calcDefinition_using_qsID_columnName', concat($querySubject_id, '||', $strColumnName))"/>
- <xsl:variable name="queryItemsExpr" select="key('queryItems_using_qsID', $querySubject_id)"/>
- <xsl:choose>
- <xsl:when test="$qiCalcDefinition">
- <xsl:element name="expression">
- <xsl:apply-templates select="$qiCalcDefinition/*[local-name()='expression']/node()|$qiCalcDefinition/*[local-name()='refobj']"/>
- </xsl:element>
- </xsl:when>
-
-
- <xsl:when test="$queryItemsExpr">
- <xsl:variable name="qiName" select="string(../*[local-name()='name' and @*[local-name()='locale' and . = $defaultLocale]])"/>
- <xsl:variable name="queryItemNames" select="key('queryItemNames_using_qsID', $querySubject_id)"/>
- <xsl:for-each select="$queryItemNames">
- <xsl:variable name="pos" select="position()"/>
- <xsl:if test="$qiName = string($queryItemNames[$pos])">
- <xsl:variable name="elemName" select="local-name($queryItemsExpr[$pos])"/>
- <xsl:variable name="expression" select="$queryItemsExpr[$pos]"/>
- <xsl:if test="not($elemName = 'expression')">
- <xsl:element name="expression">
- <xsl:element name="{$elemName}">
- <xsl:for-each select="$expression/node()">
- <xsl:call-template name="copyQIExpression"/>
- </xsl:for-each>
- </xsl:element>
- </xsl:element>
- </xsl:if>
- <xsl:if test="$elemName = 'expression'">
- <xsl:element name="{$elemName}">
- <xsl:for-each select="$expression/node()">
- <xsl:call-template name="copyQIExpression"/>
- </xsl:for-each>
- </xsl:element>
- </xsl:if>
- </xsl:if>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <xsl:element name="externalName">
- <xsl:value-of select="$strColumnName"/>
- </xsl:element>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="*[local-name()='dimension']//*[local-name()='measure']/*[last()]">
-
- <xsl:call-template name="myCopy"/>
-
- <xsl:element name="dbAggregationRule">
- <xsl:variable name="bIsMdQuery" select="ancestor::*[local-name()='dimension']/*[local-name()='definition']/*[local-name()='mdQuery']"/>
- <xsl:choose>
- <xsl:when test="$bIsMdQuery and ../*[local-name()='regularAggregate']">
- <xsl:value-of select="../*[local-name()='regularAggregate']"/>
- </xsl:when>
- <xsl:when test="$bIsMdQuery and ../*[local-name()='semiAggregate']">
- <xsl:value-of select="../*[local-name()='semiAggregate']"/>
- </xsl:when>
- <xsl:otherwise>automatic</xsl:otherwise>
- </xsl:choose>
- </xsl:element>
- </xsl:template>
-
- <xsl:template name="copyQIExpression">
- <xsl:choose>
- <xsl:when test="self::text()">
- <xsl:apply-templates select="."/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:element name="{local-name(.)}">
- <xsl:apply-templates select="./node()"/>
- </xsl:element>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
-
-
- <xsl:template match="*[local-name()='dimension']/*[local-name()='definition' or local-name()='levels' or local-name()='hierarchies' or local-name()='previewFilters' or local-name()='securityFilters' or local-name()='externalizeMethod' or local-name()='externalizeAutoSummary'][last()]">
-
- <xsl:element name="{local-name()}">
- <xsl:apply-templates select="./*"/>
- </xsl:element>
-
- <xsl:element name="type">
-
- <xsl:variable name="dimType" select="string(../*[local-name()='property' and @*[local-name()='name' and .='dimensionType']])"/>
- <xsl:choose>
- <xsl:when test="($dimType = 'regular') or ($dimType = 'time') or ($dimType = 'currency') or ($dimType = 'measure')">
- <xsl:value-of select="$dimType"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="'regular'"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:element>
- <xsl:element name="membersRollup">true</xsl:element>
- <xsl:if test="../*[local-name()='hierarchy']/*[local-name()='property' and @*[local-name()='name' and .= 'defaultHierarchy'] and .= 'true']">
- <xsl:variable name="hierarchy" select="../*[local-name()='hierarchy']"/>
- <xsl:variable name="ns" select="../ancestor::*[local-name()='namespace'][1]/*[local-name()='name' and @*[local-name()='locale' and . = $defaultLocale]]"/>
- <xsl:variable name="dimName" select="../*[local-name()='name' and @*[local-name()='locale' and . = $defaultLocale]]"/>
- <xsl:variable name="hierName" select="$hierarchy/*[local-name()='name' and @*[local-name()='locale' and . = $defaultLocale]]"/>
- <xsl:element name="defaultHierarchy">
- <xsl:value-of select="concat('[', $ns, '].[', $dimName, '].[', $hierName, ']')"/>
- </xsl:element>
- </xsl:if>
- </xsl:template>
-
-
-
- <xsl:template match="*[local-name()='dimension']/*[local-name()='name' or local-name()='description' or local-name()='lastChanged' or local-name()='screenTip'][last()]">
- <xsl:variable name="mdDimension" select="ancestor::*[local-name()='dimension'][1]/*[local-name()='definition']/*[local-name()='mdQuery']/*[local-name()='mdDimension']"/>
-
- <xsl:call-template name="myCopy"/>
-
- <xsl:element name="property">
- <xsl:attribute name="name">PPDS_CODE</xsl:attribute>
- <xsl:attribute name="type">hidden</xsl:attribute>
- <xsl:value-of select="concat('2', $mdDimension)"/>
- </xsl:element>
- </xsl:template>
-
- <xsl:template match="*[local-name()='dimension']/*[local-name()='hierarchy']/*[local-name()='name' or local-name()='description' or local-name()='lastChanged' or local-name()='screenTip'][last()]">
- <xsl:variable name="uniqueName" select="../*[local-name()='externalName']"/>
-
- <xsl:call-template name="myCopy"/>
- <xsl:call-template name="insertHierarchyType"/>
-
- <xsl:element name="property">
- <xsl:attribute name="name">PPDS_CODE</xsl:attribute>
- <xsl:attribute name="type">hidden</xsl:attribute>
- <xsl:value-of select="concat('4', $uniqueName)"/>
- </xsl:element>
- </xsl:template>
-
- <xsl:template match="*[local-name()='dimension']/*[local-name()='hierarchy']/*[local-name()='level']/*[local-name()='name' or local-name()='description' or local-name()='lastChanged' or local-name()='screenTip' or (local-name()='property' and @*[local-name()='name' and .='dimensionString'])][last()]">
- <xsl:variable name="uniqueName" select="../*[local-name()='externalName']"/>
-
- <xsl:call-template name="myCopy"/>
-
- <xsl:element name="property">
- <xsl:attribute name="name">PPDS_CODE</xsl:attribute>
- <xsl:attribute name="type">hidden</xsl:attribute>
- <xsl:value-of select="concat('5', $uniqueName)"/>
- </xsl:element>
- </xsl:template>
-
-
- <xsl:template name="insertHierarchyType">
- <xsl:variable name="dimension" select="ancestor::*[local-name()='dimension'][1]"/>
- <xsl:variable name="defaultHierarchy">
- <xsl:variable name="strNamespaceName" select="ancestor::*[local-name()='namespace'][1]/*[local-name()='name' and @*[local-name()='locale' and . = $defaultLocale]]"/>
- <xsl:variable name="strDimensionName" select="$dimension/*[local-name()='name' and @*[local-name()='locale' and . = $defaultLocale]]"/>
- <xsl:variable name="strHierarchyName" select="../*[local-name()='name' and @*[local-name()='locale' and . = $defaultLocale]]"/>
- <xsl:value-of select="concat('[', $strNamespaceName, '].[', $strDimensionName, '].[', $strHierarchyName, ']')"/>
- </xsl:variable>
- <xsl:variable name="hierarchy" select=".."/>
- <xsl:element name="property">
- <xsl:attribute name="name">hierarchyType</xsl:attribute>
- <xsl:attribute name="type">hidden</xsl:attribute>
- <xsl:variable name="dimensionString" select="concat('[', ../*[local-name()='level'][1]/*[local-name()='property' and @*[local-name()='name' and .='dimensionString']], ']')"/>
- <xsl:variable name="mdDimension" select="string(ancestor::*[local-name()='dimension'][1]/*[local-name()='definition']/*[local-name()='mdQuery']/*[local-name()='mdDimension'])"/>
- <xsl:choose>
- <xsl:when test="$dimension/*[local-name()='property' and @*[local-name()='name' and .='dimensionType'] and .='time']">time</xsl:when>
- <xsl:when test="$hierarchy/*[local-name()='property' and @*[local-name()='name' and .='defaultHierarchy'] and .='true']">default</xsl:when>
- <xsl:when test="$dimensionString = string('[0HIER_NODE]')">text</xsl:when>
- <xsl:when test="$dimensionString = $mdDimension">recursive</xsl:when>
- <xsl:otherwise>characteristic</xsl:otherwise>
- </xsl:choose>
- </xsl:element>
- </xsl:template>
-
-
- <xsl:template match="*[local-name()='queryItem']/*[local-name()='collationSequenceName']/text()">
-
- <xsl:variable name="strBalticValue" select="string(.)"/>
-
- <xsl:for-each select="$collationSequenceTable_root">
- <xsl:variable name="lookupValue" select="key('collationSequence_using_balticValue', $strBalticValue)/table:Bering"/>
- <xsl:choose>
- <xsl:when test="$lookupValue">
- <xsl:value-of select="$lookupValue"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="concat('EN_', $strBalticValue)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
- </xsl:template>
-
-
-
- <xsl:variable name="sEmptyNamespace" select="string(document('')/*/namespace::*[name()=''])"/>
- <xsl:variable name="nNewSchema" select="number(substring-before(substring-after($sEmptyNamespace, 'http://www.developer.cognos.com/schemas/bmt/'), '/'))"/>
- <xsl:variable name="nOldSchema" select="$nNewSchema - 1"/>
- <table:collationSequenceTable>
- <table:value>
- <table:Baltic>MS_SQL_Latin1_General_CP1_CI_AS</table:Baltic>
- <table:Bering>EN_MS_SQL_Latin1_General_CP1_AS_CI</table:Bering>
- </table:value>
- <table:value>
- <table:Baltic>MS_SQL_Latin1_General_CP1_CS_AS</table:Baltic>
- <table:Bering>EN_MS_SQL_Latin1_General_CP1_AS</table:Bering>
- </table:value>
- <table:value>
- <table:Baltic>TD_ASCII_CS</table:Baltic>
- <table:Bering>EN_TD_ASCII</table:Bering>
- </table:value>
- <table:value>
- <table:Baltic>TD_ASCII_NOT_CS</table:Baltic>
- <table:Bering>EN_TD_ASCII_CI</table:Bering>
- </table:value>
- <table:value>
- <table:Baltic>TD_EBCDIC_CS</table:Baltic>
- <table:Bering>EN_TD_EBCDIC</table:Bering>
- </table:value>
- <table:value>
- <table:Baltic>TD_EBCDIC_NOT_CS</table:Baltic>
- <table:Bering>EN_TD_EBCDIC_CI</table:Bering>
- </table:value>
- </table:collationSequenceTable>
- <xsl:key
- name="queryItems_using_qsID"
- match="*[local-name() = 'querySubject']/*[local-name()='definition']/*[local-name()='modelQuery']/*[local-name() = 'queryItems']/*"
- use="generate-id(ancestor::*[local-name() = 'querySubject'])"/>
- <xsl:key
- name="calcDefinition_using_qsID_columnName"
- match="*[local-name() = 'querySubject']/*[local-name() = 'definition']/*[local-name() = 'dbQuery' or local-name() = 'mdQuery']/*[local-name() = 'calculations']/*[local-name() = 'calculationDefinition']"
- use="concat(generate-id(ancestor::*[local-name() = 'querySubject']), '||', *[local-name()='dataItemName'])"/>
- <xsl:key
- name="queryItemNames_using_qsID"
- match="*[local-name() ='queryItem' and ancestor::*[local-name() = 'querySubject']]/*[local-name()='name' and @*[local-name()='locale' and translate(., string('ABCDEFGHIJKLMNOPQRSTUVWXYZ'), string('abcdefghijklmnopqrstuvwxyz')) = translate(/*[local-name()='project']/*[local-name()='defaultLocale'], string('ABCDEFGHIJKLMNOPQRSTUVWXYZ'), string('abcdefghijklmnopqrstuvwxyz'))]]"
- use="generate-id(ancestor::*[local-name() = 'querySubject'])"/>
- <xsl:key name="collationSequence_using_balticValue" match="table:value" use="table:Baltic"/>
- <xsl:variable name="collationSequenceTable_root" select="document('')/*/table:collationSequenceTable"/>
- </xsl:stylesheet>
|