Start work on MARC21 to Endnote import
[yaz-moved-to-github.git] / etc / marc21_to_endnote.xsl
1 <?xml version="1.0" encoding="UTF-8"?>
2 <xsl:stylesheet version="1.0"
3   xmlns:marc="http://www.loc.gov/MARC21/slim"
4   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
5   >
6   <xsl:output method="text"/>
7   <xsl:strip-space elements="*"/>
8   
9   <xsl:template name="printfield">
10      <xsl:param name="name"/>
11      <xsl:param name="value"/>
12      <xsl:if test="string-length($value) &gt; 0">
13        <xsl:text>%</xsl:text><xsl:value-of select="$name"/>
14        <xsl:text> </xsl:text><xsl:value-of select="$value"/>
15 <xsl:text>
16 </xsl:text>
17      </xsl:if>
18   </xsl:template>
19
20   <xsl:template match="marc:record">
21     <xsl:variable name="title_medium" select="marc:datafield[@tag='245']/marc:subfield[@code='h']"/>
22     <xsl:variable name="journal_title" select="marc:datafield[@tag='773']/marc:subfield[@code='t']"/>
23     <xsl:variable name="electronic_location_url" select="marc:datafield[@tag='85
24 6']/marc:subfield[@code='u']"/>
25     <xsl:variable name="fulltext_a" select="marc:datafield[@tag='900']/marc:subfield[@code='a']"/>
26     <xsl:variable name="fulltext_b" select="marc:datafield[@tag='900']/marc:subfield[@code='b']"/>
27     <xsl:variable name="medium">
28       <xsl:choose>
29         <xsl:when test="$title_medium">
30           <xsl:value-of select="translate($title_medium, ':[]/', '')"/>
31         </xsl:when>
32         <xsl:when test="$fulltext_a">
33           <xsl:text>Electronic Resource</xsl:text>
34         </xsl:when>
35         <xsl:when test="$fulltext_b">
36           <xsl:text>Electronic Resource</xsl:text>
37         </xsl:when>
38         <xsl:when test="$journal_title">
39           <xsl:text>article</xsl:text>
40         </xsl:when>
41         <xsl:otherwise>
42           <xsl:text>Book</xsl:text>
43         </xsl:otherwise>
44       </xsl:choose>
45     </xsl:variable>
46
47     <!-- Medium -->
48     <xsl:call-template name="printfield">
49       <xsl:with-param name="name">0</xsl:with-param>
50       <xsl:with-param name="value"><xsl:value-of select="$medium"/>
51       </xsl:with-param>
52     </xsl:call-template>
53
54     <!-- Author -->
55     <xsl:choose>
56       <xsl:when test="marc:datafield[@tag='700']">
57         <xsl:for-each select="marc:datafield[@tag='700']">
58           <xsl:call-template name="printfield">
59             <xsl:with-param name="name">A</xsl:with-param>
60             <xsl:with-param name="value"><xsl:value-of select="marc:subfield[@code='a']"/>
61             </xsl:with-param>
62           </xsl:call-template>
63         </xsl:for-each>
64       </xsl:when>
65       <xsl:otherwise>
66       </xsl:otherwise>
67     </xsl:choose>
68       
69     <!-- Title -->
70     <xsl:for-each select="marc:datafield[@tag='245']">
71       <xsl:call-template name="printfield">
72         <xsl:with-param name="name">T</xsl:with-param>
73         <xsl:with-param name="value"><xsl:value-of select="marc:subfield[@code='a']"/>
74         </xsl:with-param>
75       </xsl:call-template>
76     </xsl:for-each>
77     
78     <xsl:for-each select="marc:datafield[@tag='260']">
79       <!-- Place Published -->
80       <xsl:call-template name="printfield">
81         <xsl:with-param name="name">C</xsl:with-param>
82         <xsl:with-param name="value"><xsl:value-of select="marc:subfield[@code='a']"/>
83         </xsl:with-param>
84       </xsl:call-template>
85       <!-- Publisher -->
86       <xsl:call-template name="printfield">
87         <xsl:with-param name="name">I</xsl:with-param>
88         <xsl:with-param name="value"><xsl:value-of select="marc:subfield[@code='b']"/>
89         </xsl:with-param>
90       </xsl:call-template>
91       <!-- Year -->
92       <xsl:call-template name="printfield">
93         <xsl:with-param name="name">D</xsl:with-param>
94         <xsl:with-param name="value"><xsl:value-of select="marc:subfield[@code='c']"/>
95         </xsl:with-param>
96       </xsl:call-template>
97     </xsl:for-each>
98   
99     <!-- Keywords -->
100     <xsl:for-each select="marc:datafield[@tag='650']">
101       <xsl:if test="marc:subfield[@code='a']">
102       <xsl:text>%K </xsl:text>
103       <xsl:value-of select="marc:subfield[@code='a']"/>
104       <xsl:text>
105 </xsl:text>
106       </xsl:if>
107   </xsl:for-each>
108   
109     <!-- URL -->
110     <xsl:for-each select="marc:datafield[@tag='856']">
111       <xsl:if test="marc:subfield[@code='u']">
112         <xsl:text>%U </xsl:text>
113         <xsl:value-of select="marc:subfield[@code='u']"/>
114         <xsl:text>
115 </xsl:text>
116       </xsl:if>
117   </xsl:for-each>
118   
119     <!-- ISBN -->
120     <xsl:for-each select="marc:datafield[@tag='020']">
121       <xsl:if test="marc:subfield[@code='a']">
122         <xsl:text>%@ </xsl:text>
123         <xsl:value-of select="marc:subfield[@code='a']"/>
124       <xsl:text>
125 </xsl:text>
126     </xsl:if>
127   </xsl:for-each>
128   
129     <!-- ISSN -->
130     <xsl:for-each select="marc:datafield[@tag='022']">
131       <xsl:if test="marc:subfield[@code='a']">
132         <xsl:text>%@ </xsl:text>
133         <xsl:value-of select="marc:subfield[@code='a']"/>
134         <xsl:text>
135 </xsl:text>
136      </xsl:if>
137   </xsl:for-each>
138
139
140   
141   
142   
143   </xsl:template>
144 </xsl:stylesheet>