View | Details | Raw Unified | Return to bug 5565
Collapse All | Expand All

(-)a/koha-tmpl/intranet-tmpl/prog/en/xslt/UNIMARCslim2OAIDC.xsl (-180 / +175 lines)
Lines 5-187 Link Here
5
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
5
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
6
  xmlns:dc="http://purl.org/dc/elements/1.1/" 
6
  xmlns:dc="http://purl.org/dc/elements/1.1/" 
7
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="marc">
7
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="marc">
8
	<xsl:import href="MARC21slimUtils.xsl"/>
8
  <xsl:import href="MARC21slimUtils.xsl"/>
9
	<xsl:output method="xml" indent="yes"/>
9
  <xsl:output method="xml" indent="yes"/>
10
	<xsl:template match="/">
10
  <xsl:template match="/">
11
		<xsl:if test="marc:collection">
11
    <xsl:if test="marc:collection">
12
			<oai_dc:dcCollection xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
12
      <oai_dc:dcCollection xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
13
				<xsl:for-each select="marc:collection">
13
        <xsl:for-each select="marc:collection">
14
					<xsl:for-each select="marc:record">
14
          <xsl:for-each select="marc:record">
15
						<oai_dc:dc>
15
            <oai_dc:dc>
16
							<xsl:apply-templates select="."/>
16
              <xsl:apply-templates select="."/>
17
						</oai_dc:dc>
17
            </oai_dc:dc>
18
					</xsl:for-each>
18
          </xsl:for-each>
19
				</xsl:for-each>
19
        </xsl:for-each>
20
			</oai_dc:dcCollection>
20
      </oai_dc:dcCollection>
21
		</xsl:if>
21
    </xsl:if>
22
		<xsl:if test="marc:record">
22
    <xsl:if test="marc:record">
23
          <oai_dc:dc
23
      <oai_dc:dc
24
            xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"
24
      xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"
25
            xmlns:dc="http://purl.org/dc/elements/1.1/"
25
      xmlns:dc="http://purl.org/dc/elements/1.1/"
26
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
26
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
27
            xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
27
      xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
28
				<xsl:apply-templates/>
28
        <xsl:apply-templates/>
29
			</oai_dc:dc>
29
      </oai_dc:dc>
30
		</xsl:if>
30
    </xsl:if>
31
	</xsl:template>
31
  </xsl:template>
32
	<xsl:template match="marc:record">
32
  <xsl:template match="marc:record">
33
		<xsl:variable name="leader" select="marc:leader"/>
33
    <xsl:for-each select="marc:datafield[@tag=200]">
34
		<xsl:variable name="leader6" select="substring($leader,7,1)"/>
34
      <dc:title>
35
		<xsl:variable name="leader7" select="substring($leader,8,1)"/>
35
        <xsl:call-template name="subfieldSelect">
36
		<xsl:variable name="controlField008" select="marc:controlfield[@tag=008]"/>
36
          <xsl:with-param name="codes">a</xsl:with-param>
37
37
        </xsl:call-template>
38
		<xsl:for-each select="marc:datafield[@tag=200]">
38
      </dc:title>
39
			<dc:title>
39
    </xsl:for-each>
40
				<xsl:call-template name="subfieldSelect">
40
    <xsl:for-each select="marc:datafield[@tag=700]|marc:datafield[@tag=701]|marc:datafield[@tag=702]|marc:datafield[@tag=710]|marc:datafield[@tag=711]|marc:datafield[@tag=712]">
41
					<xsl:with-param name="codes">a</xsl:with-param>
41
      <dc:creator>
42
				</xsl:call-template>
42
      <xsl:value-of select="marc:subfield[@code='a']"/>
43
			</dc:title>
43
      <xsl:if test="marc:subfield[@code='b']">
44
		</xsl:for-each>
44
         <xsl:text>, </xsl:text>
45
		<xsl:for-each select="marc:datafield[@tag=700]|marc:datafield[@tag=701]|marc:datafield[@tag=702]|marc:datafield[@tag=710]|marc:datafield[@tag=711]|marc:datafield[@tag=712]">
45
         <xsl:value-of select="marc:subfield[@code='b']"/>
46
	      <dc:creator>
46
      </xsl:if>
47
    	    <xsl:value-of select="marc:subfield[@code='a']"/>
47
      <xsl:choose>
48
    		<xsl:if test="marc:subfield[@code='b']">
48
        <xsl:when test="marc:subfield[@code='4']='010'">, adapter</xsl:when>
49
               <xsl:text>, </xsl:text>
49
        <xsl:when test="marc:subfield[@code='4']='020'">, annotator</xsl:when>
50
    		   <xsl:value-of select="marc:subfield[@code='b']"/>
50
        <xsl:when test="marc:subfield[@code='4']='075'">, author of afterword</xsl:when>
51
    		</xsl:if>
51
        <xsl:when test="marc:subfield[@code='4']='080'">, prefacer</xsl:when>
52
			<xsl:choose>
52
        <xsl:when test="marc:subfield[@code='4']='100'">, bibliographic antecedent</xsl:when>
53
    		  <xsl:when test="marc:subfield[@code='4']='010'">, adapter</xsl:when>
53
        <xsl:when test="marc:subfield[@code='4']='205'">, collaborator</xsl:when>
54
    		  <xsl:when test="marc:subfield[@code='4']='020'">, annotator</xsl:when>
54
        <xsl:when test="marc:subfield[@code='4']='212'">, commentator</xsl:when>
55
    		  <xsl:when test="marc:subfield[@code='4']='075'">, author of afterword</xsl:when>
55
        <xsl:when test="marc:subfield[@code='4']='220'">, compiler</xsl:when>
56
    		  <xsl:when test="marc:subfield[@code='4']='080'">, prefacer</xsl:when>
56
        <xsl:when test="marc:subfield[@code='4']='230'">, composer</xsl:when>
57
    		  <xsl:when test="marc:subfield[@code='4']='100'">, bibliographic antecedent</xsl:when>
57
        <xsl:when test="marc:subfield[@code='4']='245'">, conceptor</xsl:when>
58
    		  <xsl:when test="marc:subfield[@code='4']='205'">, collaborator</xsl:when>
58
        <xsl:when test="marc:subfield[@code='4']='295'">, degree-grantor</xsl:when>
59
    		  <xsl:when test="marc:subfield[@code='4']='212'">, commentator</xsl:when>
59
        <xsl:when test="marc:subfield[@code='4']='340'">, editor</xsl:when>
60
    		  <xsl:when test="marc:subfield[@code='4']='220'">, compiler</xsl:when>
60
        <xsl:when test="marc:subfield[@code='4']='370'">, film editor</xsl:when>
61
    		  <xsl:when test="marc:subfield[@code='4']='230'">, composer</xsl:when>
61
        <xsl:when test="marc:subfield[@code='4']='395'">, founder</xsl:when>
62
    		  <xsl:when test="marc:subfield[@code='4']='245'">, conceptor</xsl:when>
62
        <xsl:when test="marc:subfield[@code='4']='440'">, illustrator</xsl:when>
63
    		  <xsl:when test="marc:subfield[@code='4']='295'">, degree-grantor</xsl:when>
63
        <xsl:when test="marc:subfield[@code='4']='520'">, lyricist</xsl:when>
64
    		  <xsl:when test="marc:subfield[@code='4']='340'">, editor</xsl:when>
64
        <xsl:when test="marc:subfield[@code='4']='557'">, organiser of meeting</xsl:when>
65
    		  <xsl:when test="marc:subfield[@code='4']='370'">, film editor</xsl:when>
65
        <xsl:when test="marc:subfield[@code='4']='570'">, other</xsl:when>
66
    		  <xsl:when test="marc:subfield[@code='4']='395'">, founder</xsl:when>
66
        <xsl:when test="marc:subfield[@code='4']='600'">, photographer</xsl:when>
67
    		  <xsl:when test="marc:subfield[@code='4']='440'">, illustrator</xsl:when>
67
        <xsl:when test="marc:subfield[@code='4']='605'">, presenter</xsl:when>
68
    		  <xsl:when test="marc:subfield[@code='4']='520'">, lyricist</xsl:when>
68
        <xsl:when test="marc:subfield[@code='4']='650'">, publisher</xsl:when>
69
    		  <xsl:when test="marc:subfield[@code='4']='557'">, organiser of meeting</xsl:when>
69
        <xsl:when test="marc:subfield[@code='4']='651'">, publishing director</xsl:when>
70
    		  <xsl:when test="marc:subfield[@code='4']='570'">, other</xsl:when>
70
        <xsl:when test="marc:subfield[@code='4']='673'">, research team head</xsl:when>
71
    		  <xsl:when test="marc:subfield[@code='4']='600'">, photographer</xsl:when>
71
        <xsl:when test="marc:subfield[@code='4']='675'">, reviewer</xsl:when>
72
    		  <xsl:when test="marc:subfield[@code='4']='605'">, presenter</xsl:when>
72
        <xsl:when test="marc:subfield[@code='4']='710'">, redactor</xsl:when>
73
    		  <xsl:when test="marc:subfield[@code='4']='650'">, publisher</xsl:when>
73
        <xsl:when test="marc:subfield[@code='4']='723'">, sponsor</xsl:when>
74
    		  <xsl:when test="marc:subfield[@code='4']='651'">, publishing director</xsl:when>
74
        <xsl:when test="marc:subfield[@code='4']='727'">, thesis advisor</xsl:when>
75
    		  <xsl:when test="marc:subfield[@code='4']='673'">, research team head</xsl:when>
75
        <xsl:when test="marc:subfield[@code='4']='730'">, translator</xsl:when>
76
    		  <xsl:when test="marc:subfield[@code='4']='675'">, reviewer</xsl:when>
76
      </xsl:choose>
77
    		  <xsl:when test="marc:subfield[@code='4']='710'">, redactor</xsl:when>
77
      </dc:creator>
78
    		  <xsl:when test="marc:subfield[@code='4']='723'">, sponsor</xsl:when>
78
    </xsl:for-each>
79
    		  <xsl:when test="marc:subfield[@code='4']='727'">, thesis advisor</xsl:when>
79
    <dc:type>
80
    		  <xsl:when test="marc:subfield[@code='4']='730'">, translator</xsl:when>
80
      <xsl:value-of select="marc:datafield[@tag=200]/marc:subfield[@code='b']"/>
81
    		</xsl:choose>
81
    </dc:type>
82
		  </dc:creator>
82
    <xsl:for-each select="marc:datafield[@tag=210]/marc:subfield[@code='c']">
83
		</xsl:for-each>
83
      <dc:publisher>
84
		<dc:type>
84
        <xsl:value-of select="."/>
85
		  <xsl:value-of select="marc:datafield[@tag=200]/marc:subfield[@code='b']"/>
85
      </dc:publisher>
86
		</dc:type>
86
    </xsl:for-each>
87
		<xsl:for-each select="marc:datafield[@tag=210]/marc:subfield[@code='c']">
87
    <xsl:for-each select="marc:datafield[@tag=210]/marc:subfield[@code='d']">
88
			<dc:publisher>
88
      <dc:date>
89
				<xsl:value-of select="."/>
89
        <xsl:value-of select="."/>
90
			</dc:publisher>
90
      </dc:date>
91
		</xsl:for-each>
91
    </xsl:for-each>
92
		<xsl:for-each select="marc:datafield[@tag=210]/marc:subfield[@code='d']">
92
    <xsl:for-each select="marc:datafield[@tag=101]/marc:subfield[@code='a']">
93
			<dc:date>
93
      <dc:language>
94
				<xsl:value-of select="."/>
94
      <xsl:value-of select="."/>
95
			</dc:date>
95
      </dc:language>
96
		</xsl:for-each>
96
    </xsl:for-each>
97
		<xsl:for-each select="marc:datafield[@tag=101]/marc:subfield[@code='a']">
97
    <xsl:for-each select="marc:datafield[@tag=856]/marc:subfield[@code='q']">
98
		  <dc:language>
98
      <dc:format>
99
			<xsl:value-of select="."/>
99
        <xsl:value-of select="."/>
100
	      </dc:language>
100
      </dc:format>
101
		</xsl:for-each>
101
    </xsl:for-each>
102
		<xsl:for-each select="marc:datafield[@tag=856]/marc:subfield[@code='q']">
102
    <xsl:for-each select="marc:datafield[@tag=520]">
103
			<dc:format>
103
      <dc:description>
104
				<xsl:value-of select="."/>
104
        <xsl:value-of select="marc:subfield[@code='a']"/>
105
			</dc:format>
105
      </dc:description>
106
		</xsl:for-each>
106
    </xsl:for-each>
107
		<xsl:for-each select="marc:datafield[@tag=520]">
107
    <xsl:for-each select="marc:datafield[@tag=521]">
108
			<dc:description>
108
      <dc:description>
109
				<xsl:value-of select="marc:subfield[@code='a']"/>
109
        <xsl:value-of select="marc:subfield[@code='a']"/>
110
			</dc:description>
110
      </dc:description>
111
		</xsl:for-each>
111
    </xsl:for-each>
112
		<xsl:for-each select="marc:datafield[@tag=521]">
112
    <xsl:for-each select="marc:datafield[300&lt;@tag][@tag&lt;=345]">
113
			<dc:description>
113
      <dc:description>
114
				<xsl:value-of select="marc:subfield[@code='a']"/>
114
        <xsl:value-of select="marc:subfield[@code='a']"/>
115
			</dc:description>
115
      </dc:description>
116
		</xsl:for-each>
116
    </xsl:for-each>
117
		<xsl:for-each select="marc:datafield[300&lt;@tag][@tag&lt;=345]">
117
    <xsl:for-each select="marc:datafield[@tag=600]|marc:datafield[@tag=601]|marc:datafield[@tag=602]|marc:datafield[@tag=604]|marc:datafield[@tag=605]|marc:datafield[@tag=606]">
118
			<dc:description>
118
      <dc:subject>
119
				<xsl:value-of select="marc:subfield[@code='a']"/>
119
        <xsl:call-template name="subfieldSelect">
120
			</dc:description>
120
          <xsl:with-param name="codes">abcdq</xsl:with-param>
121
		</xsl:for-each>
121
        </xsl:call-template>
122
		<xsl:for-each select="marc:datafield[@tag=600]|marc:datafield[@tag=601]|marc:datafield[@tag=602]|marc:datafield[@tag=604]|marc:datafield[@tag=605]|marc:datafield[@tag=606]">
122
      </dc:subject>
123
			<dc:subject>
123
    </xsl:for-each>
124
				<xsl:call-template name="subfieldSelect">
124
    <xsl:for-each select="marc:datafield[@tag=752]">
125
					<xsl:with-param name="codes">abcdq</xsl:with-param>
125
      <dc:coverage>
126
				</xsl:call-template>
126
        <xsl:call-template name="subfieldSelect">
127
			</dc:subject>
127
          <xsl:with-param name="codes">abcd</xsl:with-param>
128
		</xsl:for-each>
128
        </xsl:call-template>
129
		<xsl:for-each select="marc:datafield[@tag=752]">
129
      </dc:coverage>
130
			<dc:coverage>
130
    </xsl:for-each>
131
				<xsl:call-template name="subfieldSelect">
131
    <xsl:for-each select="marc:datafield[@tag=530]">
132
					<xsl:with-param name="codes">abcd</xsl:with-param>
132
      <dc:relation type="original">
133
				</xsl:call-template>
133
        <xsl:call-template name="subfieldSelect">
134
			</dc:coverage>
134
          <xsl:with-param name="codes">abcdu</xsl:with-param>
135
		</xsl:for-each>
135
        </xsl:call-template>
136
		<xsl:for-each select="marc:datafield[@tag=530]">
136
      </dc:relation>
137
			<dc:relation type="original">
137
    </xsl:for-each>
138
				<xsl:call-template name="subfieldSelect">
138
    <xsl:for-each select="marc:datafield[@tag=461]|marc:datafield[@tag=464]">
139
					<xsl:with-param name="codes">abcdu</xsl:with-param>
139
      <dc:relation>
140
				</xsl:call-template>
140
        <xsl:call-template name="subfieldSelect">
141
			</dc:relation>
141
          <xsl:with-param name="codes">t</xsl:with-param>
142
		</xsl:for-each>
142
        </xsl:call-template>
143
		<xsl:for-each select="marc:datafield[@tag=461]|marc:datafield[@tag=464]">
143
      </dc:relation>
144
			<dc:relation>
144
    </xsl:for-each>
145
				<xsl:call-template name="subfieldSelect">
145
    <xsl:for-each select="marc:datafield[@tag=856]">
146
					<xsl:with-param name="codes">t</xsl:with-param>
146
      <dc:identifier>
147
				</xsl:call-template>
147
        <xsl:value-of select="marc:subfield[@code='u']"/>
148
			</dc:relation>
148
      </dc:identifier>
149
		</xsl:for-each>
149
    </xsl:for-each>
150
		<xsl:for-each select="marc:datafield[@tag=856]">
150
    <xsl:for-each select="marc:datafield[@tag=010]">
151
			<dc:identifier>
151
      <dc:identifier>
152
				<xsl:value-of select="marc:subfield[@code='u']"/>
152
        <xsl:text>URN:ISBN:</xsl:text>
153
			</dc:identifier>
153
        <xsl:value-of select="marc:subfield[@code='a']"/>
154
		</xsl:for-each>
154
      </dc:identifier>
155
		<xsl:for-each select="marc:datafield[@tag=010]">
155
    </xsl:for-each>
156
			<dc:identifier>
156
    <xsl:for-each select="marc:datafield[@tag=011]">
157
				<xsl:text>URN:ISBN:</xsl:text>
157
      <dc:identifier>
158
				<xsl:value-of select="marc:subfield[@code='a']"/>
158
        <xsl:text>URN:ISSN:</xsl:text>
159
			</dc:identifier>
159
        <xsl:value-of select="marc:subfield[@code='a']"/>
160
		</xsl:for-each>
160
      </dc:identifier>
161
		<xsl:for-each select="marc:datafield[@tag=011]">
161
    </xsl:for-each>
162
			<dc:identifier>
162
    <xsl:for-each select="marc:datafield[@tag=090]">
163
				<xsl:text>URN:ISSN:</xsl:text>
163
       <dc:identifier>
164
				<xsl:value-of select="marc:subfield[@code='a']"/>
164
      <xsl:text>http://opac.mylibrary.org/bib/</xsl:text>
165
			</dc:identifier>
165
      <xsl:value-of select="marc:subfield[@code='a']"/>
166
		</xsl:for-each>
166
      </dc:identifier>
167
		<xsl:for-each select="marc:datafield[@tag=090]">
167
    </xsl:for-each>
168
   	      <dc:identifier>
168
    <xsl:for-each select="marc:datafield[@tag=995]">
169
		    <xsl:text>http://opac.mylibrary.org/bib/</xsl:text>
169
       <dc:identifier>
170
		    <xsl:value-of select="marc:subfield[@code='a']"/>
170
      <xsl:text>LOC:</xsl:text>
171
		  </dc:identifier>
171
      <xsl:choose>
172
		</xsl:for-each>
172
        <xsl:when test="marc:subfield[@code='c']='MAIN'">Main Branch</xsl:when>
173
		<xsl:for-each select="marc:datafield[@tag=995]">
173
        <xsl:when test="marc:subfield[@code='c']='BIB2'">Library 2</xsl:when>
174
   	      <dc:identifier>
174
      </xsl:choose>
175
		    <xsl:text>LOC:</xsl:text>
175
      <xsl:foreach select="marc:subfield[@code='k']">
176
		    <xsl:choose>
176
        <xsl:text>:</xsl:text>
177
    		  <xsl:when test="marc:subfield[@code='c']='MAIN'">Main Branch</xsl:when>
177
        <xsl:value-of select="."/>
178
    		  <xsl:when test="marc:subfield[@code='c']='BIB2'">Library 2</xsl:when>
178
      </xsl:foreach>
179
    		</xsl:choose>
179
      </dc:identifier>
180
    		<xsl:foreach select="marc:subfield[@code='k']">
180
    </xsl:for-each>
181
    	      <xsl:text>:</xsl:text>
181
  </xsl:template>
182
		      <xsl:value-of select="."/>
183
		    </xsl:foreach>
184
		  </dc:identifier>
185
		</xsl:for-each>
186
	</xsl:template>
187
</xsl:stylesheet>
182
</xsl:stylesheet>
188
- 
183

Return to bug 5565