<?xml version="1.0" encoding="ISO-8859-1"?>

<!-- program.v01.xsl contient tous les templates d'affichage des informations d'un programme (balise program) de CDM-fr v2 -->

<xsl:stylesheet version="1.0"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	exclude-result-prefixes="xsl xhtml"
	xmlns="http://www.w3.org/1999/xhtml"
	xmlns:xhtml="http://www.w3.org/1999/xhtml"
	xmlns:fo="http://www.w3.org/1999/XSL/Format">
	
	<!-- Identifiant ROF -->
	<xsl:template name="tProgramProgramID">
		<xsl:apply-templates select="key('objet',$idP)/programID"/>
	</xsl:template>
	<!-- Langue du programme -->
	<xsl:template name="tProgramPpalTeachingLanguage">
		<xsl:if test="key('objet',$idP)/ppalTeachingLanguage/@teachingLang"><li><xsl:call-template name="tCommunGestionLibelle"><xsl:with-param name="pIdent" select="'libTeachingLanguage'"/></xsl:call-template><xsl:value-of select="key('objet',$idP)/ppalTeachingLanguage"/></li></xsl:if>
	</xsl:template>
	<!-- Page web externe de la formation href+linkName-->
	<xsl:template name="tProgramWebLink">
		<xsl:apply-templates select="key('objet',$idP)/webLink" mode="enSavoirPlus"/>
	</xsl:template>
	<xsl:template match="programDescription/globalVolume">
		<!--div><xsl:value-of select="@teachingtype"/> : <xsl:value-of select="text()"/></div-->
	</xsl:template>

	<!-- Page web externe de la formation -->
	<xsl:template name="tProgramWebLinkHref">
		<xsl:apply-templates select="key('objet',$idP)/webLink/href"/>
	</xsl:template>
	
	<!-- Intitulé communication dans ROF -->
	<xsl:template name="tProgramProgramName">
		<xsl:apply-templates select="key('objet',$idP)/programName/text"/>
	</xsl:template>
	
	<xsl:template name="tProgramProgramCode">
		<xsl:param name="pCodeSet"/>
		<!-- Valeurs possibles: sectDGESIP sectDiscipSISE codeCNIS-NSF cite97 régimeInscriptionSise ERASMUS FAP userDefined -->
		<xsl:if test="not($pCodeSet='')">
			<xsl:apply-templates select="key('objet',$idP)/programCode[@codeSet=$pCodeSet]"/>
		</xsl:if>
	</xsl:template>
	<xsl:template match="programDescription/researchLink">
		<h3><xsl:call-template name="tCommunGestionLibelle"><xsl:with-param name="pIdent" select="'libLiaisonRecherche'"/></xsl:call-template></h3>
		<xsl:if test="relatedOrgUnit">
			<ul>
				<xsl:apply-templates select="relatedOrgUnit"/>
			</ul>
		</xsl:if>
	</xsl:template>
	<xsl:template match="programDescription/researchLink/relatedOrgUnit">
		<li><xsl:value-of select="relationType"/> : <xsl:value-of select="key('objet',refOrgUnit/@ref)/orgUnitName"/></li>
	</xsl:template>
	<!-- Descriptif de la donnée "Contenus et types d'enseignement" dans ROF -->
	<xsl:template name="tProgramProgramDescriptionInfoBlock">
		<xsl:apply-templates select="key('objet',$idP)/programDescription/infoBlock"/>
	</xsl:template>
	<!-- Descriptif de la donnée "Contenus et types d'enseignement" dans ROF -->
	<xsl:template name="tProgramProgramDescription">
		<xsl:apply-templates select="key('objet',$idP)/programDescription"/>
	</xsl:template>
	<!-- méthodes d'enseignements -->
	<xsl:template name="tProgramFormOfTeaching">
		<xsl:apply-templates select="key('objet',$idP)/formOfTeaching"/>
	</xsl:template>
	<!--  Membres de l'équipe pédagogique -->
	<xsl:template name="tProgramProgramDescriptionTeachingTeamInfoBlock">
		<xsl:apply-templates select="key('objet',$idP)/programDescription/teachingTeam/infoBlock"/>
	</xsl:template>
	
	<!-- Volume horaire global de CM, de TP, de TD, durée du stage, volume global professionnel (hors stage) -->
	<xsl:template name="tProgramProgramDescriptionTeachingTeamGlobalVolume">
		<xsl:param name="pTeachingTypeSet"/>
		<!-- Valeurs possibles: CM, TD, TP, trainingWeeks, professTraining, homeWork, all -->
		<xsl:if test="not($pTeachingTypeSet='')">
			<xsl:apply-templates select="key('objet',$idP)/programDescription/teachingTeam/globalVolume[@teachingtype=$pTeachingTypeSet]"/>
		</xsl:if>
	</xsl:template>
	
	<!-- Nature de l'objet ROF -->
	<xsl:template name="tProgramProgramDescriptionNature">
		<xsl:apply-templates select="key('objet',$idP)/programDescription/@nature"/>
	</xsl:template>
	
	<!-- Descriptif de la donnée "Conditions d'accès à la certification" dans ROF -->
	<xsl:template name="tProgramQualificationQualificationDescription">
		<xsl:apply-templates select="key('objet',$idP)/qualification/qualificationDescription/infoBlock"/>
	</xsl:template>
	
	<!-- Descriptif de la donnée "Compétences à acquérir [publication]" dans ROF -->
	<xsl:template name="tProgramQualificationStudyQualificationInfoBlock">
		<xsl:apply-templates select="key('objet',$idP)/qualification/studyQualification"/>
	</xsl:template>
	
	<!-- Descriptif de la donnée "Débouchés [publication]" dans ROF -->
	<xsl:template name="tProgramQualificationProfession">
		<xsl:apply-templates select="key('objet',$idP)/qualification/profession/infoBlock"/>
	</xsl:template>
	
	<!-- Descriptif des données "Connaissances scientifiques à acquérir [publication]" ou "Objectifs du programme [publication]" dans ROF -->
	<xsl:template name="tProgramLearningObjectives">
		<xsl:apply-templates select="key('objet',$idP)/learningObjectives"/>
	</xsl:template>
	
	<!-- Nombre de crédits européens -->
	<xsl:template name="tProgramQualificationCredits">
		<xsl:if test="key('objet',$idP)/qualification/credits/@ECTScredits">
			<li><xsl:call-template name="tCommunGestionLibelle"><xsl:with-param name="pIdent" select="'libNbCreditsPrepares'"/><xsl:with-param name="idDoc" select="'qualification/credits/@credits'"/></xsl:call-template>
		<xsl:value-of select="key('objet',$idP)/qualification/credits/@ECTScredits"/></li>
		</xsl:if>
	</xsl:template>
	
	<!-- Identifiant du Type de diplôme par exemple : licencePro -->
	<xsl:template name="tProgramQualificationDegree">
		<xsl:value-of select="key('objet',$idP)/qualification/degree/@degree"/>
	</xsl:template>
	
	<!-- Identifiant du Type de diplôme par exemple : licencePro suivi du texte libre-->
	<xsl:template name="tProgramQualificationDegreeWithText">
		<xsl:value-of select="key('objet',$_oid)/qualification/degree/@degree"/> [<xsl:apply-templates select="key('objet',$_oid)/qualification/degree/text() | key('objet',$_oid)/qualification/degree/*"/>]
	</xsl:template>
	
	<!-- Libellé du Type de diplôme par exemple : Licence Professionnelle -->
	<xsl:template  match="qualification/degree/text()" name="tProgramQualificationDegreeInfoBlockType">
		<xsl:value-of select="key('objet',$_oid)/qualification/degree"/>
	</xsl:template>
	
	<!-- Liste des codes ROME -->
	<xsl:template name="tProgramQualificationProfessionRomeData">
		<xsl:if test="count(key('objet',$idP)/qualification/profession/romeData/text/node()) &gt;0 ">
			<ul>
				<xsl:for-each select="key('objet',$idP)/qualification/profession/romeData/text">
					<li>
						<xsl:value-of select="."/>
					</li>
				</xsl:for-each>
			</ul>
		</xsl:if>
	</xsl:template>
	
	<!-- Liste des codes ROME adapté pour l'affichage PDF -->
	<xsl:template name="tProgramQualificationProfessionRomeDataPdf">
		<fo:list-block>	
			<xsl:for-each select="key('objet',$idP)/qualification/profession/romeData/text">
				<fo:list-item>
					<fo:list-item-label><fo:block>&#x2022;</fo:block></fo:list-item-label>
					<fo:list-item-body start-indent="4pt">
						<fo:block>
							<xsl:value-of select="."/>
						</fo:block>
					</fo:list-item-body>
				</fo:list-item>		
			</xsl:for-each>
		</fo:list-block>	
	</xsl:template>
	
	<!-- Descriptif de la donnée "Relations et échanges internationaux [publication]" dans ROF -->
	<xsl:template name="tProgramStudyAbroad">
		<xsl:apply-templates select="key('objet',$idP)/studyAbroad"/>
	</xsl:template>
	
	<xsl:template name="tProgramStudyAbroadPdf">
		<fo:list-block>
			<xsl:for-each select="key('objet',$idP)/studyAbroad">
				<fo:list-item>
					<fo:list-item-label><fo:block>&#x2022;</fo:block></fo:list-item-label>
					<fo:list-item-body start-indent="4pt">
						<fo:block>
							<xsl:apply-templates select="node()"/>
						</fo:block>
					</fo:list-item-body>
				</fo:list-item>	
			</xsl:for-each>
		</fo:list-block>
	</xsl:template>

	<!-- Descriptif de la donnée "Description" pour les objets "composants de programme" dans ROF -->
	<xsl:template name="tProgramProgramIntroduction">
		<xsl:apply-templates select="key('objet',$idP)/programIntroduction"/>
	</xsl:template>
	


	
	<!-- Descriptif de la donnée "Adaptation des cursus et des méthodes d'enseignement [publication]" dans ROF -->
	<xsl:template name="tProgramUniversalAdjustment">
		<xsl:apply-templates select="key('objet',$idP)/universalAdjustment"/>
	</xsl:template>
	
	<!-- Descriptif de la donnée "Conditions d'admission [publication]" dans ROF -->
	<xsl:template name="tProgramAdmissionInfoAdmissionDescription">
		<xsl:apply-templates select="key('objet',$idP)/admissionInfo/admissionDescription"/>
	</xsl:template>

	<!-- Descriptif de la donnée "Capacité d'accueil" dans ROF -->
	<xsl:template name="tProgramAdmissionInfoStudentPlaces">
		<xsl:if test="key('objet',$idP)/admissionInfo/studentPlaces/@places"><li><xsl:call-template name="tCommunGestionLibelle"><xsl:with-param name="pIdent" select="'libNbPlaces'"/></xsl:call-template><xsl:value-of select="key('objet',$idP)/admissionInfo/studentPlaces/@places"/></li></xsl:if>
	</xsl:template>
	
	<xsl:template name="tProgramAdmissionInfoRegistrationStartDate">
		<xsl:if test="key('objet',$idP)/admissionInfo/registrationStart/@date"><li><xsl:call-template name="tCommunGestionLibelle"><xsl:with-param name="pIdent" select="'libDateDebutInscription'"/></xsl:call-template><xsl:value-of select="key('objet',$idP)/admissionInfo/registrationStart/@date"/></li></xsl:if>
	</xsl:template>
	
	<!-- Descriptif de la donnée "Période d'inscription" dans ROF -->
	<xsl:template name="tProgramAdmissionInforegistrationDeadlineDate">
		<xsl:if test="key('objet',$idP)/admissionInfo/registrationDeadline/@date">
			<li>
				<xsl:call-template name="tCommunGestionLibelle"><xsl:with-param name="pIdent" select="'libDateLimiteInscription'"/></xsl:call-template>
				<xsl:value-of select="key('objet',$idP)/admissionInfo/registrationDeadline/@date"/>
			</li>
		</xsl:if>
	</xsl:template>
	
	<!-- Descriptif de la donnée "Régime d'inscription" dans ROF -->
	<xsl:template name="tProgramAdmissionInfostudentStatus">
		<xsl:if test="key('objet',$idP)/admissionInfo/studentStatus">
			<li><xsl:apply-templates select="key('objet',$idP)/admissionInfo/studentStatus"/></li>
		</xsl:if>
	</xsl:template>
	
	<!-- Descriptif de la donnée "Poursuite d'études [publication]" dans ROF -->
	<xsl:template name="tProgramAipPossibleFollowUp">
		<xsl:apply-templates select="key('objet',$idP)/aip/possibleFollowUp"/>
	</xsl:template>
	
	<!-- Descriptif de la donnée "Aide à la réussite [publication]" dans ROF -->
	<xsl:template name="tProgramAipSuccessSupport">
		<xsl:apply-templates  select="key('objet',$idP)/aip/successSupport"/>
	</xsl:template>
	
	<!-- Descriptif de la donnée "Aide à l'orientation/réorientation [publication]" dans ROF -->
	<xsl:template name="tProgramAipLearningPathStrategySupport">
		<xsl:apply-templates select="key('objet',$idP)/aip/learningPathStrategySupport"/>
	</xsl:template>
	
	<!-- Descriptif de la donnée "Aide à la poursuite d'études [publication]" dans ROF -->
	<xsl:template name="tProgramAipProfessTrainingSupport">
		<xsl:apply-templates  select="key('objet',$idP)/aip/professTrainingSupport"/>
	</xsl:template>
	
	<!-- Stage et projet tutoré -->
	<xsl:template name="tProgramTrainingStrategy">
		<xsl:apply-templates  select="key('objet',$idP)/habilitation/partnership/training/trainingStrategy"/>
	</xsl:template>
	
	<!-- Descriptif de la donnée "Droits d'inscription" dans ROF -->
	<xsl:template name="tProgramExpensesInfoBlockType">
		<xsl:call-template name="tExpensesInfoBlockType">
			<xsl:with-param name="pNode" select="key('objet',$idP)"/>
		</xsl:call-template>
	</xsl:template>
	
	<!-- Descriptif de la donnée "Droits d'inscription" dans ROF -->
	<xsl:template name="tProgramExpensesPrice">
		<xsl:call-template name="tExpensesPrice">
			<xsl:with-param name="pNode" select="key('objet',$idP)"/>
		</xsl:call-template>
	</xsl:template>

	<!-- Descriptif de la donnée "Pré-requis obligatoires [publication]" pour un objet ROF "Programme" -->
	<xsl:template name="tProgramFormalPrerequisites">
		<xsl:apply-templates select="key('objet',$idP)/formalPrerequisites"/>
	</xsl:template>
	
	<!-- Descriptif de la donnée "Pré-requis recommandés [publication]" pour un objet ROF "Programme" -->
	<xsl:template name="tProgramRecommendedPrerequisites">
		<xsl:apply-templates select="key('objet',$idP)/recommendedPrerequisites"/>
	</xsl:template>

	<!-- Descriptif de la donnée "Structure et organisation pédagogiques [publication]" dans ROF -->
	<xsl:template name="tProgramProgramStructureInfoBlock">
		<xsl:apply-templates select="key('objet',$idP)/programStructure/infoBlock"/>
	</xsl:template>
	
	<!-- Descriptif de la donnée "Structure et organisation pédagogiques [publication]" dans ROF -->
	<xsl:template name="tProgramProgramStructure">
		<xsl:if test="not(key('objet',$idP)/programStructure/infoBlock/header)"><h3>Programme</h3></xsl:if>
		<xsl:apply-templates select="key('objet',$idP)/programStructure/infoBlock"/>
		<xsl:if test="key('objet',$idP)/programStructure/refProgram">
			<ul>
				<xsl:apply-templates select="key('objet',$idP)/programStructure/refProgram"/>
			</ul>
		</xsl:if>
	</xsl:template>
	
	<!-- Identifiant ROF des fils = architecture de la formation -->
	<xsl:template name="tProgramProgramStructureRefProgram">
		<xsl:if test="count(key('objet',$idP)/programStructure/refProgram)&gt;0">
			<ul>
				<xsl:apply-templates select="key('objet',$idP)/programStructure/refProgram"/>
			</ul>
		</xsl:if>
	</xsl:template>

	<!-- Libellé ROF des fils -->
	<xsl:template name="tProgramRefProgramProgramNameText">
		<xsl:param name="pRef"/>
		<xsl:value-of select="key('objet',@ref)/programName/text"/><xsl:text> </xsl:text>
	</xsl:template>
	
	<!-- Libellé ROF des fils adapté à l'affichage PDF -->
	<xsl:template name="tProgramProgramStructurePdf">
		<xsl:if test="count(key('objet',$idP)/programStructure/refProgram)&gt;0">
			<fo:list-block>
				<xsl:for-each select="key('objet',$idP)/programStructure/refProgram">					
					<fo:list-item>
						<fo:list-item-label><fo:block>&#x2022;</fo:block></fo:list-item-label>
						<fo:list-item-body start-indent="4pt">
							<fo:block>
								<xsl:value-of select="key('objet',@ref)/programName/text"/>
							</fo:block>
						</fo:list-item-body>
					</fo:list-item>		
				</xsl:for-each>				
			</fo:list-block>
		</xsl:if>
		<xsl:if test="count(key('objet',$idP)/programStructure/refCourse)&gt;0">
			<fo:list-block>
				<xsl:for-each select="key('objet',$idP)/programStructure/refCourse">					
					<fo:list-item>
						<fo:list-item-label><fo:block>&#x2022;</fo:block></fo:list-item-label>
						<fo:list-item-body start-indent="4pt">
							<fo:block>
								<xsl:value-of select="key('objet',@ref)/courseName"/>
							</fo:block>
						</fo:list-item-body>
					</fo:list-item>		
				</xsl:for-each>				
			</fo:list-block>
		</xsl:if>
	</xsl:template>
	
	<!-- Descriptif de la donnée "Règlement intérieur" dans ROF -->
	<xsl:template name="tProgramRegulations">
		<xsl:apply-templates select="key('objet',$idP)/regulations"/>
	</xsl:template>
	
	<!-- Descriptif de la donnée "Contrôle des connaissances [publication]" dans ROF -->
	<xsl:template name="tProgramFormOfAssessment">
		<xsl:apply-templates select="key('objet',$idP)/formOfAssessment"/>
	</xsl:template>
	
	<!-- L ou M ou D -->
	<xsl:template name="tProgramLevel">
		<xsl:call-template name="tLevelLevel">
			<xsl:with-param name="pNode" select="key('objet',$idP)"/>
		</xsl:call-template>
	</xsl:template>
	
	<!-- Descriptif de la donnée "Connaissances scientifiques à acquérir [publication]" dans ROF -->
	<xsl:template name="tProgramLearningObjectivesInfoBlockType">
		<xsl:call-template name="tLearningObjectivesInfoBlockType">
			<xsl:with-param name="pNode" select="key('objet',$idP)"/>
		</xsl:call-template>
	</xsl:template>
	
	
	
	<!-- niveau d'enseignement de sortie de la formation considérée -->
	<xsl:template name="tProgramLevelCode">
		<xsl:value-of select="key('objet',$idP)/levelCode/@codeSet"/>
	</xsl:template>
	
	<!-- L ou M ou D -->
	<xsl:template name="tProgramLevelLevel">
		<xsl:call-template name="tLevelLevel">
			<xsl:with-param name="pNode" select="key('objet',$idP)"/>
		</xsl:call-template>
	</xsl:template>

	<!--
tProgramAdmissionInfoAdmissionDescriptionPdf
tProgramProgramStructureInfoBlockPdf
tProgramLearningObjectivesInfoBlockTypePdf
tProgramQualificationStudyQualificationInfoBlockPdf
tProgramTrainingStrategyPdf
tProgramQualificationProfessionPdf
tProgramAipSuccessSupportPdf
-->


	<!-- ECTS requis -->
	<xsl:template name="tProgramAdmissionInfoEctsRequiredValue">
		<xsl:value-of select="sum(key('objet',$idP)/admissionInfo/ectsRequired/@value)"/>
	</xsl:template>
	
	<!-- Descriptif de la donnée "Période durant laquelle le programme est dispensé" dans ROF -->
	<xsl:template name="tProgramProgramDuration">
		<xsl:if test="key('objet',$idP)/programDuration">
			<li><xsl:call-template name="tCommunGestionLibelle"><xsl:with-param name="pIdent" select="'libDureeFormation'"/></xsl:call-template><xsl:apply-templates select="key('objet',$idP)/programDuration"/></li>
		</xsl:if>
	</xsl:template>

	<!-- Descriptif de la donnée "Public visé [publication]" dans ROF -->
	<xsl:template name="tProgramTargetGroup">
		<xsl:if test="key('objet',$idP)/targetGroup"><li><xsl:apply-templates select="key('objet',$idP)/targetGroup"/></li></xsl:if>
	</xsl:template>
	<xsl:template name="tProgramTargetGroupPdf">
		<xsl:if test="key('objet',$idP)/targetGroup"><xsl:apply-templates select="key('objet',$idP)/targetGroup"/></xsl:if>
	</xsl:template>
	<!-- Adresses de la formation -->
	<xsl:template match="teachingPlace">
		<li><xsl:apply-templates /></li>
	</xsl:template>
	<xsl:template match="teachingPlace/refOrgUnit">
		<div>
			<div><xsl:apply-templates select="key('objet', @ref)/orgUnitName"/></div>
			<div><xsl:apply-templates select="key('objet', @ref)/contacts/contactData/adr"/></div>
		</div>
	</xsl:template>
	<xsl:template match="teachingPlace/adr">
		<xsl:if test="not(key('objet', ../refProgram/@ref)/contacts/contactData/adr)">
			<xsl:apply-templates/>
		</xsl:if>
	</xsl:template>
	<!-- Descriptif de la donnée "Enseignements délocalisés [publication]" dans ROF -->
	<xsl:template name="tProgramTeachingPlaceInfoBlock">
		<xsl:apply-templates select="key('objet',$idP)/teachingPlace/infoBlock"/>
	</xsl:template>
	<xsl:template name="tProgramTeachingPlace">
		<xsl:if test="key('objet',$idP)/teachingPlace">
			<li>
				<xsl:call-template name="tCommunGestionLibelle"><xsl:with-param name="pIdent" select="'libAdresseEnseignement'"/></xsl:call-template>
				<ul>
					<xsl:apply-templates select="key('objet',$idP)/teachingPlace"/>
				</ul>
			</li>
		</xsl:if>
	</xsl:template>
	<!-- Adresse : Complément voie -->
	<xsl:template name="tProgramTeachingPlaceAdrExtadr">
		<xsl:value-of select="key('objet',$idP)/teachingPlace/adr/extadr"/>
	</xsl:template>
	
	<!-- Adresse : Nom de la voie -->
	<xsl:template name="tProgramTeachingPlaceAdrStreet">
		<xsl:value-of select="key('objet',$idP)/teachingPlace/adr/street"/>
	</xsl:template>
	
	<!-- Adresse : Code postal -->
	<xsl:template name="tProgramTeachingPlaceAdrPcode">
		<xsl:value-of select="key('objet',$idP)/teachingPlace/adr/pcode"/>
	</xsl:template>

	<!-- Adresse : Ville -->
	<xsl:template name="tProgramTeachingPlaceAdrLocality">
		<xsl:value-of select="key('objet',$idP)/teachingPlace/adr/locality"/>
	</xsl:template>

	<!-- Descriptif de la donnée "Mots-clés" dans ROF -->
	<xsl:template name="tProgramSearchword">
		<xsl:if test="count(key('objet',$idP)/searchword) &gt; 0">
			<ul>
				<li><xsl:apply-templates select="key('objet',$idP)/searchword"/></li>
			</ul>
		</xsl:if>
	</xsl:template>
	
	
	<!-- Templates composés -->
	<xsl:template name="tResumeFormation">
		<h3><xsl:call-template name="tCommunGestionLibelle"><xsl:with-param name="pIdent" select="'libResumeFormation'"/></xsl:call-template></h3>
		<ul>
			<li>
				<xsl:call-template name="tCommunGestionLibelle"><xsl:with-param name="pIdent" select="'libAdresseEnseignement'"/></xsl:call-template>
				<xsl:apply-templates select="key('objet',$idP)/teachingPlace/infoBlock"/>
			</li>
		</ul>
	</xsl:template>

</xsl:stylesheet>