source: pmb4.1/trunk/fuentes/pmb/admin/convert/imports/usmarciso2pmbxmlunimarc/usmarc.xsl @ 478

Last change on this file since 478 was 478, checked in by mabarracus, 4 years ago

copy trusty code 4.1

  • Property svn:executable set to *
File size: 26.4 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<xsl:stylesheet version = '1.0'
3     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
4                <xsl:output method="xml" indent='yes'/>
5
6<xsl:template match="pmbmarc">
7        <unimarc>
8                <xsl:apply-templates select="notice"/>
9        </unimarc>
10</xsl:template>
11
12<xsl:template match="pmbmarc/notice">
13        <notice>
14                <xsl:element name="rs">*</xsl:element>
15                <xsl:element name="ru">*</xsl:element>
16                <xsl:element name="el">1</xsl:element>
17                <xsl:element name="bl"><xsl:value-of select="./bl"/></xsl:element>
18                <xsl:element name="hl"><xsl:value-of select="./hl"/></xsl:element><!-- niveau hierarchique:  -->
19                <xsl:element name="dt"><xsl:value-of select="./dt"/></xsl:element>
20                <xsl:call-template name="record_identifier"/>
21        <xsl:call-template name="identifier"/> 
22                <xsl:call-template name="langue"/>
23                <xsl:call-template name="titre"/>       
24                <xsl:call-template name="mention"/>     
25                <xsl:call-template name="editeur"/>
26                <xsl:call-template name="physical_description"/>
27                <xsl:call-template name="series"/>
28                <xsl:call-template name="contens_note"/>
29                <xsl:call-template name="summary"/>
30                <xsl:call-template name="collection"/>
31                <xsl:call-template name="sous_collection"/>
32                <xsl:call-template name="num_serie"/>
33                <xsl:call-template name="descripteurs"/>
34                <xsl:call-template name="mots_cles"/>
35                <xsl:call-template name="dewey"/>
36                <xsl:call-template name="autorite"/>
37                <xsl:call-template name="autorite_701"/>
38                <xsl:call-template name="autorite_710"/>
39                <xsl:call-template name="autorite_711"/>
40                <xsl:call-template name="electronic_location"/> 
41        </notice>
42</xsl:template>
43
44
45<xsl:template name="record_identifier">
46        <xsl:if test="./f[@c='001']">
47                <f c="001"><xsl:value-of select="./f"/></f>
48                       
49        </xsl:if>       
50</xsl:template>
51
52
53<!-- fonction identifier: récupère ISBN et Prix
54En entrée: Marc21
55    <f c="020" ind="  ">
56      <s c="a">0585212163 (electronic bk.)</s>
57          <s c="c">20 Euro</s>
58    </f>
59    <f c="020" ind="  ">
60      <s c="a">9780585212166 (electronic bk.)</s>
61    </f>       
62
63En sortie: Unimarc
64        <f c="010">
65                <s c="a">0585212163</s>
66                <s c="d">20 Euro</s>
67        </f>
68        <f c="010">
69                <s c="a">9780585212166</s>
70        </f>
71-->
72<xsl:template name="identifier">
73        <xsl:for-each select="./f[@c='020']">
74                <f c="010">
75                        <xsl:if test="./s[@c='a']">
76                                <!-- ISBN 020 a -> 010 a -->
77                                <s c="a">
78                                        <xsl:choose>
79                                                <xsl:when test="contains(./s[@c='a'],'(')">
80                                                        <xsl:value-of select="normalize-space(substring-before(./s[@c='a'],'('))"/>
81                                                </xsl:when>
82                                                <xsl:otherwise>
83                                                        <xsl:value-of select="normalize-space(./s[@c='a'])"/>
84                                                </xsl:otherwise>
85                                        </xsl:choose>
86                                </s>   
87                        </xsl:if>
88                        <xsl:if test="./s[@c='c']">                                                     
89                                <!-- Prix: 020 c -> 010 d -->
90                                <s c="d">
91                                        <xsl:value-of select="./s[@c='c']"/>
92                                </s>   
93                        </xsl:if>                                                                       
94                </f>   
95        </xsl:for-each> 
96</xsl:template>
97
98<!-- fonction langue récupère langue et langue originale
99En entrée: Marc21
100        <f c="041" ind=" 1">
101      <s c="a">Anglais</s>
102          <s c="h">Francais</s>
103    </f>
104En sortie: Unimarc
105                <f c="101" ind=" 1">
106                        <s c="a">Anglais</s>
107                        <s c="c">Francais</s>
108                </f>   
109-->
110<xsl:template name="langue">
111        <xsl:choose>
112                <xsl:when test="./f[@c='041']">         
113                        <xsl:element name="f"> 
114                                <xsl:attribute name="c">101</xsl:attribute>     
115                                <xsl:attribute name="ind"><xsl:value-of select="./f[@c='041']/@ind"/></xsl:attribute>                           
116                                <xsl:if test="./f[@c='041']/s[@c='a']">         
117                                        <!-- langue 041 a -> 101 a -->
118                                        <s c="a">
119                                                <xsl:value-of select="./f[@c='041']/s[@c='a']"/>
120                                        </s>   
121                                </xsl:if>
122                                <xsl:if test="./f[@c='041']/s[@c='h']">                                                 
123                                        <!-- langue originale: 041 h -> 041 c -->
124                                        <s c="c">
125                                                <xsl:value-of select="./f[@c='041']/s[@c='h']"/>
126                                        </s>   
127                                </xsl:if>                                                                       
128                        </xsl:element>
129                </xsl:when>
130                <xsl:otherwise>
131                        <xsl:if test="./f[@c='008']">
132                        <xsl:element name="f"> 
133                                <xsl:attribute name="c">101</xsl:attribute>     
134                                <xsl:attribute name="ind">  </xsl:attribute>
135                                        <s c="a">
136                                                <xsl:value-of select="substring(./f[@c='008'],36,3)"/>
137                                        </s>
138                                </xsl:element>
139                        </xsl:if>                               
140                </xsl:otherwise>
141        </xsl:choose>                   
142</xsl:template>
143
144
145
146<!-- fonction titre
147En entrée: Marc21
148    <f c="245" ind="10">
149      <s c="a">Introduction to survey sampling</s>
150      <s c="h">[electronic resource] /</s>
151      <s c="c">Graham Kalton.</s>
152    </f>
153En sortie: Unimarc
154                <f c="200" ind="10">
155                        <s c="a">Introduction to survey sampling</s>
156                        <s c="c">Introduction to 2</s>
157                        <s c="b">[electronic resource] /</s>
158                        <s c="f">Graham Kalton.</s>
159                </f>
160-->
161<xsl:template name="titre">
162        <xsl:if test="./f[@c='245']">           
163                <xsl:element name="f"> 
164                        <xsl:attribute name="c">200</xsl:attribute>     
165                        <xsl:attribute name="ind"><xsl:value-of select="./f[@c='245']/@ind"/></xsl:attribute>
166                        <!-- Title Proper a -> a -->
167                        <s c="a"><xsl:value-of select="./f[@c='245']/s[@c='a'][1]"/></s>       
168                        <!-- Title Proper a -> c -->
169                        <xsl:if test="./f[@c='245']/s[@c='a'][2]">     
170                                <s c="c"><xsl:value-of select="./f[@c='245']/s[@c='a'][2]"/></s>
171                        </xsl:if>
172                        <!-- Medium h -> b -->
173                        <xsl:for-each select="./f[@c='245']/s[@c='h']">                                                         
174                                <s c="b"><xsl:value-of select="."/></s> 
175                        </xsl:for-each>
176                        <!-- Other title information b -> e -->
177                        <xsl:if test="./f[@c='245']/s[@c='b']"> 
178                                <s c="e"><xsl:value-of select="./f[@c='245']/s[@c='b']"/></s>
179                        </xsl:if>                       
180                        <!-- 1st statement of resp. c -> f -->
181                        <xsl:if test="./f[@c='245']/s[@c='c'][1]">     
182                                <s c="f"><xsl:value-of select="./f[@c='245']/s[@c='c'][1]"/></s>
183                        </xsl:if>
184                        <!-- Subs. state. of resp. c -> g -->
185                        <xsl:if test="./f[@c='245']/s[@c='c'][2]">     
186                                <s c="g"><xsl:value-of select="./f[@c='245']/s[@c='c'][2]"/></s>
187                        </xsl:if>       
188                        <!-- Name of part n -> h -->
189                        <xsl:if test="./f[@c='245']/s[@c='n'][1]">     
190                                <s c="h"><xsl:value-of select="./f[@c='245']/s[@c='n'][1]"/></s>
191                        </xsl:if>               
192                        <!-- Name of part p -> i -->
193                        <xsl:if test="./f[@c='245']/s[@c='i'][1]">     
194                                <s c="i"><xsl:value-of select="./f[@c='245']/s[@c='i'][1]"/></s>
195                        </xsl:if>                                                                                                                                                                                                                                                                                                                                                                       
196                </xsl:element>
197        </xsl:if>       
198</xsl:template>
199
200
201<!-- fonction mention d'édition
202En entrée: Marc21
203
204En sortie: Unimarc
205       
206-->
207<xsl:template name="mention">
208        <xsl:for-each select="./f[@c='250']">
209                <f c="010" ind='  '>
210                        <xsl:if test="./s[@c='a']">             
211                                <!-- Edition statement a -> a -->
212                                <s c="a">
213                                        <xsl:value-of select="./s[@c='a']"/>
214                                </s>   
215                        </xsl:if>
216                        <xsl:if test="./s[@c='b']">                                                     
217                                <!-- Statement of respons. b -> f -->
218                                <s c="f">
219                                        <xsl:value-of select="./s[@c='b']"/>
220                                </s>   
221                        </xsl:if>                                                                       
222                </f>   
223        </xsl:for-each> 
224</xsl:template>
225
226<!-- fonction editeur
227En entrée: Marc21
228    <f c="260" ind="  ">
229      <s c="a">Beverly Hills, Calif. :</s>
230      <s c="b">Sage Publications,</s>
231      <s c="c">c1983.</s>
232    </f>
233En sortie: Unimarc
234                <f c="210" ind="  ">
235                        <s c="a">Beverly Hills, Calif. :</s>
236                        <s c="c">Sage Publications,</s>
237                        <s c="d">c1983.</s>
238                </f>   
239-->
240<xsl:template name="editeur">
241        <xsl:if test="./f[@c='260']">
242                <f c="210" ind='  '>
243                        <!-- Place of public./distr a -> a -->
244                        <xsl:for-each select="./f[@c='260']/s[@c='a']">                         
245                                <s c="a"><xsl:value-of select="."/></s> 
246                        </xsl:for-each>                                 
247                        <!-- Name of publisher/dist. b -> c -->
248                        <xsl:for-each select="./f[@c='260']/s[@c='b']">                         
249                                <s c="c"><xsl:value-of select="."/></s> 
250                        </xsl:for-each> 
251                        <!-- Date of publication c -> d -->
252                        <xsl:for-each select="./f[@c='260']/s[@c='c']">                         
253                                <s c="d"><xsl:value-of select="."/></s> 
254                        </xsl:for-each> 
255
256                        <!-- Place of manufacture e -> e -->
257                        <xsl:for-each select="./f[@c='260']/s[@c='e']">                         
258                                <s c="e"><xsl:value-of select="."/></s> 
259                        </xsl:for-each> 
260                        <!-- Name of manufacturer f -> g -->
261                        <xsl:for-each select="./f[@c='260']/s[@c='f']">                         
262                                <s c="g"><xsl:value-of select="."/></s> 
263                        </xsl:for-each>         
264                        <!-- Date of manufacture g -> h -->
265                        <xsl:for-each select="./f[@c='260']/s[@c='g']">                         
266                                <s c="h"><xsl:value-of select="."/></s> 
267                        </xsl:for-each>                                                                                                                                                                                                                 
268                </f>   
269        </xsl:if>       
270</xsl:template>
271
272<!-- fonction physical_description
273En entrée: Marc21
274    <f c="300" ind="  ">
275      <s c="a">96 p. ;</s>
276      <s c="c">22 cm.</s>
277    </f>
278En sortie: Unimarc
279                <f c="215" ind="  ">
280                        <s c="a">96 p. ;</s>
281                        <s c="d">22 cm.</s>
282                </f>   
283-->
284<xsl:template name="physical_description">
285        <xsl:for-each select="./f[@c='300']">
286                <f c="215" ind='  '>
287                        <!-- SMD/extent of item a -> a -->     
288                        <xsl:for-each select="./s[@c='a']">     
289                                <s c="a"><xsl:value-of select="."/></s> 
290                        </xsl:for-each>
291                        <!-- Other physical details  b -> c -->
292                        <xsl:for-each select="./s[@c='b']">     
293                                <s c="c"><xsl:value-of select="."/></s> 
294                        </xsl:for-each>
295                        <!-- Dimensions details  c -> d -->
296                        <xsl:for-each select="./s[@c='c']">     
297                                <s c="d"><xsl:value-of select="."/></s> 
298                        </xsl:for-each>
299                        <!-- Accompanying material  e -> e -->
300                        <xsl:for-each select="./s[@c='e']">     
301                                <s c="e"><xsl:value-of select="."/></s> 
302                        </xsl:for-each>                                                 
303                </f>   
304        </xsl:for-each> 
305</xsl:template>
306
307<!-- fonction series
308En entrée: Marc21
309 
310En sortie: Unimarc     
311-->
312       
313<xsl:template name="series">
314       
315        <xsl:for-each select="./f[@c='440']">
316                <xsl:element name="f"> 
317                        <xsl:attribute name="c">225</xsl:attribute>
318                        <xsl:attribute name="ind"><xsl:text>2 </xsl:text></xsl:attribute>
319                        <xsl:for-each select="./s[@c='a']">     
320                                <s c="a"><xsl:value-of select="."/></s> 
321                        </xsl:for-each>
322                        <xsl:for-each select="./s[@c='v']">     
323                                <s c="v"><xsl:value-of select="."/></s> 
324                        </xsl:for-each>
325                        <xsl:for-each select="./s[@c='x']">     
326                                <s c="x"><xsl:value-of select="."/></s> 
327                        </xsl:for-each>                                 
328                </xsl:element> 
329        </xsl:for-each>
330       
331        <xsl:for-each select="./f[@c='490']">
332                <xsl:element name="f"> 
333                        <xsl:attribute name="c">225</xsl:attribute>
334                        <xsl:if test="./@ind=0">       
335                                <xsl:attribute name="ind"><xsl:text> 1</xsl:text></xsl:attribute>
336                        </xsl:if>
337                        <xsl:if test="./@ind=1">       
338                                <xsl:attribute name="ind"><xsl:text> 0</xsl:text></xsl:attribute>
339                        </xsl:if>                       
340                        <!-- Series title a -> a -->   
341                        <xsl:for-each select="./s[@c='a']">     
342                                <s c="a"><xsl:value-of select="."/></s> 
343                        </xsl:for-each>
344                        <!-- Volume designation  v -> v -->e
345                        <xsl:for-each select="./s[@c='v']">     
346                                <s c="v"><xsl:value-of select="."/></s> 
347                        </xsl:for-each>
348                        <!-- ISSN  x -> x -->
349                        <xsl:for-each select="./s[@c='x']">     
350                                <s c="x"><xsl:value-of select="."/></s> 
351                        </xsl:for-each>                                 
352                </xsl:element> 
353        </xsl:for-each> 
354</xsl:template>
355
356
357<!-- fonction general_notes
358En entrée: Marc21
359
360En sortie: Unimarc
361       
362-->
363<xsl:template name="general_notes">
364        <xsl:for-each select="./f[@c='500']">
365                <f c="300" ind='  '>
366                        <xsl:if test="./s[@c='a']">             
367                                <!-- Text of note a -> a -->
368                                <s c="a"><xsl:value-of select="./s[@c='a']"/></s>       
369                        </xsl:if>                                                                       
370                </f>   
371        </xsl:for-each> 
372</xsl:template>
373
374<!-- fonction contens_note
375En entrée: Marc21
376
377En sortie: Unimarc
378       
379-->
380<xsl:template name="contens_note">
381        <xsl:if test="./f[@c='505']">
382                <xsl:element name="f"> 
383                        <xsl:attribute name="c">327</xsl:attribute>
384                        <xsl:if test="./f[@c='505']/@ind=0">   
385                                <xsl:attribute name="ind"><xsl:text> 1</xsl:text></xsl:attribute>
386                        </xsl:if>
387                        <xsl:if test="./f[@c='505']/@ind=1">   
388                                <xsl:attribute name="ind"><xsl:text> 0</xsl:text></xsl:attribute>
389                        </xsl:if>               
390                        <xsl:if test="./f[@c='505']/s[@c='a']">         
391                                <!-- Text of note a -> a -->
392                                <s c="a"><xsl:value-of select="./f[@c='505']/s[@c='a']"/></s>   
393                        </xsl:if>                                                                       
394                </xsl:element> 
395        </xsl:if>
396</xsl:template>
397
398
399<!-- fonction summary
400En entrée: Marc21
401
402En sortie: Unimarc
403       
404-->
405<xsl:template name="summary">
406        <xsl:for-each select="./f[@c='520']">
407                <f c="330" ind='  '>
408                        <xsl:if test="./s[@c='a']">             
409                                <!-- Text of note a -> a -->
410                                <s c="a"><xsl:value-of select="./s[@c='a']"/></s>       
411                        </xsl:if>                                                                       
412                </f>   
413        </xsl:for-each> 
414</xsl:template>
415
416<!-- fonction notice_code
417En entrée: Marc21
418
419En sortie: Unimarc
420       
421-->
422<xsl:template name="notice_code">
423        <xsl:for-each select="./f[@c='037']">
424                <f c="345" ind='  '>
425                        <!-- Source for acquisition b -> a -->
426                        <xsl:if test="./s[@c='b']">                             
427                                <s c="a"><xsl:value-of select="./s[@c='b']"/></s>       
428                        </xsl:if>
429                        <!-- Stock number a -> b -->   
430                        <xsl:if test="./s[@c='a']">                             
431                                <s c="b"><xsl:value-of select="./s[@c='a']"/></s>       
432                        </xsl:if>
433                        <!-- Medium f -> c -->
434                        <xsl:for-each select="./s[@c='f']">     
435                                <s c="e"><xsl:value-of select="."/></s> 
436                        </xsl:for-each>         
437                        <!-- Terms of availability c -> d -->
438                        <xsl:for-each select="./s[@c='f']">     
439                                <s c="e"><xsl:value-of select="."/></s> 
440                        </xsl:for-each>                                                                                                         
441                </f>   
442        </xsl:for-each> 
443</xsl:template>
444
445
446<!-- fonction collection        760 - > 411
447En entrée: Marc21
448
449En sortie: Unimarc
450       
451-->
452<xsl:template name="collection">
453        <xsl:for-each select="./f[@c='760']">
454                <xsl:element name="f"> 
455                        <xsl:attribute name="c">410</xsl:attribute>
456                        <xsl:if test="./@ind='1 '">     
457                                <xsl:attribute name="ind"><xsl:text> 0</xsl:text></xsl:attribute>
458                        </xsl:if>
459                        <xsl:if test="./@ind='0 '">     
460                                <xsl:attribute name="ind"><xsl:text> 1</xsl:text></xsl:attribute>
461                        </xsl:if>                                       
462                        <!-- Cont. no. of linked rec w -> 3 -->
463                        <xsl:if test="./s[@c='3']">                             
464                                <s c="3"><xsl:value-of select="./s[@c='w']"/></s>       
465                        </xsl:if>
466                        <!-- Title t -> t -->   
467                        <xsl:if test="./s[@c='t']">                             
468                                <s c="t"><xsl:value-of select="./s[@c='t']"/></s>       
469                        </xsl:if>
470                        <!-- Volume designation g -> v -->
471                        <xsl:for-each select="./s[@c='g']">     
472                                <s c="v"><xsl:value-of select="."/></s> 
473                        </xsl:for-each>         
474                        <!-- ISSN of linked record x -> x -->   
475                        <xsl:if test="./s[@c='x']">                             
476                                <s c="x"><xsl:value-of select="./s[@c='t']"/></s>       
477                        </xsl:if>
478                        <!-- ISBN of linked record x -> x -->   
479                        <xsl:if test="./s[@c='z']">                             
480                                <s c="y"><xsl:value-of select="./s[@c='z']"/></s>       
481                        </xsl:if>                                                                                                                                               
482                </xsl:element> 
483        </xsl:for-each> 
484</xsl:template>
485
486<!-- fonction sous_collection   762 - > 411
487En entrée: Marc21
488
489En sortie: Unimarc
490       
491-->
492<xsl:template name="sous_collection">
493        <xsl:for-each select="./f[@c='762']">
494                <xsl:element name="f"> 
495                        <xsl:attribute name="c">411</xsl:attribute>
496                        <xsl:if test="./@ind='1 '">     
497                                <xsl:attribute name="ind"><xsl:text> 0</xsl:text></xsl:attribute>
498                        </xsl:if>
499                        <xsl:if test="./@ind='0 '">     
500                                <xsl:attribute name="ind"><xsl:text> 1</xsl:text></xsl:attribute>
501                        </xsl:if>                                       
502                        <!-- Cont. no. of linked rec w -> 3 -->
503                        <xsl:if test="./s[@c='3']">                             
504                                <s c="3"><xsl:value-of select="./s[@c='w']"/></s>       
505                        </xsl:if>
506                        <!-- Title t -> t -->   
507                        <xsl:if test="./s[@c='t']">                             
508                                <s c="t"><xsl:value-of select="./s[@c='t']"/></s>       
509                        </xsl:if>
510                        <!-- Volume designation g -> v -->
511                        <xsl:for-each select="./s[@c='g']">     
512                                <s c="v"><xsl:value-of select="."/></s> 
513                        </xsl:for-each>         
514                        <!-- ISSN of linked record x -> x -->   
515                        <xsl:if test="./s[@c='x']">                             
516                                <s c="x"><xsl:value-of select="./s[@c='t']"/></s>       
517                        </xsl:if>
518                        <!-- ISBN of linked record x -> x -->   
519                        <xsl:if test="./s[@c='z']">                             
520                                <s c="y"><xsl:value-of select="./s[@c='z']"/></s>       
521                        </xsl:if>                                                                                                                                               
522                </xsl:element> 
523        </xsl:for-each> 
524</xsl:template>
525
526
527<!-- fonction num_serie  461 -> 774
528En entrée: Marc21
529
530En sortie: Unimarc
531       
532-->
533<xsl:template name="num_serie">
534        <xsl:for-each select="./f[@c='774']">
535                <xsl:element name="f"> 
536                        <xsl:attribute name="c">461</xsl:attribute>
537                        <xsl:if test="./@ind='1 '">     
538                                <xsl:attribute name="ind"><xsl:text> 0</xsl:text></xsl:attribute>
539                        </xsl:if>
540                        <xsl:if test="./@ind='0 '">     
541                                <xsl:attribute name="ind"><xsl:text> 1</xsl:text></xsl:attribute>
542                        </xsl:if>                                       
543                        <!-- Cont. no. of linked rec w -> 3 -->
544                        <xsl:if test="./s[@c='3']">                             
545                                <s c="3"><xsl:value-of select="./s[@c='w']"/></s>       
546                        </xsl:if>
547                        <!-- Title t -> t -->   
548                        <xsl:if test="./s[@c='t']">                             
549                                <s c="t"><xsl:value-of select="./s[@c='t']"/></s>       
550                        </xsl:if>
551                        <!-- Volume designation g -> v -->
552                        <xsl:for-each select="./s[@c='g']">     
553                                <s c="v"><xsl:value-of select="."/></s> 
554                        </xsl:for-each>         
555                        <!-- ISSN of linked record x -> x -->   
556                        <xsl:if test="./s[@c='x']">                             
557                                <s c="x"><xsl:value-of select="./s[@c='t']"/></s>       
558                        </xsl:if>
559                        <!-- ISBN of linked record x -> x -->   
560                        <xsl:if test="./s[@c='z']">                             
561                                <s c="y"><xsl:value-of select="./s[@c='z']"/></s>       
562                        </xsl:if>                                                                                                                                               
563                </xsl:element> 
564        </xsl:for-each> 
565</xsl:template>
566
567<!-- fonction mots_cles  650 -> 606
568En entrée: Marc21
569
570En sortie: Unimarc
571       
572-->
573<xsl:template name="descripteurs">
574        <xsl:for-each select="./f[@c='650']">
575                <xsl:element name="f"> 
576                        <xsl:attribute name="c">606</xsl:attribute>
577                        <xsl:attribute name="ind"><xsl:text>  </xsl:text></xsl:attribute>
578
579                        <!-- Subject term a -> a -->
580                        <xsl:for-each select="./s[@c='a']">     
581                                <s c="a"><xsl:value-of select="."/></s> 
582                        </xsl:for-each>         
583                       
584                        <!-- Subject term x -> x -->
585                        <xsl:for-each select="./s[@c='x']">     
586                                <s c="x"><xsl:value-of select="."/></s> 
587                        </xsl:for-each>
588                                               
589                        <!-- Subject term z -> y -->
590                        <xsl:for-each select="./s[@c='z']">     
591                                <s c="y"><xsl:value-of select="."/></s> 
592                        </xsl:for-each>
593                       
594                        <!-- Subject term y -> z -->
595                        <xsl:for-each select="./s[@c='y']">     
596                                <s c="z"><xsl:value-of select="."/></s> 
597                        </xsl:for-each>                                                                                         
598                </xsl:element> 
599        </xsl:for-each> 
600</xsl:template>
601
602<!-- fonction mots_cles  653 -> 610
603En entrée: Marc21
604
605En sortie: Unimarc
606       
607-->
608<xsl:template name="mots_cles">
609        <xsl:for-each select="./f[@c='653']">
610                <xsl:element name="f"> 
611                        <xsl:attribute name="c">610</xsl:attribute>
612                        <xsl:attribute name="ind">./@ind</xsl:attribute>
613
614                        <!-- Subject term a -> a -->
615                        <xsl:for-each select="./s[@c='a']">     
616                                <s c="a"><xsl:value-of select="."/></s> 
617                        </xsl:for-each>         
618                                                                                                                       
619                </xsl:element> 
620        </xsl:for-each> 
621</xsl:template>
622
623<!-- fonction dewey  082 -> 676
624En entrée: Marc21
625
626En sortie: Unimarc
627       
628-->
629<xsl:template name="dewey">
630        <xsl:for-each select="./f[@c='082']">
631                <xsl:element name="f"> 
632                        <xsl:attribute name="c">676</xsl:attribute>
633                        <xsl:attribute name="ind"><xsl:text>  </xsl:text></xsl:attribute>
634
635                        <!-- Number a -> a -->
636                        <xsl:if test="./s[@c='a']">                             
637                                <s c="a"><xsl:value-of select="./s[@c='a']"/></s>       
638                        </xsl:if>               
639                        <!-- Edition 2 -> v -->
640                        <xsl:if test="./s[@c='2']">                             
641                                <s c="v"><xsl:value-of select="./s[@c='2']"/></s>       
642                        </xsl:if>                                                                                                                               
643                </xsl:element> 
644        </xsl:for-each> 
645</xsl:template>
646
647<!-- fonction autorite  100 -> 700
648En entrée: Marc21
649
650En sortie: Unimarc
651       
652-->
653<xsl:template name="autorite">
654        <xsl:for-each select="./f[@c='100']">
655                <xsl:element name="f"> 
656                        <xsl:attribute name="c">700</xsl:attribute>
657                        <xsl:if test="./@ind='0 '">     
658                                <xsl:attribute name="ind"><xsl:text> 0</xsl:text></xsl:attribute>
659                        </xsl:if>
660                        <xsl:if test="./@ind='1 '">     
661                                <xsl:attribute name="ind"><xsl:text> 1</xsl:text></xsl:attribute>
662                        </xsl:if>
663                        <!-- Entry element a -> a -->
664                        <xsl:if test="./s[@c='a']">                             
665                                <s c="a"><xsl:value-of select="./s[@c='a']"/></s>       
666                        </xsl:if>                                                                                               
667                        <!-- Additions (not dates) c -> c -->
668                        <xsl:for-each select="./s[@c='c']">     
669                                <s c="c"><xsl:value-of select="."/></s> 
670                        </xsl:for-each>         
671                        <!-- Entry element q -> g -->
672                        <xsl:if test="./s[@c='q']">                             
673                                <s c="g"><xsl:value-of select="./s[@c='q']"/></s>       
674                        </xsl:if>                       
675                        <!-- Entry element u -> p -->
676                        <xsl:if test="./s[@c='u']">                             
677                                <s c="p"><xsl:value-of select="./s[@c='u']"/></s>       
678                        </xsl:if>       
679                        <!-- Relator cod 4 -> 4 -->
680                        <xsl:for-each select="./s[@c='4']">     
681                                <s c="4"><xsl:value-of select="."/></s> 
682                        </xsl:for-each>                                                                                                                                                                 
683                </xsl:element> 
684        </xsl:for-each> 
685</xsl:template>
686
687<!-- fonction autorite_701  700 -> 701
688En entrée: Marc21
689
690En sortie: Unimarc
691       
692-->
693<xsl:template name="autorite_701">
694        <xsl:for-each select="./f[@c='700']">
695                <xsl:element name="f"> 
696                        <xsl:attribute name="c">701</xsl:attribute>
697                        <xsl:if test="./@ind='0 '">     
698                                <xsl:attribute name="ind"><xsl:text> 0</xsl:text></xsl:attribute>
699                        </xsl:if>
700                        <xsl:if test="./@ind='1 '">     
701                                <xsl:attribute name="ind"><xsl:text> 1</xsl:text></xsl:attribute>
702                        </xsl:if>
703                        <!-- Entry element a -> a -->
704                        <xsl:if test="./s[@c='a']">                             
705                                <s c="a"><xsl:value-of select="./s[@c='a']"/></s>       
706                        </xsl:if>                                                                                               
707                        <!-- Additions (not dates) c -> c -->
708                        <xsl:for-each select="./s[@c='c']">     
709                                <s c="c"><xsl:value-of select="."/></s> 
710                        </xsl:for-each>         
711                        <!-- Roman numerals b -> d -->
712                        <xsl:if test="./s[@c='b']">                             
713                                <s c="d"><xsl:value-of select="./s[@c='b']"/></s>       
714                        </xsl:if>               
715                        <!-- Dates d -> f -->
716                        <xsl:if test="./s[@c='d']">                             
717                                <s c="f"><xsl:value-of select="./s[@c='d']"/></s>       
718                        </xsl:if>                                                       
719                        <!-- Expansion of initials q -> g -->
720                        <xsl:if test="./s[@c='q']">                             
721                                <s c="g"><xsl:value-of select="./s[@c='q']"/></s>       
722                        </xsl:if>                       
723                        <!-- Affiliation u -> p -->
724                        <xsl:if test="./s[@c='u']">                             
725                                <s c="p"><xsl:value-of select="./s[@c='u']"/></s>       
726                        </xsl:if>       
727                        <!-- Relator cod 4 -> 4 -->
728                        <xsl:for-each select="./s[@c='4']">     
729                                <s c="4"><xsl:value-of select="."/></s> 
730                        </xsl:for-each>                                                                                                                                                                 
731                </xsl:element> 
732        </xsl:for-each> 
733</xsl:template>
734
735<!-- fonction autorite_710  110 -> 710
736En entrée: Marc21
737
738En sortie: Unimarc
739       
740-->
741<xsl:template name="autorite_710">
742        <xsl:for-each select="./f[@c='110']">
743                <xsl:element name="f"> 
744                        <xsl:attribute name="c">710</xsl:attribute>
745                        <xsl:if test="./@ind='0 '">     
746                                <xsl:attribute name="ind"><xsl:text> 0</xsl:text></xsl:attribute>
747                        </xsl:if>
748                        <xsl:if test="./@ind='1 '">     
749                                <xsl:attribute name="ind"><xsl:text> 1</xsl:text></xsl:attribute>
750                        </xsl:if>
751                        <xsl:if test="./@ind='2 '">     
752                                <xsl:attribute name="ind"><xsl:text> 2</xsl:text></xsl:attribute>
753                        </xsl:if>                       
754                        <!-- Entry element a -> a -->
755                        <xsl:if test="./s[@c='a']">                             
756                                <s c="a"><xsl:value-of select="./s[@c='a']"/></s>       
757                        </xsl:if>               
758                        <!-- Subdivision b -> b -->
759                        <xsl:for-each select="./s[@c='b']">     
760                                <s c="b"><xsl:value-of select="."/></s> 
761                        </xsl:for-each> 
762                        <!-- Subdivision e -> b -->
763                        <xsl:for-each select="./s[@c='e']">     
764                                <s c="b"><xsl:value-of select="."/></s> 
765                        </xsl:for-each> 
766                        <!-- Number of meeting n -> d -->
767                        <xsl:if test="./s[@c='n']">                             
768                                <s c="d"><xsl:value-of select="./s[@c='n']"/></s>       
769                        </xsl:if>                                                                               
770                        <!-- Location of meeting c -> e -->
771                        <xsl:if test="./s[@c='c']">                             
772                                <s c="e"><xsl:value-of select="./s[@c='c']"/></s>       
773                        </xsl:if>               
774                        <!-- Date of meeting d -> f -->
775                        <xsl:if test="./s[@c='d']">                             
776                                <s c="f"><xsl:value-of select="./s[@c='d']"/></s>       
777                        </xsl:if>               
778                        <!-- Affiliation u -> p -->
779                        <xsl:if test="./s[@c='u']">                             
780                                <s c="p"><xsl:value-of select="./s[@c='u']"/></s>       
781                        </xsl:if>       
782                        <!-- Relator cod 4 -> 4 -->
783                        <xsl:for-each select="./s[@c='4']">     
784                                <s c="4"><xsl:value-of select="."/></s> 
785                        </xsl:for-each>                                                                                                                                                                 
786                </xsl:element> 
787        </xsl:for-each> 
788</xsl:template>
789
790<!-- fonction autorite  710 -> 711
791En entrée: Marc21
792
793En sortie: Unimarc
794       
795-->
796<xsl:template name="autorite_711">
797        <xsl:for-each select="./f[@c='710']">
798                <xsl:element name="f"> 
799                        <xsl:attribute name="c">711</xsl:attribute>
800                        <xsl:if test="./@ind='0 '">     
801                                <xsl:attribute name="ind"><xsl:text> 0</xsl:text></xsl:attribute>
802                        </xsl:if>
803                        <xsl:if test="./@ind='1 '">     
804                                <xsl:attribute name="ind"><xsl:text> 1</xsl:text></xsl:attribute>
805                        </xsl:if>
806                        <xsl:if test="./@ind='2 '">     
807                                <xsl:attribute name="ind"><xsl:text> 2</xsl:text></xsl:attribute>
808                        </xsl:if>                                               
809                        <!-- Entry element a -> a -->
810                        <xsl:if test="./s[@c='a']">                             
811                                <s c="a"><xsl:value-of select="./s[@c='a']"/></s>       
812                        </xsl:if>               
813                        <!-- Subdivision b -> b -->
814                        <xsl:for-each select="./s[@c='b']">     
815                                <s c="b"><xsl:value-of select="."/></s> 
816                        </xsl:for-each> 
817                        <!-- Subdivision e -> b -->
818                        <xsl:for-each select="./s[@c='e']">     
819                                <s c="b"><xsl:value-of select="."/></s> 
820                        </xsl:for-each> 
821                        <!-- Number of meeting n -> d -->
822                        <xsl:if test="./s[@c='n']">                             
823                                <s c="d"><xsl:value-of select="./s[@c='n']"/></s>       
824                        </xsl:if>                                                                               
825                        <!-- Location of meeting c -> e -->
826                        <xsl:if test="./s[@c='c']">                             
827                                <s c="e"><xsl:value-of select="./s[@c='c']"/></s>       
828                        </xsl:if>               
829                        <!-- Date of meeting d -> f -->
830                        <xsl:if test="./s[@c='d']">                             
831                                <s c="f"><xsl:value-of select="./s[@c='d']"/></s>       
832                        </xsl:if>               
833                        <!-- Affiliation u -> p -->
834                        <xsl:if test="./s[@c='u']">                             
835                                <s c="p"><xsl:value-of select="./s[@c='u']"/></s>       
836                        </xsl:if>       
837                        <!-- Relator cod 4 -> 4 -->
838                        <xsl:for-each select="./s[@c='4']">     
839                                <s c="4"><xsl:value-of select="."/></s> 
840                        </xsl:for-each>                                                                                                                                                                 
841                </xsl:element> 
842        </xsl:for-each> 
843</xsl:template>
844
845<!-- fonction autorite  710 -> 711
846En entrée: Marc21
847
848En sortie: Unimarc
849       
850-->
851<xsl:template name="ressource_electronique">
852        <xsl:for-each select="./f[@c='710']">
853                <xsl:element name="f"> 
854                        <xsl:attribute name="c">711</xsl:attribute>
855                        <xsl:if test="./@ind='0 '">     
856                                <xsl:attribute name="ind"><xsl:text> 0</xsl:text></xsl:attribute>
857                        </xsl:if>
858                        <xsl:if test="./@ind='1 '">     
859                                <xsl:attribute name="ind"><xsl:text> 1</xsl:text></xsl:attribute>
860                        </xsl:if>
861                        <xsl:if test="./@ind='2 '">     
862                                <xsl:attribute name="ind"><xsl:text> 2</xsl:text></xsl:attribute>
863                        </xsl:if>                                               
864                        <!-- Entry element a -> a -->
865                        <xsl:if test="./s[@c='a']">                             
866                                <s c="a"><xsl:value-of select="./s[@c='a']"/></s>       
867                        </xsl:if>               
868                        <!-- Subdivision b -> b -->
869                        <xsl:for-each select="./s[@c='b']">     
870                                <s c="b"><xsl:value-of select="."/></s> 
871                        </xsl:for-each> 
872                        <!-- Subdivision e -> b -->
873                        <xsl:for-each select="./s[@c='e']">     
874                                <s c="b"><xsl:value-of select="."/></s> 
875                        </xsl:for-each> 
876                        <!-- Number of meeting n -> d -->
877                        <xsl:if test="./s[@c='n']">                             
878                                <s c="d"><xsl:value-of select="./s[@c='n']"/></s>       
879                        </xsl:if>                                                                               
880                        <!-- Location of meeting c -> e -->
881                        <xsl:if test="./s[@c='c']">                             
882                                <s c="e"><xsl:value-of select="./s[@c='c']"/></s>       
883                        </xsl:if>               
884                        <!-- Date of meeting d -> f -->
885                        <xsl:if test="./s[@c='d']">                             
886                                <s c="f"><xsl:value-of select="./s[@c='d']"/></s>       
887                        </xsl:if>               
888                        <!-- Affiliation u -> p -->
889                        <xsl:if test="./s[@c='u']">                             
890                                <s c="p"><xsl:value-of select="./s[@c='u']"/></s>       
891                        </xsl:if>       
892                        <!-- Relator cod 4 -> 4 -->
893                        <xsl:for-each select="./s[@c='4']">     
894                                <s c="4"><xsl:value-of select="."/></s> 
895                        </xsl:for-each>                                                                                                                                                                 
896                </xsl:element> 
897        </xsl:for-each> 
898</xsl:template>
899
900
901<!-- fonction electronic_location  856 -> 856
902En entrée: Marc21
903En sortie: Unimarc
904-->
905<xsl:template name="electronic_location">
906        <xsl:for-each select="./f[@c='856']">
907                <xsl:element name="f"> 
908                        <xsl:attribute name="c">856</xsl:attribute>
909                        <xsl:attribute name="ind"><xsl:value-of select="./@ind"/></xsl:attribute>
910                        <xsl:for-each select="./s">     
911                                <xsl:element name="s"> 
912                                        <xsl:attribute name="c"><xsl:value-of select="./@c"/></xsl:attribute>
913                                        <xsl:value-of select="."/>
914                                </xsl:element> 
915                        </xsl:for-each>                                                                                                                                                                         
916                </xsl:element> 
917        </xsl:for-each> 
918</xsl:template>
919
920
921</xsl:stylesheet> 
Note: See TracBrowser for help on using the repository browser.