Updated the files to handle oai_dc namespaces for the record meta-data.
[idzebra-moved-to-github.git] / examples / oai-pmh / conf / oai2index.xsl
1 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
2                 xmlns:z="http://indexdata.com/zebra-2.0"
3                 xmlns:dc="http://purl.org/dc/elements/1.1/"
4                 xmlns:oai="http://www.openarchives.org/OAI/2.0/" 
5                 xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" 
6                 exclude-result-prefixes="oai oai_dc dc"
7                 version="1.0">
8
9   <!-- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" -->
10
11
12   <xsl:output indent="yes" method="xml" version="1.0" encoding="UTF-8"/>
13
14   <!-- disable all default text node output -->
15   <xsl:template match="text()"/>
16   
17   <!-- match on oai xml record -->
18   <xsl:template match="/">    
19     <z:record z:id="{normalize-space(oai:record/oai:header/oai:identifier)}">
20
21       <xsl:apply-templates/>
22     </z:record>
23   </xsl:template>
24
25   <!-- OAI indexing templates -->
26   <xsl:template match="oai:record/oai:header/oai:identifier">
27     <z:index name="oai_identifier:0">
28       <xsl:value-of select="."/>
29     </z:index>    
30   </xsl:template>
31
32   <xsl:template match="oai:record/oai:header/oai:datestamp">
33     <z:index name="oai_datestamp:0">
34       <xsl:value-of select="."/>
35     </z:index>    
36   </xsl:template>
37
38   <xsl:template match="oai:record/oai:header/oai:setSpec">
39     <z:index name="oai_setspec:0">
40       <xsl:value-of select="."/>
41     </z:index>    
42   </xsl:template>
43
44   <!-- DC specific indexing templates -->
45   <xsl:template match="oai:record/oai:metadata/oai_dc:dc/dc:title 
46                     | oai:record/oai:metadata/oai_dc:dc/oai_dc:title">
47     <z:index name="any:w dc_title:w dc_title:p">
48       <xsl:value-of select="."/>
49     </z:index>
50   </xsl:template>
51
52   <xsl:template match="oai:record/oai:metadata/oai_dc:dc/dc:creator
53                     | oai:record/oai:metadata/oai_dc:dc/oai_dc:creator">
54     <z:index name="any:w dc_creator:w dc_creator:p">
55       <xsl:value-of select="."/>
56     </z:index>
57   </xsl:template>
58
59   <xsl:template match="oai:record/oai:metadata/oai_dc:dc/dc:subject
60                     | oai:record/oai:metadata/oai_dc:dc/oai_dc:subject">
61     <z:index name="any:w dc_subject:w dc_subject:p">
62       <xsl:value-of select="."/>
63     </z:index>
64   </xsl:template>
65
66   <xsl:template match="oai:record/oai:metadata/oai_dc:dc/dc:description
67                     | oai:record/oai:metadata/oai_dc:dc/oai_dc:description">
68     <z:index name="any:w dc_description:w">
69       <xsl:value-of select="."/>
70     </z:index>
71   </xsl:template>
72
73   <xsl:template match="oai:record/oai:metadata/oai_dc:dc/dc:contributor
74                     | oai:record/oai:metadata/oai_dc:dc/oai_dc:contributor">
75     <z:index name="any:w dc_contributor:w dc_contributor:p">
76       <xsl:value-of select="."/>
77     </z:index>
78   </xsl:template>
79
80   <xsl:template match="oai:record/oai:metadata/oai_dc:dc/dc:publisher
81                     | oai:record/oai:metadata/oai_dc:dc/oai_dc:publisher">
82     <z:index name="dc_publisher:p dc_publisher:w">
83       <xsl:value-of select="."/>
84     </z:index>
85   </xsl:template>
86
87   <xsl:template match="oai:record/oai:metadata/oai_dc:dc/dc:date
88                     | oai:record/oai:metadata/oai_dc:dc/oai_dc:date">
89     <z:index name="dc_date:0">
90       <xsl:value-of select="."/>
91     </z:index>
92   </xsl:template>
93
94   <xsl:template match="oai:record/oai:metadata/oai_dc:dc/dc:format
95                     | oai:record/oai:metadata/oai_dc:dc/oai_dc:format">
96     <z:index name="dc_format:0">
97       <xsl:value-of select="."/>
98     </z:index>
99   </xsl:template>
100
101   <xsl:template match="oai:record/oai:metadata/oai_dc:dc/dc:identifier
102                     | oai:record/oai:metadata/oai_dc:dc/oai_dc:identifier">
103     <z:index name="dc_identifier:0">
104       <xsl:value-of select="."/>
105     </z:index>
106   </xsl:template>
107
108   <xsl:template match="oai:record/oai:metadata/oai_dc:dc/dc:source
109                     | oai:record/oai:metadata/oai_dc:dc/oai_dc:source">
110     <z:index name="dc_source:0">
111       <xsl:value-of select="."/>
112     </z:index>
113   </xsl:template>
114
115   <xsl:template match="oai:record/oai:metadata/oai_dc:dc/dc:language
116                     | oai:record/oai:metadata/oai_dc:dc/oai_dc:language">
117     <z:index name="dc_language:w">
118       <xsl:value-of select="."/>
119     </z:index>
120   </xsl:template>
121
122   <xsl:template match="oai:record/oai:metadata/oai_dc:dc/dc:relation
123                     | oai:record/oai:metadata/oai_dc:dc/oai_dc:relation">
124     <z:index name="dc_relation:0">
125       <xsl:value-of select="."/>
126     </z:index>
127   </xsl:template>
128
129   <xsl:template match="oai:record/oai:metadata/oai_dc:dc/dc:rights
130                     | oai:record/oai:metadata/oai_dc:dc/oai_dc:rights">
131     <z:index name="dc_rights:p dc_rights:w">
132       <xsl:value-of select="."/>
133     </z:index>
134   </xsl:template>
135
136 </xsl:stylesheet>