source: pmb4.2/trunk/fuentes/pmb/admin/convert/imports/pmbxml2ead/pmbxml2ead.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: 16.5 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
2<xsl:stylesheet version = '1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
3<xsl:output method="xml" indent='yes' encoding="ISO-8859-1" />
4       
5<!-- Attention le fichier ../../../../includes/marc_tables/fr_FR/doctype.xml est inséré -->     
6<!-- Attention le fichier ../../../../includes/marc_tables/fr_FR/recordtype.xml est inséré --> 
7<!-- Attention le fichier ../../../../includes/marc_tables/fr_FR/function.xml est inséré -->   
8        <xsl:template match="/unimarc">
9                <ead>
10                        <eadheader>
11                                <xsl:call-template name="metadonnees"/>
12                         </eadheader>
13                         <archdesc level="fonds">
14                                 <did>
15                                         <unittitle>Fonds de documentation</unittitle>
16                                 </did>
17                                 <xsl:apply-templates select="notice"/>
18                        </archdesc>     
19                </ead>
20        </xsl:template>
21       
22        <xsl:template match="/unimarc/notice">
23                         <dsc>
24                                 <c level="item">
25                                        <did>
26                                                <xsl:call-template name="titre"/>
27                                                <xsl:call-template name="genreForm"/>
28                                                <xsl:call-template name="langPub"/>                                                                                                                     
29                                                <xsl:call-template name="collation"/>
30                                                <xsl:call-template name="resume"/>
31                                                <xsl:call-template name="dates"/>
32                                                <xsl:call-template name="test_auteur">
33                                                        <xsl:with-param name="balise">2</xsl:with-param>
34                                                </xsl:call-template>     
35                                        </did>
36                                         <xsl:call-template name="note"/><!-- Prix, Materiel d'accompagnement, isbn -->
37                                         <xsl:call-template name="editeur"/>
38                                         <xsl:call-template name="test_auteur">
39                                                <xsl:with-param name="balise">1</xsl:with-param>
40                                        </xsl:call-template>
41                                         <xsl:call-template name="controlAccess"/>
42                                </c>
43                  </dsc>
44   </xsl:template>
45       
46       
47   <xsl:template name="metadonnees">
48      <eadid countrycode="FR">ID<xsl:value-of select="generate-id()"/>
49      </eadid>
50      <filedesc>
51         <titlestmt>
52            <titleproper>Inventaire en EAD</titleproper>
53            <author></author>
54         </titlestmt>
55      </filedesc>
56      <profiledesc>
57         <creation></creation>
58         <langusage>Document rédigé en <language langcode="fre">français</language>
59         </langusage>
60      </profiledesc>
61   </xsl:template>
62
63
64       
65        <xsl:template name="genreForm">
66      <physdesc>
67                  <genreform> type de document:  <xsl:call-template name="code_notice"><xsl:with-param name="entree" select="normalize-space(dt)"/></xsl:call-template>
68                                                  support de document: <xsl:call-template name="support_notice"><xsl:with-param name="entree" select="normalize-space(bl)"/></xsl:call-template>
69                  </genreform>
70                  <xsl:if test="f[@c='856']/s[@c='u'] or f[@c='856']/s[@c='q']">
71                         <extref>
72                         <xsl:choose>
73                                <xsl:when test="f[@c='856']/s[@c='u']">
74                                        <xsl:attribute name="href">
75                                                <xsl:value-of select="normalize-space(f[@c='856']/s[@c='u'])"/>
76                                        </xsl:attribute>
77                                </xsl:when>
78                                <xsl:otherwise>
79                                        <xsl:attribute name="href">adresse_inconnue</xsl:attribute>     
80                                </xsl:otherwise>               
81                        </xsl:choose> 
82                        <xsl:value-of select="normalize-space(f[@c='856']/s[@c='q'])"/>
83                        </extref>
84                </xsl:if> 
85          </physdesc>
86   </xsl:template>
87       
88        <xsl:template name="titre">
89                <xsl:if test="f[@c='200']/s[@c='a']">
90                        <unittitle>
91                                <xsl:value-of select="normalize-space(f[@c='200']/s[@c='a'])"/>
92                        </unittitle>
93                </xsl:if>
94               
95                <xsl:if test="f[@c='200']/s[@c='d']">
96                        <unittitle type="parallel">
97                                <xsl:value-of select="normalize-space(f[@c='200']/s[@c='d'])"/>
98                        </unittitle>
99                </xsl:if>
100               
101                <xsl:if test="f[@c='200']/s[@c='e']">
102                        <unittitle type="otherinfo">
103                                <xsl:value-of select="normalize-space(f[@c='200']/s[@c='e'])"/>
104                        </unittitle>
105                </xsl:if>
106                <xsl:if test="f[@c='200']/s[@c='c']">
107                        <unittitle type="titre_auteur_different">
108                                <xsl:value-of select="normalize-space(f[@c='200']/s[@c='c'])"/>
109                        </unittitle>
110                </xsl:if>
111                <xsl:if test="f[@c='461']/s[@c='t']">
112                        <unittitle type="titre_de_serie">
113                                <xsl:value-of select="normalize-space(f[@c='461']/s[@c='t'])"/>
114                        </unittitle>
115                </xsl:if>
116                <xsl:if test="f[@c='461']/s[@c='v']">
117                        <unittitle type="numero_de_serie">
118                                <xsl:value-of select="normalize-space(f[@c='461']/s[@c='v'])"/>
119                        </unittitle>
120                </xsl:if>
121                <xsl:if test="f[@c='503']/s[@c='a']">
122                        <unittitle type="numero_de_forme">
123                                <xsl:value-of select="normalize-space(f[@c='461']/s[@c='v'])"/>
124                        </unittitle>
125                </xsl:if>
126        </xsl:template>
127       
128        <xsl:template name="test_auteur">
129                <xsl:param name="balise"/>
130                <xsl:if test="f[@c='700'] or f[@c='701'] or f[@c='702'] or f[@c='710'] or f[@c='711'] or f[@c='712']"><!--Pour voir s'il y a un auteur-->
131                        <xsl:choose>
132                                <xsl:when test="$balise='1'">
133                                        <controlaccess>
134                                                <xsl:call-template name="auteur"/>
135                                        </controlaccess>
136                                </xsl:when>
137                                <xsl:otherwise>
138                                        <origination>
139                                                <xsl:call-template name="auteur"/>
140                                        </origination>
141                                </xsl:otherwise>                       
142                        </xsl:choose>
143                </xsl:if>
144        </xsl:template>
145       
146        <xsl:template name="auteur">
147                                <xsl:if test="f[@c='700']/s[@c='a']"><!--Pour l'auteur principal-->
148                                                <persname>
149                                                        <xsl:choose>
150                                                                <xsl:when test="f[@c='700']/s[@c='4']">
151                                                                        <xsl:attribute name="role">
152                                                                                <xsl:call-template name="code_auteur">
153                                                                                                <xsl:with-param name="entree" select="normalize-space(f[@c='700']/s[@c='4'])"/>
154                                                                                </xsl:call-template>
155                                                                        </xsl:attribute>
156                                                                </xsl:when>
157                                                                <xsl:otherwise>
158                                                                        <xsl:attribute name="role">auteur</xsl:attribute>
159                                                                </xsl:otherwise>                       
160                                                        </xsl:choose>
161                                                        <xsl:value-of select="normalize-space(f[@c='700']/s[@c='a'])"/>
162                                                        <xsl:if test="(f[@c='700']/s[@c='b'])">, <xsl:value-of select="normalize-space(f[@c='700']/s[@c='b'])"/></xsl:if>
163                                                </persname>
164                                </xsl:if>
165                               
166                                <xsl:if test="f[@c='701']/s[@c='a']">
167                                        <xsl:for-each select="f[@c='701']"> <!--Pour parcourir tout les autres auteurs--> 
168                                                                <persname>
169                                                                        <xsl:choose>
170                                                                                <xsl:when test="./s[@c='4']">
171                                                                                        <xsl:attribute name="role">
172                                                                                        <xsl:call-template name="code_auteur">
173                                                                                                <xsl:with-param name="entree" select="normalize-space(./s[@c='4'])"/>
174                                                                                        </xsl:call-template>
175                                                                                        </xsl:attribute>
176                                                                                </xsl:when>
177                                                                                <xsl:otherwise>
178                                                                                        <xsl:attribute name="role">auteur</xsl:attribute>
179                                                                                </xsl:otherwise>                       
180                                                                        </xsl:choose>
181                                                                        <xsl:value-of select="normalize-space(./s[@c='a'])"/>
182                                                                        <xsl:if test="(./s[@c='b'])">, <xsl:value-of select="normalize-space(./s[@c='b'])"/></xsl:if>
183                                                                </persname>
184                                        </xsl:for-each>
185                                </xsl:if>
186                               
187                                <xsl:if test="f[@c='702']/s[@c='a']">
188                                        <xsl:for-each select="f[@c='702']">
189                                                        <persname role="auteur">
190                                                                <xsl:choose>
191                                                                                <xsl:when test="./s[@c='4']">
192                                                                                        <xsl:attribute name="role">
193                                                                                        <xsl:call-template name="code_auteur">
194                                                                                                <xsl:with-param name="entree" select="normalize-space(./s[@c='4'])"/>
195                                                                                        </xsl:call-template>
196                                                                                        </xsl:attribute>
197                                                                                </xsl:when>
198                                                                                <xsl:otherwise>
199                                                                                        <xsl:attribute name="role">auteur</xsl:attribute>
200                                                                                </xsl:otherwise>                       
201                                                                        </xsl:choose>
202                                                                <xsl:value-of select="normalize-space(./s[@c='a'])"/>
203                                                                <xsl:if test="(./s[@c='b'])">, <xsl:value-of select="normalize-space(./s[@c='b'])"/></xsl:if>
204                                                        </persname>
205                                        </xsl:for-each>
206                                </xsl:if>
207                               
208                                <xsl:if test="f[@c='710']/s[@c='a']">
209                                                <corpname role="auteur">
210                                                        <xsl:choose>
211                                                                <xsl:when test="f[@c='710']/s[@c='4']">
212                                                                        <xsl:attribute name="role">
213                                                                                <xsl:call-template name="code_auteur">
214                                                                                        <xsl:with-param name="entree" select="normalize-space(f[@c='710']/s[@c='4'])"/>
215                                                                                </xsl:call-template>
216                                                                        </xsl:attribute>
217                                                                </xsl:when>
218                                                                <xsl:otherwise>
219                                                                        <xsl:attribute name="role">auteur</xsl:attribute>
220                                                                </xsl:otherwise>                       
221                                                        </xsl:choose>
222                                                                <xsl:value-of select="normalize-space(f[@c='710']/s[@c='a'])"/>
223                                                                <xsl:if test="(f[@c='710']/s[@c='b'])">, <xsl:value-of select="normalize-space(f[@c='710']/s[@c='b'])"/></xsl:if>
224                                                </corpname>
225                                </xsl:if>
226                       
227                                <xsl:if test="f[@c='711']/s[@c='a']">
228                                        <xsl:for-each select="f[@c='711']">
229                                                <corpname role="auteur">
230                                                        <xsl:choose>
231                                                                                <xsl:when test="./s[@c='4']">
232                                                                                        <xsl:attribute name="role">
233                                                                                        <xsl:call-template name="code_auteur">
234                                                                                                <xsl:with-param name="entree" select="normalize-space(./s[@c='4'])"/>
235                                                                                        </xsl:call-template>
236                                                                                        </xsl:attribute>
237                                                                                </xsl:when>
238                                                                                <xsl:otherwise>
239                                                                                        <xsl:attribute name="role">auteur</xsl:attribute>
240                                                                                </xsl:otherwise>                       
241                                                        </xsl:choose>
242                                                                <xsl:value-of select="normalize-space(./s[@c='a'])"/>
243                                                                <xsl:if test="(./s[@c='b'])">, <xsl:value-of select="normalize-space(./s[@c='b'])"/></xsl:if>
244                                                </corpname>
245                                        </xsl:for-each>
246                                </xsl:if>
247                       
248                                <xsl:if test="f[@c='712']/s[@c='a']">
249                                        <xsl:for-each select="f[@c='712']">
250                                                <corpname role="auteur">
251                                                        <xsl:choose>
252                                                                                <xsl:when test="./s[@c='4']">
253                                                                                        <xsl:attribute name="role">
254                                                                                        <xsl:call-template name="code_auteur">
255                                                                                                <xsl:with-param name="entree" select="normalize-space(./s[@c='4'])"/>
256                                                                                        </xsl:call-template>
257                                                                                        </xsl:attribute>
258                                                                                </xsl:when>
259                                                                                <xsl:otherwise>
260                                                                                        <xsl:attribute name="role">auteur</xsl:attribute>
261                                                                                </xsl:otherwise>                       
262                                                                        </xsl:choose>
263                                                                <xsl:value-of select="normalize-space(./s[@c='a'])"/>
264                                                                <xsl:if test="(./s[@c='b'])">, <xsl:value-of select="normalize-space(./s[@c='b'])"/></xsl:if>
265                                                        </corpname>
266                                        </xsl:for-each>
267                                </xsl:if>
268        </xsl:template>
269       
270        <xsl:template name="dates">
271                <xsl:if test="f[@c='210']/s[@c='d']">
272                        <unitdate label="date_edition">
273                                <xsl:value-of select="normalize-space(f[@c='210']/s[@c='d'])"/>
274                        </unitdate>
275                </xsl:if>
276        </xsl:template>
277       
278        <xsl:template name="langPub">
279                <xsl:if test="f[@c='101']/s[@c='a']">
280                        <langmaterial>
281                                <xsl:for-each select="f[@c='101']/s[@c='a']">
282                                                <language>
283                                                        <xsl:call-template name="code_langue">
284                                                                <xsl:with-param name="entree" select="normalize-space(.)"/>
285                                                        </xsl:call-template>
286                                                </language>
287                                </xsl:for-each>
288                        </langmaterial>
289                </xsl:if>
290        </xsl:template>
291       
292        <xsl:template name="controlAccess">
293                <xsl:if test="f[@c='606']/s[@c='a']">
294                        <controlaccess>
295                                <xsl:for-each select="f[@c='606']/s[@c='a']">
296                                        <subject>       
297                                                <xsl:value-of select="normalize-space(.)"/>
298                                        </subject>
299                                </xsl:for-each>
300                        </controlaccess>
301                </xsl:if>
302        </xsl:template>
303       
304        <xsl:template name="note">
305                        <xsl:if test="f[@c='300']/s[@c='a']">
306                                <odd type="note general"><head> Note General</head>
307                                        <xsl:for-each select="f[@c='300']/s[@c='a']">
308                                                <p>     
309                                                        <xsl:value-of select="normalize-space(.)"/>
310                                                </p>
311                                        </xsl:for-each>
312                                </odd>
313                        </xsl:if>
314                        <xsl:if test="f[@c='327']/s[@c='a']">
315                                <scopecontent> 
316                                        <xsl:for-each select="f[@c='327']/s[@c='a']">
317                                                <p>
318                                                        <xsl:value-of select="normalize-space(.)"/>
319                                                </p>
320                                        </xsl:for-each>
321                                </scopecontent> 
322                        </xsl:if>
323                        <xsl:if test="f[@c='010']/s[@c='a']">
324                                <odd type="isbn"><head> Numéro identification</head>
325                                        <xsl:for-each select="f[@c='010']/s[@c='a']">
326                                                <p>
327                                                        <xsl:value-of select="normalize-space(.)"/>
328                                                </p>
329                                        </xsl:for-each>
330                                </odd>
331                        </xsl:if>
332                        <xsl:if test="f[@c='215']/s[@c='e']">
333                                <odd type="matériel d'accompagnement"> <head> Materiel d'Accompagnement</head>
334                                        <xsl:for-each select="f[@c='215']/s[@c='e']">
335                                                <p>
336                                                        <xsl:value-of select="normalize-space(.)"/>
337                                                </p>
338                                        </xsl:for-each>
339                                </odd>
340                        </xsl:if>
341        </xsl:template>
342       
343        <xsl:template name="collation">
344                <xsl:if test="f[@c='215']/s[@c='a'] or f[@c='215']/s[@c='c'] or f[@c='215']/s[@c='d']">
345                        <physdesc>
346                                <xsl:if test="f[@c='215']/s[@c='a']">
347                                        <extent type="collation">
348                                                <xsl:value-of select="normalize-space(f[@c='215']/s[@c='a'])"/>
349                                        </extent>
350                                </xsl:if>
351                                <xsl:if test="f[@c='215']/s[@c='c']">
352                                        <extent type="collation">
353                                                <xsl:value-of select="normalize-space(f[@c='215']/s[@c='c'])"/>
354                                        </extent>
355                                </xsl:if>
356                                <xsl:if test="f[@c='215']/s[@c='d']">
357                                        <dimensions>
358                                                <xsl:value-of select="normalize-space(f[@c='215']/s[@c='d'])"/>
359                                        </dimensions>
360                                </xsl:if>
361                        </physdesc>
362                </xsl:if>
363        </xsl:template>
364       
365        <xsl:template name="editeur">
366                <xsl:if test="f[@c='225'] or f[@c='210'] or f[@c='205']/s[@c='a']">
367                        <bibliography>
368                                <xsl:if test="normalize-space(f[@c='200']/s[@c='a'])">
369                                        <head>
370                                        <xsl:value-of select="normalize-space(f[@c='200']/s[@c='a'])"/>
371                                        </head>
372                                </xsl:if>
373                                        <bibref>
374                                                <xsl:for-each select="f[@c='210']">
375                                                        <imprint>
376                                                                <xsl:if test="./s[@c='a']">
377                                                                                <geogname>
378                                                                                        <xsl:value-of select="normalize-space(./s[@c='a'])"/>
379                                                                                </geogname>
380                                                                </xsl:if>
381                                                                <xsl:if test="./s[@c='c']">
382                                                                                <publisher>
383                                                                                        <xsl:value-of select="normalize-space(./s[@c='c'])"/>
384                                                                                </publisher>
385                                                                </xsl:if>
386                                                                <xsl:if test="./s[@c='d']">
387                                                                                <date>
388                                                                                        <xsl:value-of select="normalize-space(./s[@c='d'])"/>
389                                                                                </date>
390                                                                </xsl:if>
391                                                        </imprint>
392                                                </xsl:for-each>
393                                                <!--<xsl:if test="f[@c='210']">
394                                                        <imprint>
395                                                                <xsl:if test="f[@c='210']/s[@c='a']">
396                                                                        <xsl:for-each select="f[@c='210']/s[@c='a']">
397                                                                                <geogname>
398                                                                                        <xsl:value-of select="normalize-space(.)"/>
399                                                                                </geogname>
400                                                                        </xsl:for-each>
401                                                                </xsl:if>
402                                                                <xsl:if test="f[@c='210']/s[@c='c']">
403                                                                        <xsl:for-each select="f[@c='210']/s[@c='c']">
404                                                                                <publisher>
405                                                                                        <xsl:value-of select="normalize-space(.)"/>
406                                                                                </publisher>
407                                                                        </xsl:for-each>
408                                                                </xsl:if>
409                                                                <xsl:if test="f[@c='210']/s[@c='d']">
410                                                                        <xsl:for-each select="f[@c='210']/s[@c='d']">
411                                                                                <date>
412                                                                                        <xsl:value-of select="normalize-space(.)"/>
413                                                                                </date>
414                                                                        </xsl:for-each>
415                                                                </xsl:if>
416                                                        </imprint>
417                                                </xsl:if>-->
418                                                <xsl:if test="f[@c='225']/s[@c='a'] or f[@c='225']/s[@c='v']">
419                                                        <bibseries>
420                                                                <xsl:if test="f[@c='225']/s[@c='x']">
421                                                                        <xsl:attribute name="encodinganalog">
422                                                                                        <xsl:value-of select="normalize-space(f[@c='225']/s[@c='x'])"></xsl:value-of>
423                                                                                </xsl:attribute>
424                                                                </xsl:if>
425                                                                <title>
426                                                                        <xsl:value-of select="normalize-space(f[@c='225']/s[@c='a'])"/>
427                                                                </title>
428                                                                <xsl:if test="f[@c='225']/s[@c='v']">
429                                                                        <num>
430                                                                                <xsl:value-of select="normalize-space(f[@c='225']/s[@c='v'])"/>
431                                                                        </num>
432                                                                </xsl:if>
433                                                        </bibseries>
434                                                </xsl:if>
435                                                <xsl:if test="f[@c='225']/s[@c='i']">
436                                                        <bibseries>
437                                                                <title>
438                                                                        <xsl:value-of select="normalize-space(f[@c='225']/s[@c='i'])"/>
439                                                                </title>
440                                                        </bibseries>
441                                                </xsl:if>
442                                                <xsl:if test="f[@c='205']/s[@c='a']">
443                                                        <edition>
444                                                                <title>
445                                                                        <xsl:value-of select="normalize-space(f[@c='205']/s[@c='a'])"/>
446                                                                </title>
447                                                        </edition>
448                                                </xsl:if>
449                                        </bibref>
450                        </bibliography>
451                </xsl:if>
452        </xsl:template>
453       
454        <xsl:template name="resume">
455                <xsl:if test="f[@c='330']/s[@c='a']">
456                                        <xsl:for-each select="f[@c='330']/s[@c='a']">
457                                                <abstract>     
458                                                        <xsl:value-of select="normalize-space(.)"/>
459                                                </abstract>
460                                        </xsl:for-each>
461                        </xsl:if>
462        </xsl:template>
463       
464       
465        <!-- ===================================== FONCTION ======================================== -->
466       
467        <!--Pour lier le code au type de notice-->
468        <xsl:template name="code_notice">
469                <xsl:param name="entree"/>
470                <xsl:variable name="noeud" select="document('../../includes/marc_tables/fr_FR/doctype.xml')"/>
471                <!--<xsl:variable name="noeud" select="document('/home/mbertin/public_html/pmb/includes/marc_tables/fr_FR/doctype.xml')"/>-->
472                <xsl:value-of select="$noeud/XMLlist/entry[@code=$entree]"></xsl:value-of>
473        </xsl:template>
474       
475        <!--Pour lier le code au support de notice-->
476        <xsl:template name="support_notice">
477                <xsl:param name="entree"/>
478                <!--<xsl:variable name="noeud" select="document('../../../../includes/marc_tables/fr_FR/recordtype.xml')"/>-->
479                <xsl:variable name="noeud" select="document('../../includes/marc_tables/fr_FR/recordtype.xml')"/>
480                <xsl:value-of select="$noeud/XMLlist/entry[@code=$entree]"></xsl:value-of>
481        </xsl:template>
482       
483        <!--Pour lier le code à la fonction de l'auteur-->
484        <xsl:template name="code_auteur">
485                <xsl:param name="entree"/>
486                <xsl:variable name="noeud" select="document('../../includes/marc_tables/fr_FR/function.xml')"/>
487                <xsl:value-of select="$noeud/XMLlist/entry[@code=$entree]"></xsl:value-of>
488        </xsl:template>
489       
490        <!--Pour lier le code à la langue-->
491        <xsl:template name="code_langue">
492                <xsl:param name="entree"/>
493                <xsl:variable name="noeud" select="document('../../includes/marc_tables/fr_FR/lang.xml')"/>
494                <xsl:value-of select="$noeud/XMLlist/entry[@code=$entree]"></xsl:value-of>
495        </xsl:template>
496       
497</xsl:stylesheet> 
Note: See TracBrowser for help on using the repository browser.