fed5df4074b8c91f058d685f30b8a29bb4452f44
[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">
61               <xsl:value-of select="marc:subfield[@code='a']"/>
62             </xsl:with-param>
63           </xsl:call-template>
64         </xsl:for-each>
65       </xsl:when>
66       <xsl:otherwise>
67       </xsl:otherwise>
68     </xsl:choose>
69       
70     <!-- Title -->
71     <xsl:for-each select="marc:datafield[@tag='245']">
72       <xsl:call-template name="printfield">
73         <xsl:with-param name="name">T</xsl:with-param>
74         <xsl:with-param name="value">
75           <xsl:value-of select="marc:subfield[@code='a']"/>
76         </xsl:with-param>
77       </xsl:call-template>
78     </xsl:for-each>
79     
80     <xsl:for-each select="marc:datafield[@tag='260']">
81       <!-- Place Published -->
82       <xsl:call-template name="printfield">
83         <xsl:with-param name="name">C</xsl:with-param>
84         <xsl:with-param name="value">
85           <xsl:value-of select="marc:subfield[@code='a']"/>
86         </xsl:with-param>
87       </xsl:call-template>
88       <!-- Publisher -->
89       <xsl:call-template name="printfield">
90         <xsl:with-param name="name">I</xsl:with-param>
91         <xsl:with-param name="value">
92           <xsl:value-of select="marc:subfield[@code='b']"/>
93         </xsl:with-param>
94       </xsl:call-template>
95       <!-- Year -->
96       <xsl:call-template name="printfield">
97         <xsl:with-param name="name">D</xsl:with-param>
98         <xsl:with-param name="value">
99           <xsl:value-of select="marc:subfield[@code='c']"/>
100         </xsl:with-param>
101       </xsl:call-template>
102     </xsl:for-each>
103   
104     <!-- Keywords -->
105     <xsl:for-each select="marc:datafield[@tag='650']">
106       <xsl:call-template name="printfield">
107         <xsl:with-param name="name">K</xsl:with-param>
108         <xsl:with-param name="value">
109           <xsl:value-of select="marc:subfield[@code='a']"/>
110         </xsl:with-param>
111       </xsl:call-template>
112     </xsl:for-each>
113   
114     <!-- URL -->
115     <xsl:for-each select="marc:datafield[@tag='856']">
116       <xsl:call-template name="printfield">
117         <xsl:with-param name="name">U</xsl:with-param>
118         <xsl:with-param name="value">
119           <xsl:value-of select="marc:subfield[@code='u']"/>
120         </xsl:with-param>
121       </xsl:call-template>
122     </xsl:for-each>
123   
124     <!-- ISBN -->
125     <xsl:for-each select="marc:datafield[@tag='020']">
126       <xsl:call-template name="printfield">
127         <xsl:with-param name="name">@</xsl:with-param>
128         <xsl:with-param name="value">
129           <xsl:value-of select="marc:subfield[@code='a']"/>
130         </xsl:with-param>
131       </xsl:call-template>
132     </xsl:for-each>
133   
134     <!-- ISSN -->
135     <xsl:for-each select="marc:datafield[@tag='022']">
136       <xsl:call-template name="printfield">
137         <xsl:with-param name="name">@</xsl:with-param>
138         <xsl:with-param name="value">
139           <xsl:value-of select="marc:subfield[@code='a']"/>
140         </xsl:with-param>
141       </xsl:call-template>
142     </xsl:for-each>
143   </xsl:template>
144 </xsl:stylesheet>