Index: webapp/WEB-INF/i18n/application.xml
===================================================================
--- webapp/WEB-INF/i18n/application.xml	(revision 33558)
+++ webapp/WEB-INF/i18n/application.xml	(working copy)
@@ -2327,4 +2327,8 @@
 	<!-- Catalogue -->
 	<message key="APPLICATION_ODF_CATALOG_2009_2013">Catalogue 2009-2013</message>
 	<message key="APPLICATION_ODF_CATALOG_2013_2017">Catalogue 2013-2017</message>
+	
+	<!-- InDesign export -->
+    <message key="APPLICATION_EXPORT_CATALOG_INDESIGN_DEFAULT_XSLT_LABEL">Par défaut</message>  
+    <message key="APPLICATION_EXPORT_PROGRAM_INDESIGN_DEFAULT_XSLT_LABEL">Par défaut</message> 
 </catalogue>
\ No newline at end of file
Index: webapp/WEB-INF/i18n/application_en.xml
===================================================================
--- webapp/WEB-INF/i18n/application_en.xml	(revision 33558)
+++ webapp/WEB-INF/i18n/application_en.xml	(working copy)
@@ -2243,4 +2243,8 @@
 	<!-- Catalogue -->
 	<message key="APPLICATION_ODF_CATALOG_2009_2013">Catalogue 2009-2013</message>
 	<message key="APPLICATION_ODF_CATALOG_2013_2017">Catalogue 2013-2017</message>
+	
+	<!-- InDesign export -->
+    <message key="APPLICATION_EXPORT_CATALOG_INDESIGN_DEFAULT_XSLT_LABEL">Default</message>  
+    <message key="APPLICATION_EXPORT_PROGRAM_INDESIGN_DEFAULT_XSLT_LABEL">Default</message>
 </catalogue>
\ No newline at end of file
Index: webapp/WEB-INF/param/cms-ribbon.xml
===================================================================
--- webapp/WEB-INF/param/cms-ribbon.xml	(revision 33558)
+++ webapp/WEB-INF/param/cms-ribbon.xml	(working copy)
@@ -19,7 +19,7 @@
 
 	<tabs>
 		<!-- ODF -->
-		<import>plugin:odf-sync://cms-ribbon-apogee.xml</import>
+		<import>plugin:odf-sync://cms-ribbon-cdmfr-global.xml</import>
 		
 		<tab label="RIBBON_TABS_TAB_RIGHTS_HANDLE_LABEL">
 			<groups>
Index: webapp/WEB-INF/stylesheets/indesign/catalogue/catalogue2indesign.xml
===================================================================
--- webapp/WEB-INF/stylesheets/indesign/catalogue/catalogue2indesign.xml	(revision 0)
+++ webapp/WEB-INF/stylesheets/indesign/catalogue/catalogue2indesign.xml	(revision 0)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Copyright 2015 Anyware Services
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<indesign>
+    <label i18n="true">APPLICATION_EXPORT_CATALOG_INDESIGN_DEFAULT_XSLT_LABEL</label>
+</indesign>
\ No newline at end of file
Index: webapp/WEB-INF/stylesheets/indesign/catalogue/catalogue2indesign.xsl
===================================================================
--- webapp/WEB-INF/stylesheets/indesign/catalogue/catalogue2indesign.xsl	(revision 0)
+++ webapp/WEB-INF/stylesheets/indesign/catalogue/catalogue2indesign.xsl	(revision 0)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Copyright 2015 Anyware Services
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+    
+    <xsl:template match="/programs">
+        <catalogue nom="{catalog}">
+            <xsl:for-each select="program">
+                <formation>
+                    <xsl:copy-of select="Root"/>
+                </formation>
+            </xsl:for-each>
+        </catalogue>
+    </xsl:template>
+    
+</xsl:stylesheet>
\ No newline at end of file
Index: webapp/WEB-INF/stylesheets/indesign/program2indesign.xml
===================================================================
--- webapp/WEB-INF/stylesheets/indesign/program2indesign.xml	(revision 0)
+++ webapp/WEB-INF/stylesheets/indesign/program2indesign.xml	(revision 0)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Copyright 2015 Anyware Services
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<indesign>
+    <label i18n="true">APPLICATION_EXPORT_PROGRAM_INDESIGN_DEFAULT_XSLT_LABEL</label>
+</indesign>
\ No newline at end of file
Index: webapp/WEB-INF/stylesheets/indesign/program2indesign.xsl
===================================================================
--- webapp/WEB-INF/stylesheets/indesign/program2indesign.xsl	(revision 0)
+++ webapp/WEB-INF/stylesheets/indesign/program2indesign.xsl	(revision 0)
@@ -0,0 +1,391 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Copyright 2015 Anyware Services
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<xsl:stylesheet version="1.0"
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"
+                xmlns:aid5="http://ns.adobe.com/AdobeInDesign/5.0/"
+                xmlns:docbook="http://docbook.org/ns/docbook"
+                xmlns:xalan="http://xml.apache.org/xalan"
+                xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
+                xmlns:cms="http://ametys.org/cms/3.0"
+                xmlns:date="http://exslt.org/dates-and-times"
+                xmlns:decoder="org.ametys.cms.transformation.xslt.URIDecoder" 
+                exclude-result-prefixes="docbook decoder">
+    
+    <xsl:import href="view://stylesheets/utils.xsl"/>
+    <xsl:import href="plugin:odf://stylesheets/indesign/common.xsl"/>
+                
+    <xsl:template match="/view/content">
+        <Root>
+            <xsl:call-template name="Header"/>
+            <xsl:call-template name="BlocKeywords"/>
+            <xsl:call-template name="BlocInfo"/>
+            <xsl:call-template name="TextContent"/>
+            <xsl:call-template name="BlocTable"/>
+            <xsl:call-template name="BlocContact"/>
+            <xsl:call-template name="BlocStatistics"/>
+        </Root>
+    </xsl:template>
+    
+    <xsl:template name="Header">
+         <xsl:call-template name="BlocTitle"/>
+         <xsl:call-template name="BlocDegreeDomain"/>
+         <xsl:call-template name="BlocMention"/>
+    </xsl:template>
+    
+    <xsl:template name="TextContent">
+        <BlocText>
+            <xsl:call-template name="BlocPresentation"/>
+            <xsl:call-template name="BlocAccessCondition"/>
+            <xsl:call-template name="BlocPrerequisite"/>
+            <xsl:call-template name="BlocTeachingOrganisation"/>
+            <xsl:call-template name="BlocQualification"/>
+            <xsl:call-template name="BlocFurther"/>
+        </BlocText>
+    </xsl:template>
+    
+    <xsl:template name="BlocKeywords">
+        <BlocKeywords>
+            <keywords aid:pstyle="SPKeywords">
+                <xsl:for-each select="metadata/keywords">#<xsl:value-of select="."/><xsl:if test="position() != last()"><xsl:text>, </xsl:text></xsl:if></xsl:for-each>
+            </keywords>
+        </BlocKeywords>
+    </xsl:template>
+    
+    <xsl:template name="BlocInfo">
+        <BlocInfo>
+            <!-- Nombre de crédits ECTS -->
+            <xsl:call-template name="ects"/>
+            <!-- Durée -->
+            <xsl:call-template name="duration"/>
+            <!-- Niveau d'étude -->
+            <xsl:call-template name="educationLevel"/>
+            <!-- Public concerné (formation initiale, continue, ...) -->
+            <xsl:call-template name="formOfTeachingOrg"/>
+            <!-- Langue d'enseignement -->
+            <xsl:call-template name="educationLanguage"/>
+        </BlocInfo>
+    </xsl:template>
+    
+    <xsl:template name="BlocContact">
+        <BlocContact>
+            <xsl:call-template name="BlocOrgUnit"/>
+            
+            <contact aid:pstyle="SPContact">
+                <xsl:if test="contact/content/content">
+                    <gras aid:cstyle="SCGras"><i18n:text i18n:key="PLUGINS_ODF_EXPORT_INDESIGN_CONTACT" i18n:catalogue="plugin.odf"/></gras><xsl:value-of select="$nl"/>
+                    <xsl:apply-templates select="contact/content/content" mode="contact"/>
+                </xsl:if>
+                <xsl:if test="personInCharge/content/content">
+                    <gras aid:cstyle="SCGras"><i18n:text i18n:key="PLUGINS_ODF_EXPORT_INDESIGN_PERSON_IN_CHARGE" i18n:catalogue="plugin.odf"/></gras><xsl:value-of select="$nl"/>
+                    <xsl:apply-templates select="personInCharge/content/content" mode="contact"/>
+                </xsl:if>
+            </contact>
+            
+            <!-- Lieux de la formation -->
+            <xsl:if test="metadata/place">
+                <place aid:pstyle="SPPlace">
+                    <gras aid:cstyle="SCGras"><i18n:text i18n:key="PLUGINS_ODF_EXPORT_INDESIGN_PLACE" i18n:catalogue="plugin.odf"/><xsl:value-of select="$nl"/></gras>
+                    <xsl:for-each select="metadata/place">
+                        <xsl:if test="position() &gt; 1">, </xsl:if><xsl:value-of select="."/>
+                    </xsl:for-each>
+                </place>
+            </xsl:if>
+        </BlocContact>
+    </xsl:template>
+    
+    <xsl:template name="BlocTitle">
+        <BlocTitle aid:pstyle="SPTitle"><xsl:value-of select="metadata/title"/></BlocTitle>
+    </xsl:template>
+    
+    <xsl:template name="BlocDegreeDomain">
+        <BlocDegreeDomain>
+            <degree aid:pstyle="SPDegree">
+                <xsl:value-of select="metadata/degree"/>
+            </degree>
+            <domain aid:pstyle="SPDomain">
+                <xsl:value-of select="metadata/domain"/>
+            </domain>
+        </BlocDegreeDomain>
+    </xsl:template>
+    
+    <xsl:template name="BlocMention">
+        <BlocMention>
+            <mention aid:pstyle="SPMention"><xsl:value-of select="metadata/mention"/></mention>
+        </BlocMention>
+    </xsl:template>  
+    
+    <xsl:template name="BlocSpeciality">
+        <BlocSpeciality>
+            <speciality aid:pstyle="SPSpeciality"><xsl:value-of select="metadata/speciality"/></speciality>
+        </BlocSpeciality>
+    </xsl:template>  
+    
+    <xsl:template name="BlocOrgUnit">
+        <orgUnit aid:pstyle="SPOrgUnit">
+            <orgUnitTitle aid:pstyle="orgUnitTitle"><xsl:value-of select="orgunits/orgunit/content/content/metadata/title"/></orgUnitTitle><xsl:value-of select="$nl"/>
+            <orgUnitAcronym><xsl:value-of select="orgunits/orgunit/content/content/metadata/acronym"/></orgUnitAcronym><xsl:value-of select="$nl"/>
+            <orgUnitAdresse aid:pstyle="orgUnitTitleAdresse">A completer : NOM BATIMENT</orgUnitAdresse><xsl:value-of select="$nl"/>
+            <orgUnitUrl><xsl:value-of select="orgunits/orgunit/content/content/metadata/webLinkUrl"/></orgUnitUrl>
+        </orgUnit><xsl:value-of select="$nl"/>
+    </xsl:template>     
+    
+    <!-- Présentation et objectifs -->
+    <xsl:template name="BlocPresentation">
+        <presentation aid:pstyle="SPPresentation">
+            <presentationTitre aid:pstyle="SPPresentationTitre"><i18n:text i18n:key="PLUGINS_ODF_EXPORT_INDESIGN_PRESENTATION_TITLE" i18n:catalogue="plugin.odf"/><xsl:value-of select="$nl"/></presentationTitre>
+            <presentationTexte aid:pstyle="SPPresentationTexte">
+                <xsl:if test="cms:isNotRichTextEmpty(metadata/presentation)">
+                    <xsl:apply-templates select="metadata/presentation/docbook:article"/>
+                </xsl:if>
+                <xsl:value-of select="$nl"/>
+                <xsl:if test="cms:isNotRichTextEmpty(metadata/objectives)">
+                    <xsl:apply-templates select="metadata/objectives/docbook:article"/>
+                </xsl:if>
+            </presentationTexte>
+        </presentation>
+    </xsl:template> 
+    
+    <!-- Organisation de la formation -->
+    <xsl:template name="BlocTeachingOrganisation">
+        <teachingOrganization aid:pstyle="SPTeachingOrganization">
+            <teachingOrganizationTitre aid:pstyle="SPTeachingOrganizationTitre"><i18n:text i18n:key="PLUGINS_ODF_EXPORT_INDESIGN_TEACHING_ORGANISATION_TITLE" i18n:catalogue="plugin.odf"/><xsl:value-of select="$nl"/></teachingOrganizationTitre>
+            <teachingOrganizationTexte aid:pstyle="SPTeachingOrganizationText">
+                <xsl:if test="cms:isNotRichTextEmpty(metadata/teachingOrganization)">
+                    <xsl:apply-templates select="metadata/teachingOrganization/docbook:article"/>
+                </xsl:if>
+            </teachingOrganizationTexte>
+        </teachingOrganization>
+    </xsl:template> 
+    
+    <!-- Condition d'accès et public cible -->
+    <xsl:template name="BlocAccessCondition">
+        <accessCondition aid:pstyle="SPAccessCondition">
+            <accessConditionTitre aid:pstyle="SPAccessConditionTitre"><i18n:text i18n:key="PLUGINS_ODF_EXPORT_INDESIGN_ACCESS_CONDITION_TITLE" i18n:catalogue="plugin.odf"/><xsl:value-of select="$nl"/></accessConditionTitre>
+            <accessConditionTexte aid:pstyle="SPAccessConditionTexte">
+                <xsl:if test="cms:isNotRichTextEmpty(metadata/accessCondition)">
+                    <xsl:apply-templates select="metadata/accessCondition/docbook:article"/>
+                </xsl:if>
+                <xsl:value-of select="$nl"/>
+                <xsl:if test="cms:isNotRichTextEmpty(metadata/targetGroup)">
+                    <xsl:apply-templates select="metadata/targetGroup/docbook:article"/>
+                </xsl:if>
+            </accessConditionTexte>
+        </accessCondition>
+    </xsl:template>
+    
+    <!-- Débouchés, poursuite d'études -->
+    <xsl:template name="BlocFurther">
+        <further aid:pstyle="SPFurther">
+            <furtherTitre aid:pstyle="SPFurtherTitre"><i18n:text i18n:key="PLUGINS_ODF_EXPORT_INDESIGN_FURTHER_TITLE" i18n:catalogue="plugin.odf"/><xsl:value-of select="$nl"/></furtherTitre>
+            <furtherTexte aid:pstyle="SPFurtherTexte">
+                <xsl:if test="cms:isNotRichTextEmpty(metadata/furtherStudy)">
+                    <xsl:apply-templates select="metadata/furtherStudy/docbook:article"/><xsl:value-of select="$nl"/><xsl:value-of select="$nl"/>
+                </xsl:if>
+                <xsl:if test="cms:isNotRichTextEmpty(metadata/studyAbroad)">
+                    <xsl:apply-templates select="metadata/studyAbroad/docbook:article"/><xsl:value-of select="$nl"/><xsl:value-of select="$nl"/>
+                </xsl:if>
+                <xsl:if test="cms:isNotRichTextEmpty(metadata/jobOpportunities)">
+                    <xsl:apply-templates select="metadata/jobOpportunities/docbook:article"/><xsl:value-of select="$nl"/><xsl:value-of select="$nl"/>
+                </xsl:if>
+                <xsl:if test="cms:isNotRichTextEmpty(metadata/reorientation)">
+                    <xsl:apply-templates select="metadata/reorientation/docbook:article"/><xsl:value-of select="$nl"/><xsl:value-of select="$nl"/>
+                </xsl:if>
+                
+                <!-- Référenciels ROME -->
+                <xsl:if test="metadata/romeCode/@value">
+                    <gras aid:cstyle="SCGras"><i18n:text i18n:key="PLUGINS_ODF_EXPORT_INDESIGN_ROME_CODE" i18n:catalogue="plugin.odf"/></gras><xsl:value-of select="$nl"/>
+                    <puce aid:pstyle="SPPuce">
+                        <xsl:for-each select="metadata/romeCode">
+                            <xsl:value-of select="concat(@value, ': ', text())"/><xsl:value-of select="$nl"/>
+                        </xsl:for-each>
+                    </puce>
+                </xsl:if>    
+            </furtherTexte>
+        </further>
+    </xsl:template>
+    
+    <!-- Pré-requis-->
+    <xsl:template name="BlocPrerequisite">
+        <prerequisite aid:pstyle="SPPrerequisite">
+            <prerequisiteTitre aid:pstyle="SPPrerequisiteTitre"><i18n:text i18n:key="PLUGINS_ODF_EXPORT_INDESIGN_PREREQUISITE_TITLE" i18n:catalogue="plugin.odf"/><xsl:value-of select="$nl"/></prerequisiteTitre>
+            <prerequisiteTexte aid:pstyle="SPPrerequisiteTexte">
+                <xsl:if test="cms:isNotRichTextEmpty(metadata/neededPrerequisite)">
+                    <xsl:apply-templates select="metadata/neededPrerequisite/docbook:article"/><xsl:value-of select="$nl"/><xsl:value-of select="$nl"/>
+                </xsl:if>
+                <xsl:if test="cms:isNotRichTextEmpty(metadata/recommendedPrerequisite)">
+                    <xsl:apply-templates select="metadata/recommendedPrerequisite/docbook:article"/>
+                </xsl:if>
+            </prerequisiteTexte>
+        </prerequisite>
+    </xsl:template>
+    
+    <!-- Savoir-faire et compétence -->
+    <xsl:template name="BlocQualification">
+        <qualification aid:pstyle="SPQualification">
+            <qualificationTitre aid:pstyle="SPQualificationTitre"><i18n:text i18n:key="PLUGINS_ODF_EXPORT_INDESIGN_QUALIFICATION_TITLE" i18n:catalogue="plugin.odf"/><xsl:value-of select="$nl"/></qualificationTitre>
+            <qualificationTexte aid:pstyle="SPQualificationTexte">
+                <xsl:if test="cms:isNotRichTextEmpty(metadata/qualification)">
+                    <xsl:apply-templates select="metadata/qualification/docbook:article"/>
+                </xsl:if>
+            </qualificationTexte>
+        </qualification>
+    </xsl:template>
+    
+    <xsl:template name="BlocStatistics">
+        <BlocStatistics>
+            <xsl:if test="normalize-space(metadata/successRate) != ''">
+                <successRate aid:pstyle="SPSuccessRate"><xsl:value-of select="metadata/successRate"/></successRate>
+            </xsl:if>
+        </BlocStatistics>
+    </xsl:template>
+    
+    <xsl:template name="ects">
+        <xsl:if test="metadata/ects != '' and metadata/ects != '0'"><xsl:value-of select="metadata/ects"/><i18n:text i18n:key="PLUGINS_ODF_EXPORT_INDESIGN_ECTS" i18n:catalogue="plugin.odf"/><xsl:value-of select="$nl"/></xsl:if>
+    </xsl:template>
+    
+    <xsl:template name="duration">
+        <xsl:if test="normalize-space(metadata/duration) != ''">
+            <gras aid:cstyle="SCGras"><xsl:text>Durée :</xsl:text></gras><xsl:text> </xsl:text><xsl:value-of select="metadata/duration"/><xsl:value-of select="$nl"/>
+        </xsl:if>
+    </xsl:template>
+    
+    <xsl:template name="educationLanguage">
+        <xsl:if test="normalize-space(metadata/educationLanguage) != ''">
+            <gras aid:cstyle="SCGras"><i18n:text i18n:key="PLUGINS_ODF_EXPORT_INDESIGN_EDUCATION_LANGUAGE" i18n:catalogue="plugin.odf"/></gras><xsl:text> </xsl:text><xsl:value-of select="metadata/educationLanguage"/><xsl:value-of select="$nl"/>
+        </xsl:if>
+    </xsl:template>
+    
+    <xsl:template name="educationLevel">
+        <xsl:if test="normalize-space(metadata/educationLevel) != ''">
+            <gras aid:cstyle="SCGras"><i18n:text i18n:key="PLUGINS_ODF_EXPORT_INDESIGN_EDUCATION_LEVEL" i18n:catalogue="plugin.odf"/></gras><xsl:text> </xsl:text><xsl:value-of select="metadata/educationLevel"/><xsl:value-of select="$nl"/>
+        </xsl:if>
+    </xsl:template>
+    
+    <xsl:template name="formOfTeachingOrg">
+        <xsl:if test="metadata/formofteachingOrg[@value]">
+            <puce aid:pstyle="SPCase">
+                <xsl:for-each select="metadata/formofteachingOrg[@value]">
+                    <xsl:value-of select="."/><xsl:value-of select="$nl"/>
+                </xsl:for-each>
+            </puce><xsl:value-of select="$nl"/>
+        </xsl:if>
+    </xsl:template>
+    
+    <xsl:template name="BlocTable">
+        <BlocTable>
+            <Program>
+                <xsl:for-each select="subprogram/content/content|container">
+                    <xsl:variable name="position" select="position()"/>
+                    <xsl:choose>
+                        <xsl:when test="courseList">
+                            <!-- Final bloc -->
+                            <xsl:apply-templates select="." mode="table"/>
+                        </xsl:when>
+                        <xsl:otherwise>
+                            <xsl:apply-templates select="." mode="table-header">
+                                <xsl:with-param name="level" select="1"/>
+                                <xsl:with-param name="position" select="$position"/>
+                            </xsl:apply-templates>
+                        </xsl:otherwise>
+                    </xsl:choose>
+                </xsl:for-each>
+            </Program>
+        </BlocTable>
+    </xsl:template>
+    
+    <xsl:template match="content|container" mode="table-header">
+        <xsl:param name="level">1</xsl:param>
+        <xsl:param name="position">1</xsl:param>
+        
+        <xsl:element name="BlocTable{$position}H{$level}">
+            <xsl:attribute name="aid:pstyle">SPTableTitre<xsl:value-of select="$level"/></xsl:attribute>
+            <xsl:value-of select="@title"/>
+        </xsl:element><xsl:value-of select="$nl"/>
+        
+        <xsl:for-each select="subprogram/content/content|container">
+            <xsl:variable name="sposition" select="position()"/>
+            <xsl:choose>
+                <xsl:when test="courseList or $level = 3">
+                    <xsl:apply-templates select="." mode="table"/>
+                </xsl:when>
+                <xsl:otherwise>
+                    <xsl:apply-templates select="." mode="table-header">
+                        <xsl:with-param name="level" select="$level + 1"/>
+                        <xsl:with-param name="position" select="$sposition"/>
+                    </xsl:apply-templates>
+                </xsl:otherwise>
+            </xsl:choose>
+        </xsl:for-each>
+    </xsl:template>
+    
+    <xsl:template match="content|container" mode="table">
+        <xsl:element name="ProgrammeS{count(preceding::courseList[count(ancestor::courseList) = 0]) + 1}">
+            <xsl:attribute name="aid5:tablestyle">STASemestre</xsl:attribute>
+            <xsl:attribute name="aid:table">table</xsl:attribute>
+            <xsl:attribute name="aid:trows"><xsl:value-of select="count(courseList/course) + 2" /></xsl:attribute>
+            <xsl:attribute name="aid:tcols">4</xsl:attribute>
+            
+            <Cellule aid5:cellstyle="SCETitre3" aid:table="cell" aid:crows="1" aid:ccols="4" aid:theader="">
+                <xsl:value-of select="@title"/>
+            </Cellule>
+            
+            <!-- Liste d'UE de 1er niveau uniquement -->
+            <xsl:apply-templates select=".//courseList[count(ancestor::courseList) = 0]"/>
+        </xsl:element>
+        <xsl:value-of select="$nl" />
+        <!-- <xsl:value-of select="$sautdebloc" /> -->
+    </xsl:template>
+    
+    <xsl:template match="courseList">
+        <Cellule aid5:cellstyle="SCETitreCL" aid:table="cell" aid:crows="1" aid:ccols="2">
+            <xsl:value-of select="@title"/>
+        </Cellule>
+        <Cellule aid5:cellstyle="SCETitreHours" aid:table="cell" aid:crows="1" aid:ccols="1">Heures</Cellule> 
+        <Cellule aid5:cellstyle="SCETitreECTS" aid:table="cell" aid:crows="1" aid:ccols="1">ECTS</Cellule> 
+        
+        <xsl:apply-templates select="course"/>      
+    </xsl:template>
+    
+    <xsl:template match="course">
+        <Cellule aid5:cellstyle="SCECelluleEntete0" aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="50"><xsl:text>UE</xsl:text><xsl:value-of select="position()"/></Cellule>
+        <Cellule aid5:cellstyle="SCECelluleEntete1" aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="350">
+            <gras aid:cstyle="SCGras"><xsl:value-of select="@title"/></gras>
+            <xsl:if test="courseList/course">
+                <xsl:value-of select="$nl"/>
+                <xsl:for-each select="courseList/course">
+                    <xsl:value-of select="@title"/><xsl:value-of select="$nl"/>
+                </xsl:for-each>
+            </xsl:if>
+        </Cellule>
+        <Cellule aid5:cellstyle="SCECelluleEntete2" aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="60">
+            <xsl:call-template name="course-hours"/>
+        </Cellule>
+        <Cellule aid5:cellstyle="SCECelluleEntete3" aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="60">
+            <xsl:call-template name="course-ects"/>
+        </Cellule>
+    </xsl:template>
+    
+    <xsl:template name="course-hours">
+        <xsl:if test="normalize-space(metadata/nbHours) != ''"><xsl:value-of select="metadata/nbHours"/></xsl:if>
+    </xsl:template>
+    
+    <xsl:template name="course-ects">
+        <xsl:if test="normalize-space(metadata/ects) != ''"><xsl:value-of select="metadata/ects"/></xsl:if>
+    </xsl:template>
+    
+</xsl:stylesheet>
\ No newline at end of file
