<?xml version="1.0" encoding="UTF-8"?>

<!-- Synchronisation des notices avec les fichiers -->

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:dc="http://purl.org/dc/elements/1.1/">

 <xsl:variable name="mime" select="document('mime.xml')/mime"/>
 <xsl:template match="/">
  <Changes>
   <xsl:apply-templates>
    <xsl:with-param name="path" select="''"/>
   </xsl:apply-templates>
  </Changes>
 </xsl:template>

 <!-- Parcours des répertoires -->
 <xsl:template match="Folder">
  <xsl:param name="path"/>
  <xsl:apply-templates>
   <xsl:with-param name="path">
    <xsl:choose>
     <xsl:when test="$path=''"><xsl:value-of select="@path"/></xsl:when>
     <xsl:otherwise><xsl:value-of select="concat($path,'\',@name)"/></xsl:otherwise>
    </xsl:choose>
   </xsl:with-param>
  </xsl:apply-templates>
 </xsl:template>

 <!-- Traitement d'un fichier -->
 <xsl:template match="File">
  <xsl:param name="path"/>

  <!-- Détermination de l'extension du fichier -->
  <xsl:variable name="ext">
   <xsl:call-template name="extension">
    <xsl:with-param name="fn" select="@name"/>
   </xsl:call-template>
  </xsl:variable>

  <xsl:variable name="n" select="@name"/>

  <!-- Cas d'un fichier sans notice DC -->
  <xsl:if test="$ext != '.dc' and $ext != '.docbook' and count(parent::Folder/File[@name=concat($n,'.dc')])=0">
   <File action="write" path="{concat($path,'\',@name,'.dc')}">
    <metadata>
    <!-- Modifie par Guillaume pour eliminer les 3 premiers chiffres -->
     <title xml:lang="fr-FR"><xsl:value-of select="substring(@name,4,string-length(@name) - 3 - string-length($ext))"/></title>
     <language xml:lang="fr-FR">Français</language>
     <creator>Ecole Nationale de la Magistrature</creator>
     <publisher>Ecole Nationale de la Magistrature</publisher>
     <subject>justice</subject>
     <type>text</type>
     <format><xsl:value-of select="$mime/code[@extension=translate($ext,'ABCDEFGHIJKLMONPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')]/@content-type"/></format>
     <date.created><xsl:value-of select="substring(@date.created,1,10)"/></date.created>
     <date.modified><xsl:value-of select="substring(@date.modified,1,10)"/></date.modified>
     <identifier><xsl:value-of select="@name"/></identifier>
    </metadata>
   </File>
  </xsl:if>

  <!-- Cas d'une notice DC sans fichier -->
  <xsl:if test="$ext = '.dc' and count(parent::Folder/File[@name=substring($n,1,string-length($n)-3)])=0">
   <File action="delete" path="{concat($path,'\',@name)}"/>
  </xsl:if>
 </xsl:template>

 <!-- Module d'isolement de l'extension fichier -->
 <xsl:template name="extension">
  <xsl:param name="fn"/>
  <xsl:choose>
   <xsl:when test="contains($fn,'.')">
    <xsl:call-template name="extension">
     <xsl:with-param name="fn" select="substring-after($fn,'.')"/>
    </xsl:call-template>
   </xsl:when>
   <xsl:otherwise>
    <xsl:value-of select="concat('.',$fn)"/>
   </xsl:otherwise>
  </xsl:choose>
 </xsl:template>

</xsl:stylesheet>
