<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="UTF-8" indent="yes"/>
<xsl:variable name="hochkomma"><xsl:text>'</xsl:text></xsl:variable>
<xsl:template match="/">
<xsl:text>&#xA;</xsl:text>	
<xsl:comment>Automatisch generiert von Edustore durch tabelle_xml_mondrian3.xsl </xsl:comment>
<xsl:text>&#xA;</xsl:text>	
<Schema name="SuperX">
<xsl:text>&#xA;</xsl:text>	
	<xsl:choose>
	<xsl:when test="/ergebnisse/ergebnis/ergebniselement/sqlerg/row/col[@id='0']/wert !=''">
	<xsl:for-each select="/ergebnisse/ergebnis/ergebniselement/sqlerg/row[col[f_name='is_fact_table_aggr_field']/wert='0']">
		<xsl:variable name="hasAll">
			<xsl:choose>
			<xsl:when test="col[f_name='is_summable']/wert = '0'">false</xsl:when>
			<xsl:otherwise>true</xsl:otherwise>
			</xsl:choose>
		</xsl:variable>
		<xsl:choose>
		<xsl:when test="col[f_name='foreignkey_tab']/wert !=''">
		<!-- mit Dim-Tabelle-->
		
		<Dimension caption="{col[f_name='fact_table_field_caption']/wert}" name="{col[f_name='fact_table_field_name']/wert}">
		<Hierarchy hasAll="{$hasAll}" primaryKey="{col[f_name='foreignkey_pk_col']/wert}" caption="{col[f_name='foreignkey_cap']/wert}" name="{concat(col[f_name='foreignkey_tab']/wert,'_',col[f_name='fact_table_field_name']/wert)}">
            <xsl:if test="$hasAll = 'true'"><xsl:attribute name="allMemberName">Insgesamt</xsl:attribute></xsl:if>
		<Table name="{col[f_name='foreignkey_tab']/wert}" alias="{col[f_name='foreignkey_tab']/wert}">
		<xsl:if test="col[f_name='foreignkey_cond']/wert != ''">
                <SQL><xsl:value-of select="col[f_name='foreignkey_cond']/wert"/></SQL>
		</xsl:if>
		</Table>
		<Level caption="{concat(col[f_name='fact_table_field_caption']/wert,' (Details)')}" name="{col[f_name='foreignkey_tab']/wert}_{col[f_name='fact_table_field_name']/wert}" 
		nameColumn="{col[f_name='foreignkey_name_col']/wert}" 
		column="{col[f_name='foreignkey_pk_col']/wert}" 
		ordinalColumn="{col[f_name='foreignkey_ordinal_col']/wert}"
                uniqueMembers="true" />

        </Hierarchy>
		
	
		</Dimension>
		</xsl:when>
		<xsl:otherwise>
		<!-- degenerate Dimension -->
		<Dimension caption="{col[f_name='fact_table_field_caption']/wert}" name="{col[f_name='fact_table_field_name']/wert}">
		<Hierarchy hasAll="{$hasAll}">
            <xsl:if test="$hasAll = 'true'"><xsl:attribute name="allMemberName">Insgesamt</xsl:attribute></xsl:if>
		<Level caption="{concat(col[f_name='fact_table_field_caption']/wert,' (Details)')}" name="{col[f_name='fact_table_field_name']/wert}" 
		column="{col[f_name='fact_table_field_name']/wert}" ordinalColumn="{col[f_name='fact_table_field_name']/wert}"   
                uniqueMembers="true" />

        </Hierarchy>
	</Dimension>
		</xsl:otherwise>
		</xsl:choose>
	</xsl:for-each>
	
<Cube name="{/ergebnisse/ergebnis/ergebniselement/sqlerg/row[@no='0']/col[f_name='fact_table_name']/wert}" caption="{/ergebnisse/ergebnis/ergebniselement/sqlerg/row[@no='0']/col[f_name='fact_table_caption']/wert}">
<Table name="{/ergebnisse/ergebnis/ergebniselement/sqlerg/row[@no='0']/col[f_name='fact_table_name']/wert}"/>
<xsl:for-each select="/ergebnisse/ergebnis/ergebniselement/sqlerg/row[col[f_name='is_fact_table_aggr_field']/wert='0']">
<DimensionUsage name="{concat('dim_',col[f_name='fact_table_field_name']/wert)}" source="{col[f_name='fact_table_field_name']/wert}" foreignKey="{col[f_name='fact_table_field_name']/wert}"/>
</xsl:for-each>
<xsl:for-each select="/ergebnisse/ergebnis/ergebniselement/sqlerg/row[col[f_name='is_fact_table_aggr_field']/wert='1']">
<Measure name="{col[f_name='fact_table_field_caption']/wert}" column="{col[f_name='fact_table_field_name']/wert}" aggregator="{col[f_name='fact_table_aggr_function']/wert}"/>
</xsl:for-each>
<!--
<Measure name="Anzahl (Köpfe)" aggregator="sum" formatString="#,###">
    <MeasureExpression>
    <SQL dialect="generic">
    (case when studiengang_nr=1 and fach_nr=1 then summe else 0 end) 
    </SQL>
    </MeasureExpression>
    </Measure>
-->
</Cube>
</xsl:when>
<xsl:otherwise>
<xsl:comment>No cubes found</xsl:comment>
</xsl:otherwise>
</xsl:choose>
</Schema>
</xsl:template>
<!--currently not used: remove .,' and = -->
<xsl:template name="escapeCondition">
<xsl:param name="wert" />
<xsl:variable name="ohnePunkt"><xsl:call-template name="escapePunkt"> 
<xsl:with-param name="wert" select="$wert"/>
</xsl:call-template></xsl:variable>
<xsl:value-of select="replace(replace($ohnePunkt,$hochkomma,'_'),'=','_')"/>
</xsl:template>
<xsl:template name="escapePunkt">
<xsl:param name="wert" />
<xsl:value-of select="concat(substring-before($wert,'.'),'_',substring-after($wert,'.'))" />
</xsl:template>
</xsl:stylesheet>