1 package org.marc4j.test;
\r
3 import java.io.ByteArrayInputStream;
\r
4 import java.io.ByteArrayOutputStream;
\r
6 import java.io.FileOutputStream;
\r
7 import java.io.InputStream;
\r
8 import java.io.InputStreamReader;
\r
9 import java.io.OutputStream;
\r
10 import java.io.PrintStream;
\r
11 import java.io.StringReader;
\r
13 import javax.xml.transform.stream.StreamResult;
\r
14 import javax.xml.transform.stream.StreamSource;
\r
16 import junit.framework.Test;
\r
17 import junit.framework.TestCase;
\r
18 import junit.framework.TestSuite;
\r
19 import junit.textui.TestRunner;
\r
21 import org.marc4j.MarcStreamReader;
\r
22 import org.marc4j.MarcStreamWriter;
\r
23 import org.marc4j.MarcWriter;
\r
24 import org.marc4j.MarcXmlReader;
\r
25 import org.marc4j.MarcXmlWriter;
\r
26 import org.marc4j.TurboMarcXmlWriter;
\r
27 import org.marc4j.marc.Record;
\r
29 public class WriterTest extends TestCase {
\r
33 public void testMarcStreamWriter() throws Exception {
\r
34 InputStream input = getClass().getResourceAsStream(
\r
35 "resources/summerland.xml");
\r
36 MarcStreamWriter writer = new MarcStreamWriter(System.out);
\r
37 MarcXmlReader reader = new MarcXmlReader(input);
\r
38 while (reader.hasNext()) {
\r
39 Record record = reader.next();
\r
40 writer.write(record);
\r
44 System.out.println("");
\r
47 public void testMarcXmlWriter() throws Exception {
\r
48 InputStream input = getClass().getResourceAsStream(
\r
49 "resources/summerland.mrc");
\r
50 MarcWriter writer = new MarcXmlWriter(System.out, true);
\r
51 MarcStreamReader reader = new MarcStreamReader(input);
\r
52 while (reader.hasNext()) {
\r
53 Record record = reader.next();
\r
54 writer.write(record);
\r
58 System.out.println("");
\r
61 public void testTurboMarcXmlWriter() throws Exception {
\r
62 InputStream input = getClass().getResourceAsStream(
\r
63 "resources/summerland.mrc");
\r
64 MarcWriter writer = new TurboMarcXmlWriter(System.out, true);
\r
65 MarcStreamReader reader = new MarcStreamReader(input);
\r
66 while (reader.hasNext()) {
\r
67 Record record = reader.next();
\r
68 writer.write(record);
\r
72 System.out.println("");
\r
75 public void testDummyLoadLoC10K() throws Exception {
\r
76 @SuppressWarnings("unused")
\r
77 InputStream input = getClass().getResourceAsStream("resources/loc-10k-0000001.mrc");
\r
80 public void testMarcXmlWriterLoC10K() throws Exception {
\r
81 InputStream input = getClass().getResourceAsStream("resources/loc-10k-0000001.mrc");
\r
82 MarcWriter writer = new MarcXmlWriter(new FileOutputStream( new File("auto-graphics.txml")), true);
\r
83 MarcStreamReader reader = new MarcStreamReader(input);
\r
84 doReadWrite(writer, reader);
\r
87 public void testTurboMarcXmlWriterLoC10K() throws Exception {
\r
88 InputStream input = getClass().getResourceAsStream("resources/loc-10k-0000001.mrc");
\r
89 MarcWriter writer = new TurboMarcXmlWriter(new FileOutputStream( new File("auto-graphics.txml")), true);
\r
90 MarcStreamReader reader = new MarcStreamReader(input);
\r
91 doReadWrite(writer, reader);
\r
95 private void doReadWrite(MarcWriter writer, MarcStreamReader reader) {
\r
97 long start = System.currentTimeMillis();
\r
98 while (reader.hasNext()) {
\r
99 Record record = reader.next();
\r
100 writer.write(record);
\r
103 long time = System.currentTimeMillis() - start;
\r
106 System.out.println("\nNumber of records: " + index + ". Records per second: " + (1000L * index / time));
\r
108 System.out.println("\nNumber of records: " + index + ". Records per second: (zero millisecs)" );
\r
112 public void testMarcXmlWriter2pz() throws Exception {
\r
113 InputStream input = getClass().getResourceAsStream("resources/summerland.mrc");
\r
114 StreamResult result = new StreamResult(System.out);
\r
115 MarcWriter writer = new MarcXmlWriter(result, new StreamSource(new StringReader(marc2pz)));
\r
116 MarcStreamReader reader = new MarcStreamReader(input);
\r
117 doReadWrite(writer, reader);
\r
122 public void testMarcXmlWriterLoC10K2pz() throws Exception {
\r
123 InputStream input = getClass().getResourceAsStream("resources/loc-10k-0000001.mrc");
\r
124 PrintStream devNull = new java.io.PrintStream ( new java.io.OutputStream ( ) { public void write ( int b ) { } });
\r
125 OutputStream file = new FileOutputStream("loc10k.xml");
\r
126 StreamResult result = new StreamResult(file);
\r
127 MarcWriter writer = new MarcXmlWriter(result, new StreamSource(new InputStreamReader(getClass().getResourceAsStream("resources/marc21.xsl"))));
\r
129 MarcStreamReader reader = new MarcStreamReader(input);
\r
130 doReadWrite(writer, reader);
\r
134 public void testTurboMarcXmlWriterLoC10K2pz() throws Exception {
\r
135 InputStream input = getClass().getResourceAsStream("resources/loc-10k-0000001.mrc");
\r
136 PrintStream devNull = new java.io.PrintStream ( new java.io.OutputStream ( ) { public void write ( int b ) { } });
\r
137 OutputStream file = new FileOutputStream("loc10k.txml");
\r
138 StreamResult result = new StreamResult(file);
\r
139 MarcWriter writer = new TurboMarcXmlWriter(result, new StreamSource(new InputStreamReader(getClass().getResourceAsStream("resources/tmarc.xsl"))));
\r
140 MarcStreamReader reader = new MarcStreamReader(input);
\r
141 doReadWrite(writer, reader);
\r
145 public void testWriteAndRead() throws Exception {
\r
146 InputStream input = getClass().getResourceAsStream("resources/summerland.xml");
\r
147 ByteArrayOutputStream out = new ByteArrayOutputStream();
\r
148 MarcStreamWriter writer = new MarcStreamWriter(out);
\r
149 MarcXmlReader reader = new MarcXmlReader(input);
\r
150 while (reader.hasNext()) {
\r
151 Record record = reader.next();
\r
152 writer.write(record);
\r
157 ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());
\r
158 MarcStreamReader marcReader = new MarcStreamReader(in);
\r
159 MarcStreamWriter marcWriter = new MarcStreamWriter(System.out);
\r
160 while (marcReader.hasNext()) {
\r
161 Record record = marcReader.next();
\r
162 marcWriter.write(record);
\r
165 marcWriter.close();
\r
170 public static Test suite() {
\r
171 return new TestSuite(WriterTest.class);
\r
174 public static void main(String args[]) {
\r
175 TestRunner.run(suite());
\r
180 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n" +
\r
181 "<xsl:stylesheet\r\n" +
\r
182 " version=\"1.0\"\r\n" +
\r
183 " xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\"\r\n" +
\r
184 " xmlns:pz=\"http://www.indexdata.com/pazpar2/1.0\"\r\n" +
\r
185 " xmlns:marc=\"http://www.loc.gov/MARC21/slim\">\r\n" +
\r
186 " <xsl:output indent=\"yes\" method=\"xml\" version=\"1.0\" encoding=\"UTF-8\"/>\r\n" +
\r
187 "<!-- Extract metadata from MARC21/USMARC \r\n" +
\r
188 " http://www.loc.gov/marc/bibliographic/ecbdhome.html\r\n" +
\r
190 " <xsl:include href=\"pz2-ourl-marc21.xsl\" />\r\n" +
\r
192 " <xsl:template match=\"/\">\r\n" +
\r
193 " <pz:collection> \r\n" +
\r
194 " <xsl:apply-templates />\r\n" +
\r
195 " </pz:collection>\r\n" +
\r
196 " </xsl:template> \r\n" +
\r
198 " <xsl:template match=\"//delete\">\r\n" +
\r
199 " <xsl:copy-of select=\".\"/> \r\n" +
\r
200 " </xsl:template> \r\n" +
\r
202 " <xsl:template match=\"//marc:record\">\r\n" +
\r
203 " <xsl:variable name=\"title_medium\" select=\"marc:datafield[@tag='245']/marc:subfield[@code='h']\"/>\r\n" +
\r
204 " <xsl:variable name=\"journal_title\" select=\"marc:datafield[@tag='773']/marc:subfield[@code='t']\"/>\r\n" +
\r
205 " <xsl:variable name=\"electronic_location_url\" select=\"marc:datafield[@tag='856']/marc:subfield[@code='u']\"/>\r\n" +
\r
206 " <xsl:variable name=\"fulltext_a\" select=\"marc:datafield[@tag='900']/marc:subfield[@code='a']\"/>\r\n" +
\r
207 " <xsl:variable name=\"fulltext_b\" select=\"marc:datafield[@tag='900']/marc:subfield[@code='b']\"/>\r\n" +
\r
208 " <xsl:variable name=\"medium\">\r\n" +
\r
209 " <xsl:choose>\r\n" +
\r
210 " <xsl:when test=\"$title_medium\">\r\n" +
\r
211 " <xsl:value-of select=\"substring-after(substring-before($title_medium,']'),'[')\"/>\r\n" +
\r
212 " </xsl:when>\r\n" +
\r
213 " <xsl:when test=\"$fulltext_a\">\r\n" +
\r
214 " <xsl:text>electronic resource</xsl:text>\r\n" +
\r
215 " </xsl:when>\r\n" +
\r
216 " <xsl:when test=\"$fulltext_b\">\r\n" +
\r
217 " <xsl:text>electronic resource</xsl:text>\r\n" +
\r
218 " </xsl:when>\r\n" +
\r
219 " <xsl:when test=\"$journal_title\">\r\n" +
\r
220 " <xsl:text>article</xsl:text>\r\n" +
\r
221 " </xsl:when>\r\n" +
\r
222 " <xsl:otherwise>\r\n" +
\r
223 " <xsl:text>book</xsl:text>\r\n" +
\r
224 " </xsl:otherwise>\r\n" +
\r
225 " </xsl:choose>\r\n" +
\r
226 " </xsl:variable>\r\n" +
\r
228 " <pz:record> \r\n" +
\r
229 " <xsl:for-each select=\"marc:controlfield[@tag='001']\">\r\n" +
\r
230 " <pz:metadata type=\"id\">\r\n" +
\r
231 " <xsl:value-of select=\".\"/>\r\n" +
\r
232 " </pz:metadata>\r\n" +
\r
233 " </xsl:for-each>\r\n" +
\r
235 " <xsl:for-each select=\"marc:datafield[@tag='010']\">\r\n" +
\r
236 " <pz:metadata type=\"lccn\">\r\n" +
\r
237 " <xsl:value-of select=\"marc:subfield[@code='a']\"/>\r\n" +
\r
238 " </pz:metadata>\r\n" +
\r
239 " </xsl:for-each>\r\n" +
\r
241 " <xsl:for-each select=\"marc:datafield[@tag='020']\">\r\n" +
\r
242 " <pz:metadata type=\"isbn\">\r\n" +
\r
243 " <xsl:value-of select=\"marc:subfield[@code='a']\"/>\r\n" +
\r
244 " </pz:metadata>\r\n" +
\r
245 " </xsl:for-each>\r\n" +
\r
247 " <xsl:for-each select=\"marc:datafield[@tag='022']\">\r\n" +
\r
248 " <pz:metadata type=\"issn\">\r\n" +
\r
249 " <xsl:value-of select=\"marc:subfield[@code='a']\"/>\r\n" +
\r
250 " </pz:metadata>\r\n" +
\r
251 " </xsl:for-each>\r\n" +
\r
253 " <xsl:for-each select=\"marc:datafield[@tag='027']\">\r\n" +
\r
254 " <pz:metadata type=\"tech-rep-nr\">\r\n" +
\r
255 " <xsl:value-of select=\"marc:subfield[@code='a']\"/>\r\n" +
\r
256 " </pz:metadata>\r\n" +
\r
257 " </xsl:for-each>\r\n" +
\r
259 " <xsl:for-each select=\"marc:datafield[@tag='035']\">\r\n" +
\r
260 " <pz:metadata type=\"system-control-nr\">\r\n" +
\r
261 " <xsl:value-of select=\"marc:subfield[@code='a']\"/>\r\n" +
\r
262 " </pz:metadata>\r\n" +
\r
263 " </xsl:for-each>\r\n" +
\r
265 " <xsl:for-each select=\"marc:datafield[@tag='100']\">\r\n" +
\r
266 " <pz:metadata type=\"author\">\r\n" +
\r
267 " <xsl:value-of select=\"marc:subfield[@code='a']\"/>\r\n" +
\r
268 " </pz:metadata>\r\n" +
\r
269 " <pz:metadata type=\"author-title\">\r\n" +
\r
270 " <xsl:value-of select=\"marc:subfield[@code='c']\"/>\r\n" +
\r
271 " </pz:metadata>\r\n" +
\r
272 " <pz:metadata type=\"author-date\">\r\n" +
\r
273 " <xsl:value-of select=\"marc:subfield[@code='d']\"/>\r\n" +
\r
274 " </pz:metadata>\r\n" +
\r
275 " </xsl:for-each>\r\n" +
\r
277 " <xsl:for-each select=\"marc:datafield[@tag='110']\">\r\n" +
\r
278 " <pz:metadata type=\"corporate-name\">\r\n" +
\r
279 " <xsl:value-of select=\"marc:subfield[@code='a']\"/>\r\n" +
\r
280 " </pz:metadata>\r\n" +
\r
281 " <pz:metadata type=\"corporate-location\">\r\n" +
\r
282 " <xsl:value-of select=\"marc:subfield[@code='c']\"/>\r\n" +
\r
283 " </pz:metadata>\r\n" +
\r
284 " <pz:metadata type=\"corporate-date\">\r\n" +
\r
285 " <xsl:value-of select=\"marc:subfield[@code='d']\"/>\r\n" +
\r
286 " </pz:metadata>\r\n" +
\r
287 " </xsl:for-each>\r\n" +
\r
289 " <xsl:for-each select=\"marc:datafield[@tag='111']\">\r\n" +
\r
290 " <pz:metadata type=\"meeting-name\">\r\n" +
\r
291 " <xsl:value-of select=\"marc:subfield[@code='a']\"/>\r\n" +
\r
292 " </pz:metadata>\r\n" +
\r
293 " <pz:metadata type=\"meeting-location\">\r\n" +
\r
294 " <xsl:value-of select=\"marc:subfield[@code='c']\"/>\r\n" +
\r
295 " </pz:metadata>\r\n" +
\r
296 " <pz:metadata type=\"meeting-date\">\r\n" +
\r
297 " <xsl:value-of select=\"marc:subfield[@code='d']\"/>\r\n" +
\r
298 " </pz:metadata>\r\n" +
\r
299 " </xsl:for-each>\r\n" +
\r
301 " <xsl:for-each select=\"marc:datafield[@tag='260']\">\r\n" +
\r
302 " <pz:metadata type=\"date\">\r\n" +
\r
303 " <xsl:value-of select=\"marc:subfield[@code='c']\"/>\r\n" +
\r
304 " </pz:metadata>\r\n" +
\r
305 " </xsl:for-each>\r\n" +
\r
307 " <xsl:for-each select=\"marc:datafield[@tag='245']\">\r\n" +
\r
308 " <pz:metadata type=\"title\">\r\n" +
\r
309 " <xsl:value-of select=\"marc:subfield[@code='a']\"/>\r\n" +
\r
310 " </pz:metadata>\r\n" +
\r
311 " <pz:metadata type=\"title-remainder\">\r\n" +
\r
312 " <xsl:value-of select=\"marc:subfield[@code='b']\"/>\r\n" +
\r
313 " </pz:metadata>\r\n" +
\r
314 " <pz:metadata type=\"title-responsibility\">\r\n" +
\r
315 " <xsl:value-of select=\"marc:subfield[@code='c']\"/>\r\n" +
\r
316 " </pz:metadata>\r\n" +
\r
317 " <pz:metadata type=\"title-dates\">\r\n" +
\r
318 " <xsl:value-of select=\"marc:subfield[@code='f']\"/>\r\n" +
\r
319 " </pz:metadata>\r\n" +
\r
320 " <pz:metadata type=\"title-medium\">\r\n" +
\r
321 " <xsl:value-of select=\"marc:subfield[@code='h']\"/>\r\n" +
\r
322 " </pz:metadata>\r\n" +
\r
323 " <pz:metadata type=\"title-number-section\">\r\n" +
\r
324 " <xsl:value-of select=\"marc:subfield[@code='n']\"/>\r\n" +
\r
325 " </pz:metadata>\r\n" +
\r
326 " </xsl:for-each>\r\n" +
\r
328 " <xsl:for-each select=\"marc:datafield[@tag='250']\">\r\n" +
\r
329 " <pz:metadata type=\"edition\">\r\n" +
\r
330 " <xsl:value-of select=\"marc:subfield[@code='a']\"/>\r\n" +
\r
331 " </pz:metadata>\r\n" +
\r
332 " </xsl:for-each>\r\n" +
\r
334 " <xsl:for-each select=\"marc:datafield[@tag='260']\">\r\n" +
\r
335 " <pz:metadata type=\"publication-place\">\r\n" +
\r
336 " <xsl:value-of select=\"marc:subfield[@code='a']\"/>\r\n" +
\r
337 " </pz:metadata>\r\n" +
\r
338 " <pz:metadata type=\"publication-name\">\r\n" +
\r
339 " <xsl:value-of select=\"marc:subfield[@code='b']\"/>\r\n" +
\r
340 " </pz:metadata>\r\n" +
\r
341 " <pz:metadata type=\"publication-date\">\r\n" +
\r
342 " <xsl:value-of select=\"marc:subfield[@code='c']\"/>\r\n" +
\r
343 " </pz:metadata>\r\n" +
\r
344 " </xsl:for-each>\r\n" +
\r
346 " <xsl:for-each select=\"marc:datafield[@tag='300']\">\r\n" +
\r
347 " <pz:metadata type=\"physical-extent\">\r\n" +
\r
348 " <xsl:value-of select=\"marc:subfield[@code='a']\"/>\r\n" +
\r
349 " </pz:metadata>\r\n" +
\r
350 " <pz:metadata type=\"physical-format\">\r\n" +
\r
351 " <xsl:value-of select=\"marc:subfield[@code='b']\"/>\r\n" +
\r
352 " </pz:metadata>\r\n" +
\r
353 " <pz:metadata type=\"physical-dimensions\">\r\n" +
\r
354 " <xsl:value-of select=\"marc:subfield[@code='c']\"/>\r\n" +
\r
355 " </pz:metadata>\r\n" +
\r
356 " <pz:metadata type=\"physical-accomp\">\r\n" +
\r
357 " <xsl:value-of select=\"marc:subfield[@code='e']\"/>\r\n" +
\r
358 " </pz:metadata>\r\n" +
\r
359 " <pz:metadata type=\"physical-unittype\">\r\n" +
\r
360 " <xsl:value-of select=\"marc:subfield[@code='f']\"/>\r\n" +
\r
361 " </pz:metadata>\r\n" +
\r
362 " <pz:metadata type=\"physical-unitsize\">\r\n" +
\r
363 " <xsl:value-of select=\"marc:subfield[@code='g']\"/>\r\n" +
\r
364 " </pz:metadata>\r\n" +
\r
365 " <pz:metadata type=\"physical-specified\">\r\n" +
\r
366 " <xsl:value-of select=\"marc:subfield[@code='3']\"/>\r\n" +
\r
367 " </pz:metadata>\r\n" +
\r
368 " </xsl:for-each>\r\n" +
\r
370 " <xsl:for-each select=\"marc:datafield[@tag='440']\">\r\n" +
\r
371 " <pz:metadata type=\"series-title\">\r\n" +
\r
372 " <xsl:value-of select=\"marc:subfield[@code='a']\"/>\r\n" +
\r
373 " </pz:metadata>\r\n" +
\r
374 " </xsl:for-each>\r\n" +
\r
376 " <xsl:for-each select=\"marc:datafield[@tag = '500' or @tag = '505' or @tag = '518' or @tag = '520' or @tag = '522']\">\r\n" +
\r
377 " <pz:metadata type=\"description\">\r\n" +
\r
378 " <xsl:value-of select=\"*/text()\"/>\r\n" +
\r
379 " </pz:metadata>\r\n" +
\r
380 " </xsl:for-each>\r\n" +
\r
382 " <xsl:for-each select=\"marc:datafield[@tag='600' or @tag='610' or @tag='611' or @tag='630' or @tag='648' or @tag='650' or @tag='651' or @tag='653' or @tag='654' or @tag='655' or @tag='656' or @tag='657' or @tag='658' or @tag='662' or @tag='69X']\">\r\n" +
\r
383 " <pz:metadata type=\"subject\">\r\n" +
\r
384 " <xsl:value-of select=\"marc:subfield[@code='a']\"/>\r\n" +
\r
385 " </pz:metadata>\r\n" +
\r
386 " <pz:metadata type=\"subject-long\">\r\n" +
\r
387 " <xsl:for-each select=\"marc:subfield\">\r\n" +
\r
388 " <xsl:if test=\"position() > 1\">\r\n" +
\r
389 " <xsl:text>, </xsl:text>\r\n" +
\r
390 " </xsl:if>\r\n" +
\r
391 " <xsl:value-of select=\".\"/>\r\n" +
\r
392 " </xsl:for-each>\r\n" +
\r
393 " </pz:metadata>\r\n" +
\r
394 " </xsl:for-each>\r\n" +
\r
396 " <xsl:for-each select=\"marc:datafield[@tag='856']\">\r\n" +
\r
397 " <pz:metadata type=\"electronic-url\">\r\n" +
\r
398 " <xsl:value-of select=\"marc:subfield[@code='u']\"/>\r\n" +
\r
399 " </pz:metadata>\r\n" +
\r
400 " <pz:metadata type=\"electronic-text\">\r\n" +
\r
401 " <xsl:value-of select=\"marc:subfield[@code='y']\"/>\r\n" +
\r
402 " </pz:metadata>\r\n" +
\r
403 " <pz:metadata type=\"electronic-note\">\r\n" +
\r
404 " <xsl:value-of select=\"marc:subfield[@code='z']\"/>\r\n" +
\r
405 " </pz:metadata>\r\n" +
\r
406 " </xsl:for-each>\r\n" +
\r
408 " <xsl:for-each select=\"marc:datafield[@tag='773']\">\r\n" +
\r
409 " <pz:metadata type=\"citation\">\r\n" +
\r
410 " <xsl:for-each select=\"*\">\r\n" +
\r
411 " <xsl:value-of select=\"normalize-space(.)\"/>\r\n" +
\r
412 " <xsl:text> </xsl:text>\r\n" +
\r
413 " </xsl:for-each>\r\n" +
\r
414 " </pz:metadata>\r\n" +
\r
415 " <xsl:if test=\"marc:subfield[@code='t']\">\r\n" +
\r
416 " <pz:metadata type=\"journal-title\">\r\n" +
\r
417 " <xsl:value-of select=\"marc:subfield[@code='t']\"/>\r\n" +
\r
418 " </pz:metadata>\r\n" +
\r
419 " </xsl:if>\r\n" +
\r
420 " <xsl:if test=\"marc:subfield[@code='g']\">\r\n" +
\r
421 " <pz:metadata type=\"journal-subpart\">\r\n" +
\r
422 " <xsl:value-of select=\"marc:subfield[@code='g']\"/>\r\n" +
\r
423 " </pz:metadata>\r\n" +
\r
424 " </xsl:if>\r\n" +
\r
425 " </xsl:for-each>\r\n" +
\r
427 " <pz:metadata type=\"medium\">\r\n" +
\r
428 " <xsl:value-of select=\"$medium\"/>\r\n" +
\r
429 " </pz:metadata>\r\n" +
\r
431 " <xsl:for-each select=\"marc:datafield[@tag='900']/marc:subfield[@code='a']\">\r\n" +
\r
432 " <pz:metadata type=\"fulltext\">\r\n" +
\r
433 " <xsl:value-of select=\".\"/>\r\n" +
\r
434 " </pz:metadata>\r\n" +
\r
435 " </xsl:for-each>\r\n" +
\r
437 " <!-- <xsl:if test=\"$fulltext_a\">\r\n" +
\r
438 " <pz:metadata type=\"fulltext\">\r\n" +
\r
439 " <xsl:value-of select=\"$fulltext_a\"/>\r\n" +
\r
440 " </pz:metadata>\r\n" +
\r
441 " </xsl:if> -->\r\n" +
\r
443 " <xsl:for-each select=\"marc:datafield[@tag='900']/marc:subfield[@code='b']\">\r\n" +
\r
444 " <pz:metadata type=\"fulltext\">\r\n" +
\r
445 " <xsl:value-of select=\".\"/>\r\n" +
\r
446 " </pz:metadata>\r\n" +
\r
447 " </xsl:for-each>\r\n" +
\r
449 " <!-- <xsl:if test=\"$fulltext_b\">\r\n" +
\r
450 " <pz:metadata type=\"fulltext\">\r\n" +
\r
451 " <xsl:value-of select=\"$fulltext_b\"/>\r\n" +
\r
452 " </pz:metadata>\r\n" +
\r
453 " </xsl:if> -->\r\n" +
\r
455 " <xsl:for-each select=\"marc:datafield[@tag='907' or @tag='901']\">\r\n" +
\r
456 " <pz:metadata type=\"iii-id\">\r\n" +
\r
457 " <xsl:value-of select=\"marc:subfield[@code='a']\"/>\r\n" +
\r
458 " </pz:metadata>\r\n" +
\r
459 " </xsl:for-each>\r\n" +
\r
461 " <xsl:for-each select=\"marc:datafield[@tag='926']\">\r\n" +
\r
462 " <pz:metadata type=\"holding\">\r\n" +
\r
463 " <xsl:for-each select=\"marc:subfield\">\r\n" +
\r
464 " <xsl:if test=\"position() > 1\">\r\n" +
\r
465 " <xsl:text> </xsl:text>\r\n" +
\r
466 " </xsl:if>\r\n" +
\r
467 " <xsl:value-of select=\".\"/>\r\n" +
\r
468 " </xsl:for-each>\r\n" +
\r
469 " </pz:metadata>\r\n" +
\r
470 " </xsl:for-each>\r\n" +
\r
472 " <xsl:for-each select=\"marc:datafield[@tag='948']\">\r\n" +
\r
473 " <pz:metadata type=\"holding\">\r\n" +
\r
474 " <xsl:for-each select=\"marc:subfield\">\r\n" +
\r
475 " <xsl:if test=\"position() > 1\">\r\n" +
\r
476 " <xsl:text> </xsl:text>\r\n" +
\r
477 " </xsl:if>\r\n" +
\r
478 " <xsl:value-of select=\".\"/>\r\n" +
\r
479 " </xsl:for-each>\r\n" +
\r
480 " </pz:metadata>\r\n" +
\r
481 " </xsl:for-each>\r\n" +
\r
483 " <xsl:for-each select=\"marc:datafield[@tag='991']\">\r\n" +
\r
484 " <pz:metadata type=\"holding\">\r\n" +
\r
485 " <xsl:for-each select=\"marc:subfield\">\r\n" +
\r
486 " <xsl:if test=\"position() > 1\">\r\n" +
\r
487 " <xsl:text> </xsl:text>\r\n" +
\r
488 " </xsl:if>\r\n" +
\r
489 " <xsl:value-of select=\".\"/>\r\n" +
\r
490 " </xsl:for-each>\r\n" +
\r
491 " </pz:metadata>\r\n" +
\r
492 " </xsl:for-each>\r\n" +
\r
494 " <xsl:if test=\"$open_url_resolver\">\r\n" +
\r
495 " <pz:metadata type=\"open-url\">\r\n" +
\r
496 " <xsl:call-template name=\"insert-md-openurl\" />\r\n" +
\r
497 " </pz:metadata>\r\n" +
\r
498 " </xsl:if>\r\n" +
\r
500 " <!--passthrough id data-->\r\n" +
\r
501 " <xsl:for-each select=\"pz:metadata\">\r\n" +
\r
502 " <xsl:copy-of select=\".\"/>\r\n" +
\r
503 " </xsl:for-each>\r\n" +
\r
505 " </pz:record> \r\n" +
\r
506 " </xsl:template>\r\n" +
\r
509 " <xsl:template match=\"text()\"/>\r\n" +
\r
511 "</xsl:stylesheet>";
\r