<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:ns2="http://cdm-fr.fr/2011/CDM-frSchema"
	xmlns:cdm="http://cdm-fr.fr/2006/CDM-frSchema/">
	<!-- Dedoublonne par codeSet et par program ou subProgram -->
	<xsl:key name="programCode" match="programCode"
		use="concat(@codeSet,' ',text(),' ',../@id)" />
	<!-- Dedoublonne par @info et par program ou subProgram -->
	<xsl:key name="lov" match="lov" use="concat(@info,' ',@code,' ',@poids,' ',../../../../@id)" />
	<xsl:output encoding="UTF-8" method="xml" indent="yes" />
	<!-- **************************************************
		Copie de tous les éléments et attributs pour les deux modes
		******************************************************* -->
	<xsl:template match="* | @* | comment() | text()">
		<!-- copie du noeud courant -->
		<xsl:copy>
			<xsl:apply-templates select="@*|*|text() | comment()" />
		</xsl:copy>
	</xsl:template>
	<xsl:template match="noeud">
		<xsl:copy>
			<xsl:attribute name="nid"><xsl:value-of select="generate-id()"/></xsl:attribute>
			<xsl:apply-templates select="@libelle|@id|@niveau|@typeObjet" />
			<xsl:apply-templates select="*|text() | comment()" />
		</xsl:copy>
	</xsl:template>
	<xsl:template
		match="programCode[not(preceding-sibling::programCode)]">
		<xsl:copy>
			<xsl:apply-templates select="@*|*|text() | comment()" />
		</xsl:copy>
		<xsl:apply-templates
			select="following-sibling::programCode[generate-id()=generate-id(key('programCode', concat(@codeSet,' ',text(),' ',../@id))[1])]"
			mode="copy" />
	</xsl:template>
	<xsl:template match="program">
		<xsl:copy>
			<xsl:apply-templates select="@*|*|text() | comment()" />
		</xsl:copy>
	</xsl:template>
	<xsl:template match="programCode"
		mode="copy">
		<xsl:copy>
			<xsl:apply-templates select="@*|*|text() | comment()" />
		</xsl:copy>
	</xsl:template>

	<xsl:template match="lov[not(preceding-sibling::lov)]">
		<xsl:copy>
			<xsl:apply-templates select="@*|*|text() | comment()" />
		</xsl:copy>
		<xsl:apply-templates
			select="following-sibling::lov[generate-id()=generate-id(key('lov', concat(@info,' ',@code,' ',@poids,' ',../../../../@id))[1])]"
			mode="copy" />

	</xsl:template>
	<xsl:template match="lov" mode="copy">
		<xsl:copy>
			<xsl:apply-templates select="@*|*|text() | comment()" />
		</xsl:copy>
	</xsl:template>

	<xsl:template
		match="orioai-search[not(following-sibling::orioai-search)]">
		<xsl:for-each select="../orioai-search">
			<xsl:variable name="info" select="@info" />
			<xsl:variable name="code" select="@code" />
			<xsl:if
				test="count(following-sibling::orioai-search[@info=$info][@code=$code])=0">
				<xsl:copy>
					<xsl:apply-templates
						select="@*|*|text() | comment()" />
				</xsl:copy>
			</xsl:if>

		</xsl:for-each>

	</xsl:template>

	<xsl:template match="programCode" />
	<xsl:template match="lov" />
	<xsl:template match="orioai-search" />

</xsl:stylesheet>

