Adds the template fields page and endpage, #4204
[pazpar2-moved-to-github.git] / etc / cf.xsl
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!--
3     This stylesheet expects Connector Frameworks records
4 -->
5 <xsl:stylesheet
6     version="1.0"
7     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
8     xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
9     xmlns:dc="http://purl.org/dc/elements/1.1/"
10     xmlns:siebel="http://loc.gov/siebel/elements/1.0/" >
11
12  <xsl:output indent="yes"
13         method="xml"
14         version="1.0"
15         encoding="UTF-8"/>
16
17   <xsl:param name="medium" />
18
19   <xsl:template match="/record">
20     <pz:record>
21       <pz:metadata type="medium">
22          <xsl:value-of select="$medium" />
23       </pz:metadata>
24       <xsl:apply-templates/>
25     </pz:record>
26   </xsl:template>
27
28   <!--
29       The elements mapped in the following clauses should be kept more
30       or less in sync with those named in builder/templates/search.cft
31       in the "cf" git module.
32   -->
33
34   <xsl:template match="date">
35     <pz:metadata type="publication-date">
36       <xsl:value-of select="."/>
37     </pz:metadata>
38     <pz:metadata type="date">
39       <xsl:value-of select="."/>
40     </pz:metadata>
41   </xsl:template>
42
43   <xsl:template match="url">
44     <pz:metadata type="electronic-url">
45       <xsl:value-of select="."/>
46     </pz:metadata>
47   </xsl:template>
48
49   <xsl:template match="title">
50     <pz:metadata type="title">
51       <xsl:value-of select="."/>
52     </pz:metadata>
53     <pz:metadata type="title-complete">
54       <xsl:value-of select="." />
55     </pz:metadata>
56   </xsl:template>
57
58   <xsl:template match="author">
59     <pz:metadata type="author">
60       <xsl:value-of select="."/>
61     </pz:metadata>
62   </xsl:template>
63
64   <xsl:template match="description">
65     <pz:metadata type="description">
66       <xsl:value-of select="."/>
67     </pz:metadata>
68   </xsl:template>
69   
70   <xsl:template match="publisher">
71     <pz:metadata type="publisher">
72       <xsl:value-of select="."/>
73     </pz:metadata>
74   </xsl:template>
75
76   <xsl:template match="subject">
77     <pz:metadata type="subject">
78       <xsl:value-of select="."/>
79     </pz:metadata>
80   </xsl:template>
81
82   <xsl:template match="isbn">
83     <pz:metadata type="isbn">
84       <xsl:value-of select="."/>
85     </pz:metadata>
86   </xsl:template>
87
88   <xsl:template match="issn">
89     <pz:metadata type="issn">
90       <xsl:value-of select="."/>
91     </pz:metadata>
92   </xsl:template>
93
94   <xsl:template match="journaltitle">
95     <pz:metadata type="journal-title">
96       <xsl:value-of select="."/>
97     </pz:metadata>
98   </xsl:template>
99
100   <xsl:template match="volume">
101     <pz:metadata type="volume">
102       <xsl:value-of select="."/>
103     </pz:metadata>
104   </xsl:template>
105
106   <xsl:template match="issue">
107     <pz:metadata type="issue">
108       <xsl:value-of select="."/>
109     </pz:metadata>
110   </xsl:template>
111
112   <xsl:template match="page">
113     <pz:metadata type="page">
114       <xsl:value-of select="."/>
115     </pz:metadata>
116   </xsl:template>
117
118   <xsl:template match="endpage">
119     <pz:metadata type="endpage">
120       <xsl:value-of select="."/>
121     </pz:metadata>
122   </xsl:template>
123
124   <xsl:template match="item">
125     <pz:metadata type="locallocation">
126       <xsl:choose>
127         <xsl:when test="string-length(location)">
128           <xsl:value-of select="location"/>
129         </xsl:when>
130         <xsl:otherwise>PAZPAR2_NULL_VALUE</xsl:otherwise>
131       </xsl:choose>
132     </pz:metadata>
133     <pz:metadata type="callnumber">
134       <xsl:choose>
135         <xsl:when test="string-length(callno)">
136           <xsl:value-of select="callno"/>
137         </xsl:when>
138         <xsl:otherwise>PAZPAR2_NULL_VALUE</xsl:otherwise>
139       </xsl:choose>
140     </pz:metadata>
141     <pz:metadata type="available">
142       <xsl:choose>
143         <xsl:when test="string-length(available)">
144           <xsl:value-of select="available"/>
145         </xsl:when>
146         <xsl:otherwise>PAZPAR2_NULL_VALUE</xsl:otherwise>
147       </xsl:choose>
148     </pz:metadata>
149     <pz:metadata type="publicnote">
150       <xsl:choose>
151         <xsl:when test="string-length(publicnote)">
152           <xsl:value-of select="publicnote"/>
153         </xsl:when>
154         <xsl:otherwise>PAZPAR2_NULL_VALUE</xsl:otherwise>
155       </xsl:choose>
156     </pz:metadata>
157   </xsl:template>
158
159   <xsl:template match="due">
160     <pz:metadata type="due">
161       <xsl:value-of select="."/>
162     </pz:metadata>
163   </xsl:template>
164
165   <xsl:template match="location">
166     <pz:metadata type="locallocation">
167       <xsl:value-of select="."/>
168     </pz:metadata>
169   </xsl:template>
170
171   <xsl:template match="callno">
172     <pz:metadata type="callnumber">
173       <xsl:value-of select="."/>
174     </pz:metadata>
175   </xsl:template>
176
177   <xsl:template match="thumburl">
178     <pz:metadata type="thumburl">
179       <xsl:value-of select="."/>
180     </pz:metadata>
181   </xsl:template>
182
183   <xsl:template match="score">
184     <pz:metadata type="score">
185       <xsl:value-of select="."/>
186     </pz:metadata>
187   </xsl:template>
188
189   <xsl:template match="text()"/>
190
191 </xsl:stylesheet>