source: pmb4.2/trunk/fuentes/pmb/admin/convert/imports/bcdi2pmbxmluni/bcdi.xsl @ 815

Last change on this file since 815 was 815, checked in by jrpelegrina, 4 years ago

Initial release of pmb 4.2

  • Property svn:executable set to *
File size: 25.6 KB
Line 
1<?xml version="1.0" encoding="iso-8859-1"?>
2<!DOCTYPE stylesheet [
3        <!ENTITY MAJUSCULE "ABCDEFGHIJKLMNOPQRSTUVWXYZ">
4        <!ENTITY MINUSCULE "abcdefghijklmnopqrstuvwxyz">
5        <!ENTITY MAJUS_EN_MINUS " '&MAJUSCULE;' , '&MINUSCULE;' ">
6        <!ENTITY MINUS_EN_MAJUS " '&MINUSCULE;' , '&MAJUSCULE;' ">
7]>
8<xsl:stylesheet version = '1.0'
9     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
10
11<xsl:output method="xml" version="1.0" encoding="iso-8859-1" indent="yes"/>
12
13<xsl:template match="/MEMO_NOTICES">
14<unimarc>
15                <xsl:apply-templates select="NOTICES"/>
16</unimarc>
17</xsl:template>
18
19<xsl:template match="NOTICES">
20        <notice>
21                <xsl:element name="rs">*</xsl:element>
22                <xsl:element name="ru">*</xsl:element>
23                <xsl:element name="el">1</xsl:element>
24       
25                <xsl:if test="./TYPE_NOTICE_N">
26                        <xsl:call-template name="type_notice">
27                                <xsl:with-param name="noeud" select="./TYPE_NOTICE_N"/>
28                        </xsl:call-template>
29                </xsl:if>
30               
31                <xsl:if test="./DOCUMENTS/TYPE_DOC_D">
32                        <xsl:call-template name="type_doc">
33                                <xsl:with-param name="noeud" select="./DOCUMENTS/TYPE_DOC_D"/>
34                        </xsl:call-template>
35                </xsl:if>
36               
37                <!-- Dans l'ordre -->
38                <!-- Numéro de référence -->
39                <xsl:call-template name="ref"/>
40                <!-- ISBN/PRIX-->
41                <xsl:call-template name="isbn"/>
42                <xsl:call-template name="issn"/>
43                <!-- Langue -->
44                <xsl:call-template name="langue"/>
45                <!-- Date de création -->
46                <xsl:call-template name="date_creation"/>
47                <!-- Titres -->
48                <xsl:call-template name="titre"/>
49                <!-- Mention d'édition -->
50                <xsl:call-template name="mention_edition"/>
51                <!-- Editeur -->
52                <xsl:call-template name="editeurs"/>
53                <!-- Collation -->
54                <xsl:call-template name="collation"/>
55                <!-- Collection -->
56                <xsl:call-template name="collection"/>
57                <!-- Notes -->
58                <xsl:call-template name="notes"/>
59                <!-- EAN -->
60                <xsl:call-template name="ean"/>
61                <!-- Série -->
62                <!-- Périodiques -->
63                <xsl:choose>
64                        <xsl:when test="./DOCUMENTS/SUPPORT_D='Périodique'">
65                                <xsl:call-template name="periodiques"/>
66                        </xsl:when>
67                        <xsl:when test="(./TYPE_NOTICE_N='Partie') and  (./DOCUMENTS/IDENTITE_D_D != IDENTITE_N_N)">
68                                <xsl:call-template name="chapitre"/>
69                        </xsl:when>
70                </xsl:choose>
71                <!-- Descripteurs -->
72                <xsl:call-template name="descripteurs"/>
73                <!-- Mots clés -->
74                <xsl:call-template name="mots_clefs"/>
75                <!-- Dewey -->
76                <!--<xsl:call-template name="dewey"/>-->
77                <!-- Auteurs -->
78                <xsl:if test="./AUTEURS">
79                        <xsl:call-template name="construct_auteurs">
80                                <xsl:with-param name="compteur" select="1"/>
81                                <xsl:with-param name="fonctions" select="./FONCTIONS_N"/>
82                                <xsl:with-param name="notc" select="."/>
83                        </xsl:call-template>
84                </xsl:if>
85                <!-- URL -->
86                <xsl:call-template name="url"/>
87                <!-- Champs persos -->
88                <xsl:call-template name="persos"/>
89                <!-- Exemplaires -->
90                <xsl:call-template name="exemplaires">
91                        <xsl:with-param name="n_ex" select="1"/>       
92                </xsl:call-template>
93        </notice>
94</xsl:template>
95
96<!-- Construction de la liste des auteurs -->
97<xsl:template name="construct_auteurs">
98        <xsl:param name="compteur"/>
99        <xsl:param name="fonctions"/>
100        <xsl:param name="notc"/>
101       
102        <xsl:variable name="auteur_no" select="substring-before($fonctions,'/')"/>
103        <xsl:element name="f">
104                <xsl:attribute name="c">
105                        <xsl:choose>
106                                <xsl:when test="$compteur=1">700</xsl:when>
107                                <xsl:otherwise>701</xsl:otherwise>
108                        </xsl:choose>
109                </xsl:attribute>
110                <xsl:attribute name="ind"> 0</xsl:attribute>
111                <xsl:apply-templates select="$notc/AUTEURS[$compteur]/*"/>
112                <xsl:if test="$auteur_no">
113                        <xsl:element name="s">
114                                <xsl:attribute name="c">4</xsl:attribute>
115                                <xsl:choose>
116                                        <xsl:when test="normalize-space($auteur_no)='Auteur'">
117                                                <xsl:text>070</xsl:text>
118                                        </xsl:when>
119                                        <xsl:when test='normalize-space($auteur_no)="Chef d&apos;orchestre"'>
120                                                <xsl:text>250</xsl:text>
121                                        </xsl:when>
122                                        <xsl:when test="normalize-space($auteur_no)='Compositeur'">
123                                                <xsl:text>230</xsl:text>
124                                        </xsl:when>
125                                        <xsl:when test="normalize-space($auteur_no)='Directeur de la publication'">
126                                                <xsl:text>651</xsl:text>
127                                        </xsl:when>
128                                        <xsl:when test="normalize-space($auteur_no)='Graphiste'">
129                                                <xsl:text>410</xsl:text>
130                                        </xsl:when>
131                                        <xsl:when test="normalize-space($auteur_no)='Illustrateur'">
132                                                <xsl:text>440</xsl:text>
133                                        </xsl:when>
134                                        <xsl:when test="normalize-space($auteur_no)='Interprète'">
135                                                <xsl:text>590</xsl:text>
136                                        </xsl:when>
137                                        <xsl:when test="normalize-space($auteur_no)='Interviewé'">
138                                                <xsl:text>460</xsl:text>
139                                        </xsl:when>
140                                        <xsl:when test="normalize-space($auteur_no)='Intervieweur'">
141                                                <xsl:text>470</xsl:text>
142                                        </xsl:when>
143                                        <xsl:when test="normalize-space($auteur_no)='Parolier'">
144                                                <xsl:text>520</xsl:text>
145                                        </xsl:when>
146                                        <xsl:when test="normalize-space($auteur_no)='Photographe'">
147                                                <xsl:text>600</xsl:text>
148                                        </xsl:when>
149                                        <xsl:when test="normalize-space($auteur_no)='Réalisateur'">
150                                                <xsl:text>370</xsl:text>
151                                        </xsl:when>
152                                        <xsl:when test="normalize-space($auteur_no)='Traducteur'">
153                                                <xsl:text>730</xsl:text>
154                                        </xsl:when>
155                                        <xsl:otherwise>
156                                                <xsl:text>070</xsl:text>
157                                        </xsl:otherwise>
158                                </xsl:choose>
159                        </xsl:element>
160                </xsl:if>
161        </xsl:element>
162        <xsl:if test="$notc/AUTEURS[$compteur+1]">
163                <xsl:call-template name="construct_auteurs">
164                        <xsl:with-param name="compteur" select="$compteur+1"/>
165                        <xsl:with-param name="fonctions" select="substring-after($fonctions,'/')"/>
166                        <xsl:with-param name="notc" select="$notc"/>
167                </xsl:call-template>
168        </xsl:if>
169</xsl:template>
170
171<xsl:template match="AUTEUR_A">
172        <xsl:choose>   
173                <xsl:when test="contains(.,',')">
174                        <xsl:element name="s">
175                                <xsl:attribute name="c">a</xsl:attribute>
176                                <xsl:value-of select="substring-before(.,',')"/>
177                        </xsl:element>
178                        <xsl:element name="s">
179                                <xsl:attribute name="c">b</xsl:attribute>
180                                <xsl:value-of select="normalize-space(substring-after(.,','))"/>
181                        </xsl:element>
182                </xsl:when>
183                <xsl:otherwise>
184                        <xsl:element name="s">
185                                        <xsl:attribute name="c">a</xsl:attribute>
186                                        <xsl:value-of select="."/>
187                        </xsl:element>
188                </xsl:otherwise>
189        </xsl:choose>
190        <!-- Autres éléments -->
191        <xsl:if test="../DATE_DE_NAISSANCE_A|../DATE_DE_DECES_A">
192                <xsl:element name="s">
193                                <xsl:attribute name="c">f</xsl:attribute>
194                                <xsl:value-of select="concat(../DATE_DE_NAISSANCE_A,'-',../DATE_DE_DECES_A)"/>
195                </xsl:element>
196        </xsl:if>
197</xsl:template>
198
199<!-- Identifiant unique -->
200<xsl:template name="ref">
201        <xsl:if test="IDENTITE_N_N">
202                <xsl:element name="f">
203                        <xsl:attribute name="c">001</xsl:attribute>
204                        <xsl:value-of select="IDENTITE_N_N"/>
205                </xsl:element>
206        </xsl:if>
207</xsl:template>
208
209<!-- Type de notice et niveau hiérarchique -->
210<xsl:template name="type_notice">
211        <xsl:param name="noeud"/>
212        <xsl:element name="bl">
213                <xsl:choose>
214                        <xsl:when test="$noeud='Notice générale'">
215                                <xsl:text>m</xsl:text>
216                        </xsl:when>
217                        <xsl:otherwise>
218                                <xsl:text>a</xsl:text>
219                        </xsl:otherwise>
220                </xsl:choose>
221        </xsl:element>
222        <xsl:element name="hl">
223                <xsl:choose>
224                        <xsl:when test="$noeud='Article'">
225                                <xsl:text>2</xsl:text>
226                        </xsl:when>
227                        <xsl:otherwise>
228                                <xsl:text>0</xsl:text>
229                        </xsl:otherwise>
230                </xsl:choose>
231        </xsl:element>
232</xsl:template>
233
234<!--LANGUE -->
235<xsl:template name="langue">
236        <xsl:if test="LANGUE_N">
237                <xsl:call-template name="construct_repeat">
238                        <xsl:with-param name="chaine" select="translate(LANGUE_N,&MAJUS_EN_MINUS;)"/>
239                        <xsl:with-param name="field_number" select="'101'"/>
240                        <xsl:with-param name="subfield_number" select="'a'"/>
241                </xsl:call-template>
242        </xsl:if>
243</xsl:template>
244
245<!-- date de création -->
246<xsl:template name="date_creation">
247        <xsl:if test="DATE_SAISIE_N_N">
248                <xsl:element name="f">
249                        <xsl:attribute name="c">100</xsl:attribute>
250                        <xsl:element name="s">
251                                <xsl:attribute name="c">a</xsl:attribute>
252                                <xsl:value-of select="substring-after(substring-after(DATE_SAISIE_N_N,'/'),'/')"/>
253                                <xsl:value-of select="substring-before(substring-after(DATE_SAISIE_N_N,'/'),'/')"/>
254                                <xsl:value-of select="substring-before(DATE_SAISIE_N_N,'/')"/>
255                        </xsl:element> 
256                </xsl:element>
257        </xsl:if>
258</xsl:template>
259
260
261<!--TITRE -->
262<xsl:template name="titre" match="TITRE_N">
263        <xsl:if test="TITRE_N">
264                <xsl:element name="f">
265                        <xsl:attribute name="c">200</xsl:attribute>
266                        <xsl:attribute name="ind">
267                                <xsl:for-each select="SIGNIFICATIF_N">
268                                        <xsl:if test='.="Oui"'>1 </xsl:if>
269                                        <xsl:if test='.="Non"'>2 </xsl:if>
270                                </xsl:for-each>
271                        </xsl:attribute>
272                        <xsl:element name="s">
273                                <xsl:attribute name="c">a</xsl:attribute>
274                                <xsl:value-of select="TITRE_N"/>
275                        </xsl:element>                 
276                </xsl:element>
277        </xsl:if>
278</xsl:template>
279
280<!-- COLLATION -->
281<xsl:template name="collation">
282        <xsl:if test="COLLATION_N|DOCUMENTS/STANDARD_D">
283                <xsl:if test="DOCUMENTS/SUPPORT_D!='Périodique'">
284                        <xsl:element name="f">
285                                <xsl:attribute name="c">215</xsl:attribute>
286                                <xsl:if test="COLLATION_N">
287                                        <xsl:element name="s">
288                                                <xsl:attribute name="c">a</xsl:attribute>
289                                                <xsl:value-of select="COLLATION_N"/>
290                                        </xsl:element>
291                                </xsl:if>       
292                                <xsl:if test="DOCUMENTS/STANDARD_D">
293                                        <xsl:element name="s">
294                                                <xsl:attribute name="c">d</xsl:attribute>
295                                                <xsl:value-of select="DOCUMENTS/STANDARD_D"/>
296                                        </xsl:element>
297                                </xsl:if>                       
298                        </xsl:element>
299                </xsl:if>
300        </xsl:if>
301</xsl:template>
302
303<!-- DOCUMENTS -->
304
305<!-- Type de document -->
306<xsl:template name="type_doc">
307        <xsl:param name="noeud"/>
308        <xsl:element name="dt">
309                <xsl:choose>
310                        <xsl:when test="$noeud='Document projeté, vidéo'">
311                                <xsl:text>g</xsl:text>
312                        </xsl:when>
313                        <xsl:when test="$noeud='Texte imprimé'">
314                                <xsl:text>a</xsl:text>
315                        </xsl:when>
316                        <xsl:when test="$noeud='Enregistrement sonore'">
317                                <xsl:text>i</xsl:text>
318                        </xsl:when>
319                        <xsl:when test="$noeud='Texte manuscrit'">
320                                <xsl:text>b</xsl:text>
321                        </xsl:when>
322                        <xsl:when test="$noeud='Document cartographique'">
323                                <xsl:text>e</xsl:text>
324                        </xsl:when>
325                        <xsl:when test="$noeud='Ressource électronique'">
326                                <xsl:text>l</xsl:text>
327                        </xsl:when>
328                        <xsl:when test="$noeud='Ressource en ligne'">
329                                <xsl:text>l</xsl:text>
330                        </xsl:when>
331                        <xsl:when test="$noeud='Document graphique'">
332                                <xsl:text>k</xsl:text>
333                        </xsl:when>
334                        <xsl:when test="$noeud='Document multisupport'">
335                                <xsl:text>m</xsl:text>
336                        </xsl:when>
337                        <xsl:when test="$noeud='Objet 3 dimensions'">
338                                <xsl:text>r</xsl:text>
339                        </xsl:when>
340                        <xsl:when test="$noeud='Autre'">
341                                <xsl:text>m</xsl:text>
342                        </xsl:when>
343                </xsl:choose>
344        </xsl:element>
345</xsl:template>
346
347<!-- EAN -->
348<xsl:template name="ean">
349        <xsl:if test="DOCUMENTS/CODE_BARRE_D">
350                <xsl:element name="f">
351                        <xsl:attribute name="c">345</xsl:attribute>
352                        <xsl:element name="s">
353                                <xsl:attribute name="c">b</xsl:attribute>
354                                <xsl:value-of select="normalize-space(translate(DOCUMENTS/CODE_BARRE_D,'/',''))"/>
355                        </xsl:element>                 
356                </xsl:element>
357        </xsl:if>
358</xsl:template>
359
360<!-- ISBN -->
361<xsl:template name="isbn">
362        <xsl:if test="DOCUMENTS/ISBN_D | DOCUMENTS/COUT_D_D">
363                <xsl:element name="f">
364                        <xsl:attribute name="c">010</xsl:attribute>
365                        <xsl:if test="DOCUMENTS/ISBN_D">
366                                <xsl:element name="s">
367                                        <xsl:attribute name="c">a</xsl:attribute>
368                                        <xsl:value-of select="normalize-space(translate(DOCUMENTS/ISBN_D,'/',''))"/>
369                                </xsl:element>
370                        </xsl:if>
371                        <xsl:if test="DOCUMENTS/COUT_D_D">
372                                <xsl:element name="s">
373                                        <xsl:attribute name="c">d</xsl:attribute>
374                                        <xsl:value-of select="DOCUMENTS/COUT_D_D"/>
375                                </xsl:element>
376                        </xsl:if>                       
377                </xsl:element>
378        </xsl:if>
379</xsl:template>
380
381<!-- ISSN -->
382<xsl:template name="issn">
383        <xsl:if test="DOCUMENTS/ISSN_D">
384                <xsl:element name="f">
385                        <xsl:attribute name="c">011</xsl:attribute>
386                        <xsl:element name="s">
387                                <xsl:attribute name="c">a</xsl:attribute>
388                                <xsl:value-of select="normalize-space(translate(DOCUMENTS/ISSN_D,'/',''))"/>
389                        </xsl:element>                 
390                </xsl:element>
391        </xsl:if>
392</xsl:template>
393
394<!-- Mention d'édition -->
395<xsl:template name="mention_edition">
396        <xsl:if test="DOCUMENTS/EDITION_D">
397                <xsl:element name="f">
398                        <xsl:attribute name="c">205</xsl:attribute>
399                        <xsl:element name="s">
400                                <xsl:attribute name="c">a</xsl:attribute>
401                                <xsl:value-of select="DOCUMENTS/EDITION_D"/>
402                        </xsl:element>                 
403                </xsl:element>
404        </xsl:if>
405</xsl:template>
406
407<!--EDITEUR -->
408<xsl:template name="editeurs">
409        <xsl:if test="DOCUMENTS/EDITEURS[1]|DATE_EDITION_N_N">
410                <xsl:element name="f">
411                        <xsl:attribute name="c">210</xsl:attribute>
412                        <xsl:if test="DOCUMENTS/EDITEURS[1]/VILLE_E">
413                                <xsl:element name="s">
414                                        <xsl:attribute name="c">a</xsl:attribute>
415                                        <xsl:value-of select="DOCUMENTS/EDITEURS[1]/VILLE_E"/>
416                                </xsl:element>
417                        </xsl:if>
418                        <xsl:if test="DOCUMENTS/EDITEURS[1]/EDITEUR_E">
419                                <xsl:element name="s">
420                                        <xsl:attribute name="c">c</xsl:attribute>
421                                        <xsl:value-of select="DOCUMENTS/EDITEURS[1]/EDITEUR_E"/>
422                                </xsl:element>
423                        </xsl:if>
424                        <xsl:if test="DATE_EDITION_N_N">
425                                <xsl:element name="s">
426                                <xsl:attribute name="c">d</xsl:attribute>
427                                <xsl:value-of select="DATE_EDITION_N_N"/>
428                        </xsl:element>
429                        </xsl:if>
430                </xsl:element>
431        </xsl:if>
432</xsl:template>
433
434<!-- COLLECTIONS -->
435<xsl:template name="collection">
436        <xsl:if test="DOCUMENTS/COLLECTIONS">
437                <xsl:if test="DOCUMENTS/SUPPORT_D!='Périodique'">
438                        <xsl:element name="f">
439                                <xsl:attribute name="c">225</xsl:attribute>
440                                <xsl:attribute name="ind">1 </xsl:attribute>
441                                <!-- NOM COLLECTION -->
442                                <xsl:element name="s">
443                                        <xsl:attribute name="c">a</xsl:attribute>
444                                        <xsl:value-of select="DOCUMENTS/COLLECTIONS/COLLECTION_C"/>
445                                </xsl:element>
446                                <!-- NUMERO DANS LA COLLECTION -->
447                                <xsl:if test="DOCUMENTS/NO_COLLECTION_D">
448                                        <xsl:element name="s">
449                                                <xsl:attribute name="c">v</xsl:attribute>
450                                                <xsl:value-of select="DOCUMENTS/NO_COLLECTION_D"/>
451                                        </xsl:element>
452                                </xsl:if>
453                                <!-- ISSN COLLECTION -->
454                                <xsl:apply-templates select="DOCUMENTS/COLLECTIONS/ISSN_C_C"/>
455                                <!-- RESPONSABLE COLLECTION -->
456                                <xsl:apply-templates select="DOCUMENTS/COLLECTIONS/RESPONSABLE_C"/>
457                        </xsl:element>
458                </xsl:if>
459        </xsl:if>
460</xsl:template>
461
462<!-- ISSN COLLECTION -->
463<xsl:template match="ISSN_C_C">
464        <xsl:element name="s">
465                        <xsl:attribute name="c">x</xsl:attribute>
466                        <xsl:value-of select="."/>
467        </xsl:element>
468</xsl:template>
469
470<!-- RESPONSABLE COLLECTION -->
471<xsl:template match="RESPONSABLE_C">
472        <xsl:element name="s">
473                        <xsl:attribute name="c">f</xsl:attribute>
474                        <xsl:value-of select="."/>
475        </xsl:element>
476</xsl:template>
477
478<!-- NOTES -->
479<xsl:template name="notes">
480        <!-- Notes générales -->
481        <xsl:if test="NOTES_N">
482                <xsl:element name="f">
483                        <xsl:attribute name="c">300</xsl:attribute>
484                        <xsl:attribute name="ind">  </xsl:attribute>
485                        <xsl:element name="s">
486                                <xsl:attribute name="c">a</xsl:attribute>
487                                <xsl:value-of select="NOTES_N"/>
488                        </xsl:element>
489                </xsl:element>
490        </xsl:if>
491        <!-- Note de contenu -->
492        <xsl:if test="DIVERS_N">
493                <xsl:element name="f">
494                        <xsl:attribute name="c">327</xsl:attribute>
495                        <xsl:element name="s">
496                                <xsl:attribute name="c">a</xsl:attribute>
497                                <xsl:value-of select="DIVERS_N"/>
498                        </xsl:element>                 
499                </xsl:element>
500        </xsl:if>
501        <!-- Résumé -->
502        <xsl:if test="RESUME_N">
503                <xsl:element name="f">
504                        <xsl:attribute name="c">330</xsl:attribute>
505                        <xsl:element name="s">
506                                <xsl:attribute name="c">a</xsl:attribute>
507                                <xsl:value-of select="RESUME_N"/>
508                        </xsl:element>                 
509                </xsl:element>
510        </xsl:if>
511</xsl:template>
512
513<!-- MOTS CLES -->
514<xsl:template name="mots_clefs" match="MOTS_CLES_N">
515        <xsl:if test="MOTS_CLES_N">
516                <xsl:call-template name="construct_repeat">
517                        <xsl:with-param name="chaine" select="MOTS_CLES_N"/>
518                        <xsl:with-param name="field_number" select="'610'"/>
519                        <xsl:with-param name="subfield_number" select="'a'"/>
520                </xsl:call-template>
521        </xsl:if>
522</xsl:template>
523
524<!-- DESCRIPTEURS -->
525<xsl:template name="descripteurs">
526        <xsl:if test="DESCRIPTEURS_N">
527                <xsl:call-template name="construct_repeat">
528                        <xsl:with-param name="chaine" select="DESCRIPTEURS_N"/>
529                        <xsl:with-param name="field_number" select="'606'"/>
530                        <xsl:with-param name="subfield_number" select="'a'"/>
531                </xsl:call-template>
532        </xsl:if>
533</xsl:template>
534
535<!-- Dewey -->
536<xsl:template name="dewey">
537        <xsl:if test="DOCUMENTS/COTE_D">
538                <xsl:element name="f">
539                        <xsl:attribute name="c">676</xsl:attribute>
540                        <xsl:element name="s">
541                                <xsl:attribute name="c">a</xsl:attribute>
542                                <xsl:value-of select="DOCUMENTS/COTE_D"/>
543                        </xsl:element>                 
544                </xsl:element>
545        </xsl:if>
546</xsl:template>
547
548<!-- Champs persos -->
549<xsl:template name="persos">
550        <!-- Thèmes -->
551        <xsl:if test="GENRES_N">
552                <xsl:call-template name="construct_repeat">
553                        <xsl:with-param name="chaine" select="GENRES_N"/>
554                        <xsl:with-param name="field_number" select="'900'"/>
555                        <xsl:with-param name="subfield_number" select="'a'"/>
556                </xsl:call-template>
557        </xsl:if>
558
559        <!-- Disciplines -->
560        <xsl:if test="DISCIPLINES_N_N">
561                <xsl:call-template name="construct_repeat">
562                                <xsl:with-param name="chaine" select="DISCIPLINES_N_N"/>
563                                <xsl:with-param name="field_number" select="'902'"/>
564                                <xsl:with-param name="subfield_number" select="'a'"/>
565                </xsl:call-template>
566        </xsl:if>
567       
568        <!-- Genre -->
569        <xsl:if test="NATURES_N">
570                <xsl:call-template name="construct_repeat">
571                                <xsl:with-param name="chaine" select="NATURES_N"/>
572                                <xsl:with-param name="field_number" select="'901'"/>
573                                <xsl:with-param name="subfield_number" select="'a'"/>
574                </xsl:call-template>
575        </xsl:if>
576       
577        <!-- Année de péremption -->
578        <xsl:if test="DATE_PER_N_N">
579                <xsl:element name="f">
580                        <xsl:attribute name="c">903</xsl:attribute>
581                        <xsl:element name="s">
582                                <xsl:attribute name="c">a</xsl:attribute>
583                                <xsl:value-of select="DATE_PER_N_N"/>
584                        </xsl:element>                 
585                </xsl:element>
586        </xsl:if>
587
588        <!-- Date de saisie -->
589        <xsl:if test="DOCUMENTS/DATE_DE_SAISIE_D">
590                <xsl:element name="f">
591                        <xsl:attribute name="c">904</xsl:attribute>
592                        <xsl:element name="s">
593                                <xsl:attribute name="c">a</xsl:attribute>
594                                <xsl:value-of select="substring-after(substring-after(DOCUMENTS/DATE_DE_SAISIE_D,'/'),'/')"/>
595                                <xsl:text>-</xsl:text>
596                                <xsl:value-of select="substring-before(substring-after(DOCUMENTS/DATE_DE_SAISIE_D,'/'),'/')"/>
597                                <xsl:text>-</xsl:text>
598                                <xsl:value-of select="substring-before(DOCUMENTS/DATE_DE_SAISIE_D,'/')"/>
599                        </xsl:element>                 
600                </xsl:element>
601        </xsl:if>
602
603        <!-- Type de nature -->
604        <xsl:if test="TYPES_NATURE_N">
605                <xsl:call-template name="construct_repeat">
606                                <xsl:with-param name="chaine" select="TYPES_NATURE_N"/>
607                                <xsl:with-param name="field_number" select="'905'"/>
608                                <xsl:with-param name="subfield_number" select="'a'"/>
609                </xsl:call-template>
610        </xsl:if>
611       
612        <!-- Niveau -->
613        <xsl:if test="NIVEAUX_N">
614                <xsl:call-template name="construct_repeat">
615                                <xsl:with-param name="chaine" select="NIVEAUX_N"/>
616                                <xsl:with-param name="field_number" select="'906'"/>
617                                <xsl:with-param name="subfield_number" select="'a'"/>
618                </xsl:call-template>
619        </xsl:if>
620</xsl:template>
621
622<!-- Traitement d'une chaine séparée par des '/' -->
623<xsl:template name="construct_repeat">
624        <xsl:param name="chaine"/>
625        <xsl:param name="field_number"/>
626        <xsl:param name="subfield_number"/>
627       
628        <xsl:if test="normalize-space(substring-before($chaine,'/'))">
629                <xsl:variable name="chaine_no" select="substring-before($chaine,'/')"/>
630                <xsl:element name="f">
631                        <xsl:attribute name="c"><xsl:value-of select="$field_number"/></xsl:attribute>
632                        <xsl:element name="s">
633                                <xsl:attribute name="c"><xsl:value-of select="$subfield_number"/></xsl:attribute>
634                                <xsl:value-of select="normalize-space($chaine_no)"/>
635                        </xsl:element>                 
636                </xsl:element>
637        </xsl:if>
638       
639        <xsl:if test="not(normalize-space(substring-before($chaine,'/'))) and normalize-space($chaine)">
640                <xsl:variable name="chaine_no" select="$chaine"/>
641                <xsl:element name="f">
642                        <xsl:attribute name="c"><xsl:value-of select="$field_number"/></xsl:attribute>
643                        <xsl:element name="s">
644                                <xsl:attribute name="c"><xsl:value-of select="$subfield_number"/></xsl:attribute>
645                                <xsl:value-of select="normalize-space($chaine_no)"/>
646                        </xsl:element>                 
647                </xsl:element>
648        </xsl:if>
649       
650        <xsl:if test="substring-after($chaine,'/')">
651                <xsl:call-template name="construct_repeat">
652                        <xsl:with-param name="chaine" select="substring-after($chaine,'/')"/>
653                        <xsl:with-param name="field_number" select="$field_number"/>
654                        <xsl:with-param name="subfield_number" select="$subfield_number"/>
655                </xsl:call-template>
656        </xsl:if>
657</xsl:template>
658
659<!-- URL -->
660<xsl:template name="url">
661        <xsl:choose>
662                <xsl:when test="RESSOURCES/ADRESSE_L">
663                        <xsl:element name="f">
664                                <xsl:attribute name="c">856</xsl:attribute>
665                                <xsl:element name="s">
666                                        <xsl:attribute name="c">u</xsl:attribute>
667                                        <xsl:value-of select="RESSOURCES/ADRESSE_L"/>
668                                </xsl:element>                 
669                        </xsl:element>
670                </xsl:when>
671                <xsl:when test="RESSOURCES/RESSOURCE_L">
672                        <xsl:element name="f">
673                                <xsl:attribute name="c">856</xsl:attribute>
674                                <xsl:element name="s">
675                                        <xsl:attribute name="c">u</xsl:attribute>
676                                        <xsl:value-of select="RESSOURCES/RESSOURCE_L"/>
677                                </xsl:element>                 
678                        </xsl:element>
679                </xsl:when>
680        </xsl:choose>
681</xsl:template>
682
683<!-- Périodiques -->
684<xsl:template name="periodiques">
685        <xsl:element name="f">
686                <xsl:attribute name="c">464</xsl:attribute>
687                <xsl:element name="s">
688                        <xsl:attribute name="c">t</xsl:attribute>
689                        <xsl:value-of select="DOCUMENTS/COLLECTIONS/COLLECTION_C"/>
690                </xsl:element>
691                <xsl:if test="DOCUMENTS/NO_COLLECTION_D">
692                        <xsl:element name="s">
693                                <xsl:attribute name="c">v</xsl:attribute>
694                                <xsl:value-of select="DOCUMENTS/NO_COLLECTION_D"/>
695                        </xsl:element>
696                </xsl:if>
697                <xsl:if test="DOCUMENTS/DATE_DE_PARUTION_D">
698                        <xsl:element name="s">
699                                <xsl:attribute name="c">d</xsl:attribute>
700                                <xsl:value-of select="DOCUMENTS/DATE_DE_PARUTION_D"/>
701                        </xsl:element>
702                </xsl:if>
703               
704                <xsl:if test="DOCUMENTS/DOCUMENT_D">
705                        <xsl:element name="s">
706                                <xsl:attribute name="c">o</xsl:attribute>
707                                <xsl:value-of select="DOCUMENTS/DOCUMENT_D"/>
708                        </xsl:element>
709                </xsl:if>
710               
711                <xsl:if test="COLLATION_N">
712                        <xsl:element name="s">
713                                <xsl:attribute name="c">p</xsl:attribute>
714                                <xsl:value-of select="COLLATION_N"/>
715                        </xsl:element>
716                </xsl:if>
717                <xsl:if test="DOCUMENTS/ISSN_D">
718                        <xsl:element name="s">
719                                <xsl:attribute name="c">x</xsl:attribute>
720                                <xsl:value-of select="DOCUMENTS/ISSN_D"/>
721                        </xsl:element>
722                </xsl:if>
723        </xsl:element>
724</xsl:template>
725
726<!-- Chapitre -->
727<xsl:template name="chapitre">
728        <xsl:if test="normalize-space(DOCUMENTS/DOCUMENT_D) != ''">
729                <xsl:element name="f">
730                <xsl:attribute name="c">463</xsl:attribute>
731                        <xsl:element name="s">
732                                <xsl:attribute name="c">t</xsl:attribute>
733                                <xsl:value-of select="DOCUMENTS/DOCUMENT_D"/>
734                        </xsl:element>
735                        <xsl:element name="s">
736                                <xsl:attribute name="c">9</xsl:attribute>
737                                <xsl:value-of select="concat('id:',DOCUMENTS/IDENTITE_D_D)"/>
738                        </xsl:element>
739                        <xsl:if test="normalize-space(DOCUMENTS/ISBN_D) != ''">
740                                <xsl:element name="s">
741                                        <xsl:attribute name="c">y</xsl:attribute>
742                                        <xsl:value-of select="DOCUMENTS/ISBN_D"/>
743                                </xsl:element>
744                        </xsl:if>
745                        <s c='9'>bl:m0</s>
746                        <s c='9'>type_lnk:d</s>
747                        <s c='9'>lnk:parent</s>
748                </xsl:element>
749        </xsl:if>
750</xsl:template>
751
752<!-- Exemplaires -->
753<xsl:template name="exemplaires">
754        <xsl:param name="n_ex"/>
755        <xsl:if test="EXEMPLAIRES[$n_ex]">     
756                <xsl:element name="f">
757                        <xsl:attribute name="c">995</xsl:attribute>
758                        <!-- Localisation -->
759                        <xsl:if test="EXEMPLAIRES[$n_ex]/EMPLACEMENT_X">
760                                <xsl:element name="s">
761                                        <xsl:attribute name="c">a</xsl:attribute>
762                                        <xsl:value-of select="EXEMPLAIRES[$n_ex]/EMPLACEMENT_X"/>
763                                </xsl:element>
764                        </xsl:if>
765                        <!-- Code barre -->
766                        <xsl:call-template name="code_barre">
767                                <xsl:with-param name="n_ex" select="$n_ex"/>   
768                        </xsl:call-template>
769                        <!-- Cote -->
770                        <xsl:choose>
771                                <xsl:when test="EXEMPLAIRES[$n_ex]/COTE_E_X">
772                                        <xsl:element name="s">
773                                                <xsl:attribute name="c">k</xsl:attribute>
774                                                <xsl:value-of select="EXEMPLAIRES[$n_ex]/COTE_E_X"/>
775                                        </xsl:element>
776                                </xsl:when>
777                                <xsl:otherwise>
778                                        <xsl:element name="s">
779                                                <xsl:attribute name="c">k</xsl:attribute>
780                                                <xsl:text>ARCHIVES</xsl:text>
781                                        </xsl:element>
782                                </xsl:otherwise>
783                        </xsl:choose>
784                        <!-- Autres éléments de l'exemplaire (section, ...) -->
785                        <xsl:if test="PUBLICS_N">
786                                <xsl:element name="s">
787                                        <xsl:attribute name="c">q</xsl:attribute>
788                                        <xsl:value-of select="normalize-space(substring-before(PUBLICS_N,'/'))"/>
789                                </xsl:element>
790                        </xsl:if>       
791                        <xsl:if test="DOCUMENTS/SUPPORT_D">
792                                <xsl:element name="s">
793                                        <xsl:attribute name="c">r</xsl:attribute>
794                                        <xsl:value-of select="DOCUMENTS/SUPPORT_D"/>
795                                </xsl:element>
796                        </xsl:if>
797                        <xsl:if test="TYPES_NATURE_N">
798                                <xsl:element name="s">
799                                        <xsl:attribute name="c">t</xsl:attribute>
800                                        <xsl:value-of select="normalize-space(substring-before(TYPES_NATURE_N,'/'))"/>
801                                </xsl:element>
802                        </xsl:if>       
803                        <!-- Commentaire -->
804                        <xsl:if test="EXEMPLAIRES[$n_ex]/DIVERS_E_X">
805                                <xsl:element name="s">
806                                        <xsl:attribute name="c">u</xsl:attribute>
807                                        <xsl:value-of select="EXEMPLAIRES/DIVERS_E_X"/>
808                                </xsl:element>
809                        </xsl:if>
810                </xsl:element>
811                <xsl:if test="EXEMPLAIRES[$n_ex+1]">
812                        <xsl:call-template name="exemplaires">
813                                <xsl:with-param name="n_ex" select="$n_ex+1"/> 
814                        </xsl:call-template>
815                </xsl:if>
816        </xsl:if>
817</xsl:template>
818<!-- Numéro d'exemplaire -->
819<xsl:template name="code_barre">
820                <xsl:param name="n_ex"/>
821                <xsl:choose>
822                        <xsl:when test="EXEMPLAIRES[$n_ex]/CODE_EXEMPLAIRE_X">
823                                <xsl:element name="s">
824                                        <xsl:attribute name="c">f</xsl:attribute>
825                                        <xsl:value-of select="EXEMPLAIRES[$n_ex]/CODE_EXEMPLAIRE_X"/>
826                                </xsl:element>
827                        </xsl:when>
828                        <xsl:otherwise>
829                                <xsl:choose>
830                                        <xsl:when test="DOCUMENTS/CODE_BARRE_D">
831                                                <xsl:element name="s">
832                                                        <xsl:attribute name="c">f</xsl:attribute>
833                                                        <xsl:value-of select="DOCUMENTS/CODE_BARRE_D"/>
834                                                </xsl:element>
835                                        </xsl:when>
836                                        <xsl:otherwise>
837                                                <xsl:element name="s">
838                                                        <xsl:attribute name="c">f</xsl:attribute>
839                                                        <xsl:text>INCONNU</xsl:text>
840                                                </xsl:element>
841                                        </xsl:otherwise>
842                                </xsl:choose>
843                        </xsl:otherwise>
844                </xsl:choose>
845</xsl:template>
846
847<!-- /DOCUMENTS -->
848
849<xsl:template match="*"/>
850
851</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.