More experiments. Getting the right facets, but not reproducing the problem
[pazpar2-moved-to-github.git] / test / paz_1009.xsl
1 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2 <!-- expects AGService XML records -->
3 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:pz="http://www.indexdata.com/pazpar2/1.0" version="1.0">
4   
5   <xsl:template name="first-6-chars">
6     <xsl:param name="subfield-value"/>
7     <xsl:value-of select="substring($subfield-value,1,6)"/>
8   </xsl:template>
9   <xsl:template name="first-4-digits">
10     <xsl:param name="subfield-value"/>
11     <xsl:value-of select="substring(translate($subfield-value, translate($subfield-value,'0123456789', ''), ''),1,4)"/>
12   </xsl:template>
13
14   <xsl:output encoding="UTF-8" indent="yes" method="xml" version="1.0"/>
15   
16    <xsl:template name="medium">
17     <!-- Default medium template that may be overridden from the init doc. -->
18     <!-- display-medium from Illuminar -->
19     <xsl:choose>
20       <xsl:when test="MarcLeader">
21         <!-- strings in xslt are 1-indexed -->
22         <xsl:variable name="ldr06" select="substring(MarcLeader, 7, 1)" />
23         <xsl:variable name="ldr07" select="substring(MarcLeader, 8, 1)" />
24         <xsl:variable name="ldr08" select="substring(MarcLeader, 9, 1)" />
25         <xsl:choose>
26           <xsl:when test="$ldr06 = 'c'">
27             <xsl:text>Notated music</xsl:text>
28           </xsl:when>
29           <xsl:when test="$ldr06 = 'd'">
30             <xsl:text>Manuscript notated music</xsl:text>
31           </xsl:when>
32           <xsl:when test="$ldr06 = 'e'">
33             <xsl:text>Cartographic material</xsl:text>
34           </xsl:when>
35           <xsl:when test="$ldr06 = 'f'">
36             <xsl:text>Manuscript cartographic material</xsl:text>
37           </xsl:when>
38           <xsl:when test="$ldr06 = 'g'">
39             <xsl:text>Projected medium</xsl:text>
40           </xsl:when>
41           <xsl:when test="$ldr06 = 'i'">
42             <xsl:text>Nonmusical sound recording</xsl:text>
43           </xsl:when>
44           <xsl:when test="$ldr06 = 'j'">
45             <xsl:text>Musical sound recording</xsl:text>
46           </xsl:when>
47           <xsl:when test="$ldr06 = 'k'">
48             <xsl:text>Two-dimensional nonprojectable graphic</xsl:text>
49           </xsl:when>
50           <xsl:when test="$ldr06 = 'm'">
51             <xsl:text>Computer file</xsl:text>
52           </xsl:when>
53           <xsl:when test="$ldr06 = 'o'">
54             <xsl:text>Kit</xsl:text>
55           </xsl:when>
56           <xsl:when test="$ldr06 = 'p'">
57             <xsl:text>Mixed materials</xsl:text>
58           </xsl:when>
59           <xsl:when test="$ldr06 = 'r'">
60             <xsl:text>Visual materials</xsl:text>
61           </xsl:when>
62           <xsl:when test="$ldr07 = 'b' or $ldr07 = 's'">
63             <xsl:text>Serial</xsl:text>
64           </xsl:when>
65           <!-- by default a book -->
66           <xsl:otherwise>
67             <xsl:text>Book</xsl:text>
68           </xsl:otherwise>
69         </xsl:choose>
70       </xsl:when>
71       <xsl:otherwise>
72         <xsl:text>xml records</xsl:text>
73       </xsl:otherwise>
74     </xsl:choose>
75   </xsl:template>
76
77   <xsl:template match="Results">
78     <collection>
79       <xsl:apply-templates/>
80     </collection>
81   </xsl:template>
82   
83   <xsl:template match="Result">    
84     <xsl:variable name="medium">
85       <xsl:call-template name="medium"/>
86     </xsl:variable>
87
88     <pz:record>
89       <pz:metadata type="medium">
90         <xsl:call-template name="medium"/>
91       </pz:metadata>
92       <xsl:for-each select="Title">
93         <pz:metadata type="title">
94           <xsl:choose>
95             <xsl:when test="position()=1">
96               <xsl:value-of select="."/>
97             </xsl:when>
98             <xsl:otherwise>
99               <xsl:value-of select="concat(' ',.)"/>
100             </xsl:otherwise>
101           </xsl:choose>
102         </pz:metadata>
103       </xsl:for-each>
104       <xsl:for-each select="Author">
105         <pz:metadata type="author">
106           <xsl:choose>
107             <xsl:when test="position()=1">
108               <xsl:value-of select="."/>
109             </xsl:when>
110             <xsl:otherwise>
111               <xsl:value-of select="concat(' ',.)"/>
112             </xsl:otherwise>
113           </xsl:choose>
114         </pz:metadata>
115       </xsl:for-each>
116       <xsl:for-each select="Subject">
117         <pz:metadata type="subject">
118           <xsl:choose>
119             <xsl:when test="position()=1">
120               <xsl:value-of select="."/>
121             </xsl:when>
122             <xsl:otherwise>
123               <xsl:value-of select="concat(' ',.)"/>
124             </xsl:otherwise>
125           </xsl:choose>
126         </pz:metadata>
127       </xsl:for-each>
128       <xsl:for-each select="PubYear">
129         <pz:metadata type="date">
130           <xsl:choose>
131             <xsl:when test="position()=1">
132               <xsl:value-of select="."/>
133             </xsl:when>
134             <xsl:otherwise>
135               <xsl:value-of select="concat(' ',.)"/>
136             </xsl:otherwise>
137           </xsl:choose>
138         </pz:metadata>
139       </xsl:for-each>
140       <xsl:choose>
141         <xsl:when test="$medium = 'books'">
142           <xsl:for-each select="Title">
143             <pz:metadata type="brief-2">
144               <xsl:choose>
145                 <xsl:when test="position()=1">
146                   <xsl:value-of select="."/>
147                 </xsl:when>
148                 <xsl:otherwise>
149                   <xsl:value-of select="concat(' ',.)"/>
150                 </xsl:otherwise>
151               </xsl:choose>
152             </pz:metadata>
153           </xsl:for-each>
154           <xsl:for-each select="Author">
155             <pz:metadata type="brief-3">
156               <xsl:choose>
157                 <xsl:when test="position()=1">
158                   <xsl:value-of select="."/>
159                 </xsl:when>
160                 <xsl:otherwise>
161                   <xsl:value-of select="concat(' ',.)"/>
162                 </xsl:otherwise>
163               </xsl:choose>
164             </pz:metadata>
165           </xsl:for-each>
166         </xsl:when>
167       </xsl:choose>
168     </pz:record>
169
170   </xsl:template>
171   
172   <xsl:template match="text()"/>
173
174 </xsl:stylesheet>