Merge branch 'master' into paz-927
authorAdam Dickmeiss <adam@indexdata.dk>
Wed, 2 Jul 2014 07:35:40 +0000 (09:35 +0200)
committerAdam Dickmeiss <adam@indexdata.dk>
Wed, 2 Jul 2014 07:35:40 +0000 (09:35 +0200)
130 files changed:
IDMETA
Makefile.am
NEWS
configure.ac
debian/changelog
debian/control
debian/pazpar2-xsl.dirs [new file with mode: 0644]
debian/pazpar2.postinst
debian/pazpar2.postrm
debian/pazpar2.preinst [new file with mode: 0644]
debian/rules
doc/common
doc/pazpar2_conf.xml
doc/pazpar2_protocol.xml
etc/MarcXML2TurboMarc.xsl [deleted file]
etc/cf.xsl [deleted file]
etc/dads-pz2.xsl [deleted file]
etc/danmarc2.xsl [deleted file]
etc/dc.xsl [deleted file]
etc/dkabm.xsl [deleted file]
etc/marc21-ourl.xsl [deleted file]
etc/marc21.xsl [deleted file]
etc/marc22.xsl [deleted file]
etc/oai_dc.xsl [deleted file]
etc/opac.xsl [deleted file]
etc/opac_turbomarc.xsl [deleted file]
etc/pazpar2.cfg.dist
etc/perf_server.cfg
etc/pp2out-to-carrot2.xsl [deleted file]
etc/primo-pz2.xsl [deleted file]
etc/pz2-ourl-base.xsl [deleted file]
etc/pz2-ourl-marc21.xsl [deleted file]
etc/pz2-solr.xsl [deleted file]
etc/server.xml
etc/solr-pz2.xsl [deleted file]
etc/tmarc.xsl [deleted file]
etc/unimarc.xsl [deleted file]
etc/usmarc.xsl [deleted file]
etc/xsl/.gitignore [new file with mode: 0644]
etc/xsl/Makefile.am [new file with mode: 0644]
etc/xsl/MarcXML2TurboMarc.xsl [new file with mode: 0644]
etc/xsl/cf.xsl [new file with mode: 0644]
etc/xsl/cf1.res.xml [new file with mode: 0644]
etc/xsl/cf1.xml [new file with mode: 0644]
etc/xsl/danmarc2.xsl [new file with mode: 0644]
etc/xsl/dc.xsl [new file with mode: 0644]
etc/xsl/dkabm.xsl [new file with mode: 0644]
etc/xsl/marc21-ourl.xsl [new file with mode: 0644]
etc/xsl/marc21.xsl [new file with mode: 0644]
etc/xsl/oai_dc.xsl [new file with mode: 0644]
etc/xsl/opac.xsl [new file with mode: 0644]
etc/xsl/opac_turbomarc.xsl [new file with mode: 0644]
etc/xsl/pp2out-to-carrot2.xsl [new file with mode: 0644]
etc/xsl/primo-pz2.xsl [new file with mode: 0644]
etc/xsl/pz2-ourl-base.xsl [new file with mode: 0644]
etc/xsl/pz2-ourl-marc21.xsl [new file with mode: 0644]
etc/xsl/solr-pz2.xsl [new file with mode: 0644]
etc/xsl/solr-pz21.res.xml [new file with mode: 0644]
etc/xsl/solr-pz21.xml [new file with mode: 0644]
etc/xsl/solr-pz22.res.xml [new file with mode: 0644]
etc/xsl/solr-pz22.xml [new file with mode: 0644]
etc/xsl/test_xsl.sh [new file with mode: 0755]
etc/xsl/tmarc.xsl [new file with mode: 0644]
etc/xsl/tmarc1.res.xml [new file with mode: 0644]
etc/xsl/tmarc1.xml [new file with mode: 0644]
etc/xsl/tmarc2.res.xml [new file with mode: 0644]
etc/xsl/tmarc2.xml [new file with mode: 0644]
etc/xsl/tmarc3.res.xml [new file with mode: 0644]
etc/xsl/tmarc3.xml [new file with mode: 0644]
etc/xsl/tmarc4.res.xml [new file with mode: 0644]
etc/xsl/tmarc4.xml [new file with mode: 0644]
etc/xsl/tmarc5.res.xml [new file with mode: 0644]
etc/xsl/tmarc5.xml [new file with mode: 0644]
etc/xsl/tmarc6.res.xml [new file with mode: 0644]
etc/xsl/tmarc6.xml [new file with mode: 0644]
etc/xsl/tmarc7.res.xml [new file with mode: 0644]
etc/xsl/tmarc7.xml [new file with mode: 0644]
etc/xsl/tmarc8.res.xml [new file with mode: 0644]
etc/xsl/tmarc8.xml [new file with mode: 0644]
etc/xsl/tmarc9.res.xml [new file with mode: 0644]
etc/xsl/tmarc9.xml [new file with mode: 0644]
etc/xsl/unimarc.xsl [new file with mode: 0644]
js/pz2.js
pazpar2.spec
src/client.c
src/connection.c
src/database.c
src/normalize_record.c
src/pazpar2_config.c
src/settings.c
src/settings.h
test/Makefile.am
test/test_facets.urls
test/test_facets_26.res [new file with mode: 0644]
test/test_facets_27.res [new file with mode: 0644]
test/test_facets_settings_1.xml
test/test_facets_settings_2.xml
test/test_limit_limitmap_settings_2.xml
test/test_rank_settings_1.xml
test/test_rank_settings_2.xml
test/test_rank_settings_3.xml
test/test_rank_settings_4.xml
test/test_solr_settings_1.xml
test/test_solr_settings_2.xml
test/test_solr_settings_3.xml
test/test_solr_settings_4.xml
test/test_solr_settings_5.xml
test/test_solr_settings_6.xml
test/test_sort_settings.xml
test/test_termlist_block_settings_2.xml
test/test_tmarc.sh [deleted file]
test/tmarc1.res.xml [deleted file]
test/tmarc1.xml [deleted file]
test/tmarc2.res.xml [deleted file]
test/tmarc2.xml [deleted file]
test/tmarc3.res.xml [deleted file]
test/tmarc3.xml [deleted file]
test/tmarc4.res.xml [deleted file]
test/tmarc4.xml [deleted file]
test/tmarc5.res.xml [deleted file]
test/tmarc5.xml [deleted file]
test/tmarc6.res.xml [deleted file]
test/tmarc6.xml [deleted file]
test/tmarc7.res.xml [deleted file]
test/tmarc7.xml [deleted file]
test/tmarc8.res.xml [deleted file]
test/tmarc8.xml [deleted file]
test/tmarc9.res.xml [deleted file]
test/tmarc9.xml [deleted file]
win/makefile

diff --git a/IDMETA b/IDMETA
index 625c8b5..c6330e9 100644 (file)
--- a/IDMETA
+++ b/IDMETA
@@ -1,4 +1,4 @@
 DEBIAN_DIST="jessie wheezy squeeze"
-UBUNTU_DIST="trusty saucy raring quantal precise oneiric lucid"
+UBUNTU_DIST="trusty saucy raring quantal precise oneiric"
 CENTOS_DIST="centos5 centos6"
-VERSION=1.6.41
+VERSION=1.7.0
index 02c2225..8cf96e1 100644 (file)
@@ -2,7 +2,7 @@
 AUTOMAKE_OPTIONS = foreign
 ACLOCAL_AMFLAGS = -I m4
 
-SUBDIRS = src test js doc
+SUBDIRS = src etc/xsl test js doc
 
 EXTRA_DIST = $(PACKAGE).spec IDMETA README NEWS LICENSE m4/id-config.sh \
        buildconf.sh Doxyfile.in m4/yaz.m4 \
diff --git a/NEWS b/NEWS
index c5b34b1..6d9f270 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,26 @@
+--- 1.7.0 2014/06/27
+
+Separate package: pazpar2-xsl PAZ-932
+
+--- 1.6.44 2014/06/27
+
+Update OPAC stylesheets for availabilityDate PAZ-943
+
+Fix too funny startrecs description
+
+Fix broken ~ match if filter contains = PAZ-941
+
+--- 1.6.43 2014/06/12
+
+Add pz:redis option for ZOOM caching using redis. This is an alternative
+to memcached. Requires YAZ 5.2.0 to work.
+
+--- 1.6.42 2014/05/06
+
+Re-ingest native facets PAZ-934
+
+Fix medium override for solr-pz2.xsl.
+
 --- 1.6.41 2014/04/23
 
 Fix URL with leading http:// not working PAZ-933
index 8d55d69..6fa9844 100644 (file)
@@ -63,6 +63,7 @@ AC_OUTPUT([
        src/Makefile
        test/Makefile
        js/Makefile
+       etc/xsl/Makefile
        doc/Makefile
        doc/local0.ent
        doc/common/Makefile
index c644392..9db1ea6 100644 (file)
@@ -1,3 +1,15 @@
+pazpar2 (1.7.0-2.indexdata) unstable; urgency=medium
+
+  * Fix version passed to dpkg-maintscript-helper rm_conffile
+
+ -- Adam Dickmeiss <adam@indexdata.dk>  Fri, 27 Jun 2014 15:48:37 +0200
+
+pazpar2 (1.7.0-1.indexdata) unstable; urgency=medium
+
+  * Upstream.
+
+ -- Adam Dickmeiss <adam@indexdata.dk>  Fri, 27 Jun 2014 15:02:50 +0200
+
 pazpar2 (1.6.41-1.indexdata) unstable; urgency=medium
 
   * Upstream.
index e4a4199..96daf36 100644 (file)
@@ -11,7 +11,7 @@ Standards-Version: 3.7.2
 
 Package: pazpar2
 Architecture: any
-Depends: ${shlibs:Depends}
+Depends: ${shlibs:Depends}, pazpar2-xsl
 Description: High-performance metaseacher
  Pazpar2 is a high-performance, user interface-independent, data
  model-independent metasearching middleware featuring merging, relevance
@@ -44,6 +44,16 @@ Description: Java Script utilities
  Alias for Apache2 so that this library and other demo portals are
  available.
 
+Package: pazpar2-xsl
+Architecture: all
+Description: XSLTs for converting to pz2 XML
+ Pazpar2 is a high-performance, user interface-independent, data
+ model-independent metasearching middleware featuring merging, relevance
+ ranking, record sorting, and faceted results.
+ .
+ This package includes the standard XSLTs for converting various external
+ XML Formats to pazpar2's internal format (pz2).
+
 Package: pazpar2-doc
 Section: doc
 Architecture: all
diff --git a/debian/pazpar2-xsl.dirs b/debian/pazpar2-xsl.dirs
new file mode 100644 (file)
index 0000000..8973862
--- /dev/null
@@ -0,0 +1 @@
+usr/share/pazpar2/xsl
index 7bf566b..9588514 100644 (file)
@@ -4,6 +4,14 @@ set -e
 if [ "$1" != "configure" ]; then
     exit 0
 fi
+for i in cf.xsl marc21.xsl pp2out-to-carrot2.xsl solr-pz2.xsl \
+ dads-pz2.xsl marc22.xsl primo-pz2.xsl tmarc.xsl danmarc2.xsl \
+ MarcXML2TurboMarc.xsl pz2-ourl-base.xsl unimarc.xsl dc.xsl \
+ oai_dc.xsl pz2-ourl-marc21.xsl usmarc.xsl dkabm.xsl opac_turbomarc.xsl \
+ pz2-solr.xsl marc21-ourl.xsl opac.xsl server-status-nagios.xsl ; do
+        dpkg-maintscript-helper rm_conffile /etc/pazpar2/$i 1.6.99.-1.indexdata -- "$@"
+done
+
 # add default.xml if there are no enabled services
 no_services=true
 for f in /etc/pazpar2/services-enabled/*.xml; do
index 911bac3..65a8a57 100644 (file)
@@ -1,6 +1,14 @@
 #!/bin/sh
 set -e
 
+for i in cf.xsl marc21.xsl pp2out-to-carrot2.xsl solr-pz2.xsl \
+ dads-pz2.xsl marc22.xsl primo-pz2.xsl tmarc.xsl danmarc2.xsl \
+ MarcXML2TurboMarc.xsl pz2-ourl-base.xsl unimarc.xsl dc.xsl \
+ oai_dc.xsl pz2-ourl-marc21.xsl usmarc.xsl dkabm.xsl opac_turbomarc.xsl \
+ pz2-solr.xsl marc21-ourl.xsl opac.xsl server-status-nagios.xsl ; do
+        dpkg-maintscript-helper rm_conffile /etc/pazpar2/$i 1.6.99-1.indexdata -- "$@"
+done
+
 if [ "$1" = "purge" ] ; then
        update-rc.d pazpar2 remove >/dev/null || exit $?
        rm -f /var/log/pazpar2.log
diff --git a/debian/pazpar2.preinst b/debian/pazpar2.preinst
new file mode 100644 (file)
index 0000000..a8876fa
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/sh -e
+
+for i in cf.xsl marc21.xsl pp2out-to-carrot2.xsl solr-pz2.xsl \
+ dads-pz2.xsl marc22.xsl primo-pz2.xsl tmarc.xsl danmarc2.xsl \
+ MarcXML2TurboMarc.xsl pz2-ourl-base.xsl unimarc.xsl dc.xsl \
+ oai_dc.xsl pz2-ourl-marc21.xsl usmarc.xsl dkabm.xsl opac_turbomarc.xsl \
+ pz2-solr.xsl marc21-ourl.xsl opac.xsl server-status-nagios.xsl ; do
+       dpkg-maintscript-helper rm_conffile /etc/pazpar2/$i 1.6.99-1.indexdata -- "$@"
+done
+
index e460465..4546ede 100755 (executable)
@@ -24,7 +24,6 @@ override_dh_auto_install:
        cp etc/services/*.xml debian/pazpar2/etc/pazpar2/services-available
        cp etc/settings/*.xml debian/pazpar2/etc/pazpar2/settings/
        cp -r etc/settings/mkc debian/pazpar2/etc/pazpar2/settings
-       cp etc/*.xsl debian/pazpar2/etc/pazpar2/
 # pazpar2-apache2 package
        cp debian/ap2pazpar2.cfg debian/pazpar2-apache2/etc/pazpar2
 # pazpar2-test1 package
@@ -38,6 +37,8 @@ override_dh_auto_install:
 # pazpar2-js package
        cp debian/ap2pazpar2-js.cfg debian/pazpar2-js/etc/pazpar2
        mv debian/tmp/usr/share/pazpar2/js/pz2.js debian/pazpar2-js/usr/share/pazpar2/js/
+# pazpar2-xsl package
+       cp  etc/xsl/*.xsl debian/pazpar2-xsl/usr/share/pazpar2/xsl
 
 override_dh_installchangelogs:
        dh_installchangelogs NEWS
index b864825..f6a5ec8 160000 (submodule)
@@ -1 +1 @@
-Subproject commit b864825869c7e4c3061952b64afc99a7268be4f8
+Subproject commit f6a5ec8c243e2a6829a2917cb30c849612d6fd01
index c6325f4..4e82022 100644 (file)
     in main thread).
    </para>
   </refsect2>
+  <refsect2 id="config-file">
+   <title>file</title>
+   <para>
+    This configuration takes one attribute <literal>path</literal> which
+    specifies a path to search for local files, such as XSLTs  and settings.
+    The path is a colon separated list of directories. Its default value
+    is "<literal>.</literal>" which is equivalent to the location of the
+    main configuration file (where indeed the file element is given).
+   </para>
+  </refsect2>
   <refsect2 id="config-server">
    <title>server</title>
    <para>
     </varlistentry>
 
     <varlistentry>
+     <term>pz:redis</term>
+     <listitem>
+      <para>
+       If set and non-empty,
+       <ulink url="&url.redis;">redis</ulink> will
+       configured and enabled for the target.
+       The value of this setting is exactly as the redis option for
+       ZOOM C of YAZ.
+      </para>
+      <para>
+       This setting is honored in Pazpar2 1.6.43 or later. Pazpar2 must
+       be using YAZ version 5.2.0 or later.
+      </para>
+     </listitem>
+    </varlistentry>
+
+    <varlistentry>
      <term>pz:nativesyntax</term>
      <listitem>
       <para>
index 4c525fb..9586c3e 100644 (file)
@@ -248,7 +248,7 @@ search.pz?command=settings&session=2044502273&pz:allow[search.com:210/db1]=1
        <para>
        Specifies the first record to retrieve from each target.
        The first record in a result set for a target is numbered 0, next
-       record is numbered 2. By default maxrecs is 0.
+       record is numbered 1. By default startrecs is 0.
        </para>
       </listitem>
      </varlistentry>
diff --git a/etc/MarcXML2TurboMarc.xsl b/etc/MarcXML2TurboMarc.xsl
deleted file mode 100644 (file)
index 566fe03..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    Converts MarcXML to TurboMarc
-    (to benefit from pazpar2's improved tmarc.xsl)
-
-    Also includes a provision to handle PicaMarc where datafield names can
-    contain a @ that is changed to Ä to give valid XML.
-    2010-2011
-    Sven-S. Porst, SUB Göttingen <porst@sub.uni-goettingen.de>
--->
-<xsl:stylesheet
-   version="1.0"
-   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-   xmlns:tmarc="http://www.indexdata.com/turbomarc"
-   xmlns:marc="http://www.loc.gov/MARC21/slim">
-
-<xsl:output indent="yes" method="xml" version="1.0" encoding="UTF-8"/>
-
-<xsl:template match="@*|node()">
-  <xsl:copy>
-    <xsl:apply-templates select="@*|node()"/>
-    </xsl:copy>
-</xsl:template>
-
-
-<xsl:template match="record|marc:record">
-  <xsl:element name="r" namespace="http://www.indexdata.com/turbomarc">
-    <xsl:apply-templates select="@*|node()"/>
-    </xsl:element>
-</xsl:template>
-
-
-<xsl:template match="leader|marc:leader">
-  <xsl:element name="l" namespace="http://www.indexdata.com/turbomarc">
-    <xsl:apply-templates select="@*|node()"/>
-    </xsl:element>
-</xsl:template>
-
-
-<xsl:template match="controlfield|datafield|subfield|marc:controlfield|marc:datafield|marc:subfield">
-  <!--
-      Try to mock Indexdata's specification without regexps:
-      Translate all allowed characters to 'a' and assume field names are
-      shorter than 62 characters.
-      Given the typical 3 digit Marc field numbers this seems
-      safe in the practical cases I have seen.
-
-      http://www.indexdata.com/blog/2010/05/turbomarc-faster-xml-marc-records
-      http://www.indexdata.com/yaz/doc/marc.html
-      -->
-
-  <xsl:variable name="allowedCharacters" select="'0123465789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@'"/>
-  <xsl:variable name="manyAs" select="'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'"/>
-
-  <xsl:choose>
-    <xsl:when test="(name(.)='datafield' or name(.)='controlfield') and
-                   contains($manyAs, translate(@tag, $allowedCharacters, $manyAs))">
-      <xsl:element name="{concat(substring(local-name(),1,1), translate(@tag,'@','Ä'))}"
-                  namespace="http://www.indexdata.com/turbomarc">
-       <xsl:apply-templates select="@*[name(.)!='tag']|node()"/>
-       </xsl:element>
-      </xsl:when>
-
-    <xsl:when test="name(.)='subfield' and
-                   contains($manyAs, translate(@code, $allowedCharacters, $manyAs))">
-      <xsl:element name="{concat(substring(local-name(),1,1), @code)}"
-                  namespace="http://www.indexdata.com/turbomarc">
-       <xsl:apply-templates select="@*[name(.)!='code']|node()"/>
-       </xsl:element>
-      </xsl:when>
-
-    <xsl:otherwise>
-      <xsl:copy>
-       <xsl:apply-templates select="@*|node()"/>
-       </xsl:copy>
-      </xsl:otherwise>
-    </xsl:choose>
-</xsl:template>
-
-
-</xsl:stylesheet>
diff --git a/etc/cf.xsl b/etc/cf.xsl
deleted file mode 100644 (file)
index 7796273..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    This stylesheet expects Connector Frameworks records
--->
-<xsl:stylesheet
-    version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
-    xmlns:dc="http://purl.org/dc/elements/1.1/"
-    xmlns:siebel="http://loc.gov/siebel/elements/1.0/" >
-
- <xsl:output indent="yes"
-        method="xml"
-        version="1.0"
-        encoding="UTF-8"/>
-
-  <xsl:param name="medium" />
-
-  <!--
-    According to cf/builder/templates/parseTask.cff, connectors can
-    also generate a "medium" field, but that is ignored in this
-    stylesheet, the rule below instead using an XSLT parameter.
-    Should the data element be used in preference when it is included?
-  -->
-
-  <xsl:template match="/record">
-    <pz:record>
-      <pz:metadata type="medium">
-        <xsl:choose>
-          <xsl:when test="string-length($medium)">
-            <xsl:value-of select="$medium" />
-          </xsl:when>
-          <xsl:otherwise>
-            <xsl:if test="medium">
-             <xsl:value-of select="medium" />
-            </xsl:if>
-          </xsl:otherwise>
-        </xsl:choose>
-      </pz:metadata>
-      <xsl:apply-templates/>
-    </pz:record>
-  </xsl:template>
-
-  <!--
-      The elements mapped in the following clauses should be kept more
-      or less in sync with those named in builder/templates/search.cft
-      in the "cf" git module.
-  -->
-
-  <xsl:template match="date">
-    <pz:metadata type="publication-date">
-      <xsl:value-of select="."/>
-    </pz:metadata>
-    <pz:metadata type="date">
-      <xsl:value-of select="."/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="url">
-    <pz:metadata type="electronic-url">
-      <xsl:value-of select="."/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="title">
-    <pz:metadata type="title">
-      <xsl:value-of select="."/>
-    </pz:metadata>
-    <pz:metadata type="title-complete">
-      <xsl:value-of select="." />
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="journaltitle">
-    <pz:metadata type="journal-title">
-      <xsl:value-of select="."/>
-    </pz:metadata>
-  </xsl:template>
-
-  <!--
-    According to cf/builder/templates/parseTask.cff, connectors can
-    also generate a "holding" field, but it's not clear how that is
-    different from "item".  Perhaps this "item" rule should also
-    handle "holding" in the same way?
-  -->
-
-  <xsl:template match="item">
-    <pz:metadata type="due" empty="PAZPAR2_NULL_VALUE">
-      <xsl:value-of select="due"/>
-    </pz:metadata>
-    <pz:metadata type="locallocation" empty="PAZPAR2_NULL_VALUE">
-      <xsl:value-of select="location"/>
-    </pz:metadata>
-    <pz:metadata type="callnumber" empty="PAZPAR2_NULL_VALUE">
-      <xsl:value-of select="callno"/>
-    </pz:metadata>
-    <pz:metadata type="available" empty="PAZPAR_NULL_VALUE">
-      <xsl:value-of select="available"/>
-    </pz:metadata>
-    <pz:metadata type="publicnote" empty="PAZPAR2_NULL_VALUE">
-      <xsl:value-of select="publicnote"/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="location">
-    <pz:metadata type="locallocation">
-      <xsl:value-of select="."/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="callno">
-    <pz:metadata type="callnumber">
-      <xsl:value-of select="."/>
-    </pz:metadata>
-  </xsl:template>
-  
-  <!-- no-op template to avoid printing medium out --> 
-  <xsl:template match="medium" />
-
-  <xsl:template match="*" >
-    <pz:metadata type="{local-name()}">
-      <xsl:value-of select="."/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="text()"/>
-
-</xsl:stylesheet>
diff --git a/etc/dads-pz2.xsl b/etc/dads-pz2.xsl
deleted file mode 100644 (file)
index 09286ea..0000000
+++ /dev/null
@@ -1,232 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
-  xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
-  xmlns:zs="http://www.loc.gov/zing/srw/"
-  xmlns:tmarc="http://www.indexdata.com/turbomarc">
-
-  <xsl:output indent="yes" method="xml" version="1.0"
-    encoding="UTF-8" />
-  <xsl:param name="medium"/>
-
-  <!-- Extract metadata from MARC21/USMARC from streamlined marcxml format 
-    http://www.loc.gov/marc/bibliographic/ecbdhome.html -->
-  <xsl:template name="record-hook" />
-
-
-  <xsl:template match="/">
-      <xsl:apply-templates />
-  </xsl:template>
-
-  <xsl:template match="zs:searchRetrieveResponse">
-      <xsl:apply-templates />
-  </xsl:template>
-
-  <xsl:template match="zs:records">
-    <collection>
-      <xsl:apply-templates />
-    </collection>
-  </xsl:template>
-
-  <xsl:template match="zs:record">
-      <xsl:apply-templates />
-  </xsl:template>  
-
-  <xsl:template match="zs:recordData">
-      <xsl:apply-templates />
-  </xsl:template>
-
-  <xsl:template match="doc">
-    <collection>
-      <xsl:apply-templates />
-    </collection>
-  </xsl:template>
-
-  <xsl:template match="art">
-    <xsl:variable name="journal_title" select="journal/title" />
-    <xsl:variable name="journal_issn" select="journal/issn" />
-    <xsl:variable name="date" select="journal/year" />
-    <xsl:variable name="month" select="journal/month" />
-    <xsl:variable name="description" select="abstract/abstract" />
-
-    <xsl:variable name="has_fulltext" select="article/fulltext"/>
-    <xsl:variable name="has_title" select="article/title"/>
-
-    <xsl:variable name="vmedium">
-      <xsl:choose>
-        <xsl:when  test="$has_title and $has_fulltext">
-         <xsl:text>e-article</xsl:text>
-       </xsl:when>
-        <xsl:when  test="$has_title and not($has_fulltext)">
-         <xsl:text>article</xsl:text>
-       </xsl:when>
-        <xsl:otherwise>
-          <xsl:text>other</xsl:text>
-        </xsl:otherwise>
-      </xsl:choose>
-    </xsl:variable>
-    
-    <pz:record>
-
-      <xsl:for-each select="localInfo/systemno"> 
-        <pz:metadata type="id">
-          <xsl:value-of select="."/>
-        </pz:metadata>
-      </xsl:for-each>
-
-      <!-- IDs for url recipe -->
-      <xsl:for-each select="recordID/DOI"> 
-       <pz:metadata type="doi"><xsl:value-of select="."/></pz:metadata>
-      </xsl:for-each>
-      <xsl:for-each select="recordID/artId"> 
-       <pz:metadata type="artid"><xsl:value-of select="."/></pz:metadata>
-      </xsl:for-each>
-      <xsl:for-each select="recordID/accessNr"> 
-       <pz:metadata type="accessnr"><xsl:value-of select="."/></pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="author/name">
-        <pz:metadata type="author">
-          <xsl:value-of select="." />
-        </pz:metadata>
-      </xsl:for-each>
-      
-      <xsl:for-each select="article/title">
-        <pz:metadata type="title">
-          <xsl:value-of select="." />
-        </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="journal/issn">
-        <pz:metadata type="issn">
-          <xsl:value-of select="." />
-        </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="journal/title">
-        <pz:metadata type="journal-title">
-          <xsl:value-of select="." />
-        </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="journal/vol">
-        <pz:metadata type="journal-number">
-          <xsl:value-of select="." />
-        </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="journal/issue">
-        <pz:metadata type="issue-number">
-          <xsl:value-of select="." />
-        </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="journal"> 
-        <pz:metadata type="journal-subpart">
-         <xsl:if test="vol">
-           <xsl:text>Vol. </xsl:text><xsl:value-of select="vol" /><xsl:text>,</xsl:text>
-         </xsl:if>
-          <xsl:if test="issue">
-           <xsl:if test="vol">
-             <xsl:text> no. </xsl:text>
-           </xsl:if>
-           <xsl:if test="not(vol)">
-             <xsl:text>No. </xsl:text>
-           </xsl:if>
-           <xsl:value-of select="issue" />
-         </xsl:if>
-         <xsl:text> (</xsl:text>
-         <xsl:if test="month">
-           <xsl:choose>
-             <xsl:when test="$month='01'">
-               <xsl:text>Jan. </xsl:text>
-             </xsl:when>
-             <xsl:when test="$month='02'">
-               <xsl:text>Feb. </xsl:text>
-             </xsl:when>
-             <xsl:when test="$month='03'">
-               <xsl:text>Mar. </xsl:text>
-             </xsl:when>
-             <xsl:when test="$month='04'">
-               <xsl:text>Apr. </xsl:text>
-             </xsl:when>
-             <xsl:when test="$month='05'">
-               <xsl:text>May </xsl:text>
-             </xsl:when>
-             <xsl:when test="$month='06'">
-               <xsl:text>June </xsl:text>
-             </xsl:when>
-             <xsl:when test="$month='07'">
-               <xsl:text>July </xsl:text>
-             </xsl:when>
-             <xsl:when test="$month='08'">
-               <xsl:text>Aug. </xsl:text>
-             </xsl:when>
-             <xsl:when test="$month='09'">
-               <xsl:text>Sept. </xsl:text>
-             </xsl:when>
-             <xsl:when test="$month='10'">
-               <xsl:text>Oct. </xsl:text>
-             </xsl:when>
-             <xsl:when test="$month='11'">
-               <xsl:text>Nov. </xsl:text>
-             </xsl:when>
-             <xsl:when test="$month='12'">
-               <xsl:text>Dec. </xsl:text>
-             </xsl:when>
-             <xsl:otherwise>
-               <xsl:value-of select="$month"/><xsl:text> </xsl:text>
-             </xsl:otherwise>
-           </xsl:choose>
-         </xsl:if>
-         <xsl:value-of select="year" /><xsl:text>)</xsl:text>
-         <xsl:if test="page"> 
-            <xsl:text>, p. </xsl:text><xsl:value-of select="page" />
-         </xsl:if>
-        </pz:metadata>
-      </xsl:for-each>      
-
-      <pz:metadata type="description">
-       <xsl:value-of select="$description" />
-      </pz:metadata>
-      
-      <xsl:for-each select="ctrlT/term">
-       <pz:metadata type="subject">
-          <xsl:value-of select="." />
-       </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="article/fulltext">
-       <pz:metadata type="fulltext">
-          <xsl:value-of select="." />
-       </pz:metadata>
-      </xsl:for-each>
-
-      <pz:metadata type="medium">
-        <xsl:value-of select="$vmedium" />
-<!--
-        <xsl:if test="string-length($electronic) and $vmedium != 'electronic'">
-          <xsl:text> (electronic)</xsl:text>
-        </xsl:if>
--->
-      </pz:metadata>
-
-      <xsl:for-each select="recordID/DOI"> 
-       <pz:metadata type="url-doi"><xsl:text>http://dx.doi.org/</xsl:text><xsl:value-of select="."/></pz:metadata>
-      </xsl:for-each>
-
-      <!-- passthrough id data -->
-      <xsl:for-each select="pz:metadata">
-        <xsl:copy-of select="." />
-      </xsl:for-each>
-
-      <!-- other stylesheets importing this might want to define this -->
-      <xsl:call-template name="record-hook" />
-       
-    </pz:record>
-
-  </xsl:template>
-
-  <xsl:template match="text()" />
-
-</xsl:stylesheet>
diff --git a/etc/danmarc2.xsl b/etc/danmarc2.xsl
deleted file mode 100644 (file)
index 7e595b1..0000000
+++ /dev/null
@@ -1,261 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet
-    version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
-    xmlns:marc="http://www.loc.gov/MARC21/slim">
-
-
-  <xsl:output indent="yes" method="xml" version="1.0" encoding="UTF-8"/>
-
-<!-- Beginnings of Danmarc2 XSL.
-
-   This is just USMARC with minor tweaks.. Not complete!
--->
-  <xsl:include href="pz2-ourl-marc21.xsl" />
-
-  <xsl:template match="/marc:record">
-    <xsl:variable name="title_medium" select="marc:datafield[@tag='245']/marc:subfield[@code='h']"/>
-    <xsl:variable name="journal_title" select="marc:datafield[@tag='773']/marc:subfield[@code='t']"/>
-    <xsl:variable name="electronic_location_url" select="marc:datafield[@tag='856']/marc:subfield[@code='u']"/>
-    <xsl:variable name="fulltext_a" select="marc:datafield[@tag='900']/marc:subfield[@code='a']"/>
-    <xsl:variable name="fulltext_b" select="marc:datafield[@tag='900']/marc:subfield[@code='b']"/>
-    <xsl:variable name="medium">
-      <xsl:choose>
-       <xsl:when test="$title_medium">
-         <xsl:value-of select="substring-after(substring-before($title_medium,']'),'[')"/>
-       </xsl:when>
-       <xsl:when test="$fulltext_a">
-         <xsl:text>electronic resource</xsl:text>
-       </xsl:when>
-       <xsl:when test="$fulltext_b">
-         <xsl:text>electronic resource</xsl:text>
-       </xsl:when>
-       <xsl:when test="$electronic_location_url">
-         <xsl:text>electronic resource</xsl:text>
-       </xsl:when>
-       <xsl:when test="$journal_title">
-         <xsl:text>article</xsl:text>
-       </xsl:when>
-       <xsl:otherwise>
-         <xsl:text>book</xsl:text>
-       </xsl:otherwise>
-      </xsl:choose>
-    </xsl:variable>
-
-    <pz:record>
-      <xsl:attribute name="mergekey">
-        <xsl:text>title </xsl:text>
-       <xsl:value-of select="marc:datafield[@tag='245']/marc:subfield[@code='a']"/>
-       <xsl:text> author </xsl:text>
-       <xsl:value-of select="marc:datafield[@tag='100']/marc:subfield[@code='a']"/>
-       <xsl:text> medium </xsl:text>
-       <xsl:value-of select="$medium"/>
-      </xsl:attribute>
-
-
-      <xsl:for-each select="marc:datafield[@tag='001']/marc:subfield[@code='a']">
-        <pz:metadata type="id">
-          <xsl:value-of select="."/>
-        </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='010']">
-        <pz:metadata type="lccn">
-         <xsl:value-of select="marc:subfield[@code='a']"/>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='020']">
-        <pz:metadata type="isbn">
-         <xsl:value-of select="marc:subfield[@code='a']"/>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='022']">
-        <pz:metadata type="issn">
-         <xsl:value-of select="marc:subfield[@code='a']"/>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='027']">
-        <pz:metadata type="tech-rep-nr">
-         <xsl:value-of select="marc:subfield[@code='a']"/>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='100']">
-       <pz:metadata type="author">
-         <xsl:value-of select="marc:subfield[@code='a']"/>
-       </pz:metadata>
-       <pz:metadata type="author-title">
-         <xsl:value-of select="marc:subfield[@code='c']"/>
-       </pz:metadata>
-       <pz:metadata type="author-date">
-         <xsl:value-of select="marc:subfield[@code='d']"/>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='110']">
-       <pz:metadata type="corporate-name">
-           <xsl:value-of select="marc:subfield[@code='a']"/>
-       </pz:metadata>
-       <pz:metadata type="corporate-location">
-           <xsl:value-of select="marc:subfield[@code='c']"/>
-       </pz:metadata>
-       <pz:metadata type="corporate-date">
-           <xsl:value-of select="marc:subfield[@code='d']"/>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='111']">
-       <pz:metadata type="meeting-name">
-           <xsl:value-of select="marc:subfield[@code='a']"/>
-       </pz:metadata>
-       <pz:metadata type="meeting-location">
-           <xsl:value-of select="marc:subfield[@code='c']"/>
-       </pz:metadata>
-       <pz:metadata type="meeting-date">
-           <xsl:value-of select="marc:subfield[@code='d']"/>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='260']">
-       <pz:metadata type="date">
-           <xsl:value-of select="marc:subfield[@code='c']"/>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='245']">
-        <pz:metadata type="title">
-          <xsl:value-of select="marc:subfield[@code='a']"/>
-        </pz:metadata>
-        <pz:metadata type="title-remainder">
-          <xsl:value-of select="marc:subfield[@code='b']"/>
-        </pz:metadata>
-        <pz:metadata type="title-responsibility">
-          <xsl:value-of select="marc:subfield[@code='c']"/>
-        </pz:metadata>
-        <pz:metadata type="title-dates">
-          <xsl:value-of select="marc:subfield[@code='f']"/>
-        </pz:metadata>
-        <pz:metadata type="title-medium">
-          <xsl:value-of select="marc:subfield[@code='h']"/>
-        </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='250']">
-       <pz:metadata type="edition">
-           <xsl:value-of select="marc:subfield[@code='a']"/>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='260']">
-        <pz:metadata type="publication-place">
-         <xsl:value-of select="marc:subfield[@code='a']"/>
-       </pz:metadata>
-        <pz:metadata type="publication-name">
-         <xsl:value-of select="marc:subfield[@code='b']"/>
-       </pz:metadata>
-        <pz:metadata type="publication-date">
-         <xsl:value-of select="marc:subfield[@code='c']"/>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='300']">
-       <pz:metadata type="physical-extent">
-         <xsl:value-of select="marc:subfield[@code='a']"/>
-       </pz:metadata>
-       <pz:metadata type="physical-format">
-         <xsl:value-of select="marc:subfield[@code='b']"/>
-       </pz:metadata>
-       <pz:metadata type="physical-dimensions">
-         <xsl:value-of select="marc:subfield[@code='c']"/>
-       </pz:metadata>
-       <pz:metadata type="physical-accomp">
-         <xsl:value-of select="marc:subfield[@code='e']"/>
-       </pz:metadata>
-       <pz:metadata type="physical-unittype">
-         <xsl:value-of select="marc:subfield[@code='f']"/>
-       </pz:metadata>
-       <pz:metadata type="physical-unitsize">
-         <xsl:value-of select="marc:subfield[@code='g']"/>
-       </pz:metadata>
-       <pz:metadata type="physical-specified">
-         <xsl:value-of select="marc:subfield[@code='3']"/>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='440']">
-       <pz:metadata type="series-title">
-         <xsl:value-of select="marc:subfield[@code='a']"/>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag &gt;= 500 and @tag &lt;= 599]
-                           [@tag != '506' and @tag != '530' and
-                           @tag != '540' and @tag != '546'
-                            and @tag != '522']">
-       <pz:metadata type="description">
-            <xsl:value-of select="*/text()"/>
-        </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='650' or @tag='653'
-          or @tag='630' or @tag='666']">
-
-         <xsl:for-each select="marc:subfield">
-               <pz:metadata type="subject">
-                       <xsl:value-of select="."/>
-               </pz:metadata>
-         </xsl:for-each>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='856']">
-       <pz:metadata type="electronic-url">
-         <xsl:value-of select="marc:subfield[@code='u']"/>
-       </pz:metadata>
-       <pz:metadata type="electronic-text">
-         <xsl:value-of select="marc:subfield[@code='y']"/>
-       </pz:metadata>
-       <pz:metadata type="electronic-note">
-         <xsl:value-of select="marc:subfield[@code='z']"/>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='773']">
-       <pz:metadata type="citation">
-         <xsl:for-each select="*">
-           <xsl:value-of select="normalize-space(.)"/>
-           <xsl:text> </xsl:text>
-         </xsl:for-each>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <pz:metadata type="medium">
-       <xsl:value-of select="$medium"/>
-      </pz:metadata>
-
-      <xsl:if test="$fulltext_a">
-       <pz:metadata type="fulltext">
-         <xsl:value-of select="$fulltext_a"/>
-       </pz:metadata>
-      </xsl:if>
-
-      <xsl:if test="$fulltext_b">
-       <pz:metadata type="fulltext">
-         <xsl:value-of select="$fulltext_b"/>
-       </pz:metadata>
-      </xsl:if>
-
-      <xsl:if test="$open_url_resolver">
-        <pz:metadata type="open-url">
-            <xsl:call-template name="insert-md-openurl" />
-        </pz:metadata>
-      </xsl:if>
-
-    </pz:record>
-
-  </xsl:template>
-
-</xsl:stylesheet>
diff --git a/etc/dc.xsl b/etc/dc.xsl
deleted file mode 100644 (file)
index d9ae36d..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    This stylesheet expects oai/dc records
--->
-<xsl:stylesheet
-    version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
-    xmlns:dc="http://purl.org/dc/elements/1.1/"
-    xmlns:dcterms="http://purl.org/dc/terms/">
-
- <xsl:output indent="yes"
-        method="xml"
-        version="1.0"
-        encoding="UTF-8"/>
-
-  <xsl:param name="medium" />
-
-  <xsl:template match="/*">
-    <pz:record>
-
-      <pz:metadata type="id">
-        <xsl:value-of select="dc:identifier"/>
-      </pz:metadata>
-
-      <xsl:for-each select="dc:title">
-        <pz:metadata type="title">
-          <xsl:value-of select="."/>
-        </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="dc:date">
-        <pz:metadata type="date">
-         <xsl:value-of select="."/>
-             </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="dc:subject">
-        <pz:metadata type="subject">
-               <xsl:value-of select="."/>
-             </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="dc:creator">
-             <pz:metadata type="author">
-          <xsl:value-of select="."/>
-             </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="dc:description">
-        <pz:metadata type="description">
-               <xsl:value-of select="."/>
-             </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="dc:identifier">
-        <pz:metadata type="electronic-url">
-               <xsl:value-of select="."/>
-             </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="dc:type">
-        <pz:metadata type="medium">
-               <xsl:value-of select="."/>
-             </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="dcterms:bibliographicCitation">
-        <pz:metadata type="citation">
-          <xsl:value-of select="."/>
-        </pz:metadata>
-      </xsl:for-each>
-
-      <pz:metadata type="medium">
-        <xsl:value-of select="$medium" />
-      </pz:metadata>
-
-    </pz:record>
-  </xsl:template>
-
-  <xsl:template match="text()"/>
-
-</xsl:stylesheet>
diff --git a/etc/dkabm.xsl b/etc/dkabm.xsl
deleted file mode 100644 (file)
index ca135b6..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    This stylesheet expects dkabm collection records as returned
-    from DBC's OpenSearch service.
--->
-<xsl:stylesheet
-    version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
-    xmlns:dc="http://purl.org/dc/elements/1.1/"
-    xmlns:dcterms="http://purl.org/dc/terms/"
-    xmlns:dkabm="http://biblstandard.dk/abm/namespace/dkabm/"
-    xmlns:os="http://oss.dbc.dk/ns/opensearch">
-
- <xsl:output indent="yes"
-        method="xml"
-        version="1.0"
-        encoding="UTF-8"/>
-
-  <xsl:param name="medium" />
-
-  <xsl:template match="/">
-    <pz:cluster>
-      <xsl:apply-templates/>
-    </pz:cluster>
-  </xsl:template>
-
-  <xsl:template match="os:object">
-    <pz:record>
-      <xsl:apply-templates/>
-    </pz:record>
-  </xsl:template>
-
-  <xsl:template match="os:score">
-    <pz:metadata type="score">
-      <xsl:value-of select="."/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="dkabm:record">
-
-      <pz:metadata type="id">
-        <xsl:value-of select="dc:identifier"/>
-      </pz:metadata>
-
-      <xsl:for-each select="dc:title">
-        <pz:metadata type="title">
-          <xsl:value-of select="."/>
-        </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="dc:date">
-        <pz:metadata type="date">
-         <xsl:value-of select="."/>
-             </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="dc:subject">
-        <pz:metadata type="subject">
-               <xsl:value-of select="."/>
-             </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="dc:creator">
-             <pz:metadata type="author">
-          <xsl:value-of select="."/>
-             </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="dc:description">
-        <pz:metadata type="description">
-               <xsl:value-of select="."/>
-             </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="dc:identifier">
-        <pz:metadata type="electronic-url">
-               <xsl:value-of select="."/>
-             </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="dc:type">
-        <pz:metadata type="medium">
-               <xsl:value-of select="."/>
-             </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="dcterms:bibliographicCitation">
-        <pz:metadata type="citation">
-          <xsl:value-of select="."/>
-        </pz:metadata>
-      </xsl:for-each>
-
-      <pz:metadata type="medium">
-        <xsl:value-of select="$medium" />
-      </pz:metadata>
-
-  </xsl:template>
-
-  <xsl:template match="text()"/>
-
-</xsl:stylesheet>
diff --git a/etc/marc21-ourl.xsl b/etc/marc21-ourl.xsl
deleted file mode 100644 (file)
index 804c153..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet
-    version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
-    xmlns:marc="http://www.loc.gov/MARC21/slim">
-
-  
-  <xsl:import href="marc21.xsl" />
-  <xsl:output indent="yes" method="xml" version="1.0" encoding="UTF-8"/>
-
-  <xsl:include href="pz2-ourl-marc21.xsl" />
-
-  <xsl:template name="record-hook">
-   Our hook
-      <xsl:if test="$open_url_resolver">
-        <pz:metadata type="open-url">
-            <xsl:call-template name="insert-md-openurl" />
-        </pz:metadata>
-      </xsl:if>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/etc/marc21.xsl b/etc/marc21.xsl
deleted file mode 100644 (file)
index e7bee0c..0000000
+++ /dev/null
@@ -1,467 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet
-    version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
-    xmlns:marc="http://www.loc.gov/MARC21/slim">
-  
-  <xsl:output indent="yes" method="xml" version="1.0" encoding="UTF-8"/>
-
-<!-- Extract metadata from MARC21/USMARC 
-      http://www.loc.gov/marc/bibliographic/ecbdhome.html
--->  
-  <xsl:template name="record-hook"/>
-
-  <xsl:template match="/">
-    <xsl:apply-templates/>
-  </xsl:template>
-
-  <xsl:template match="marc:collection">
-    <pz:collection>
-        <xsl:apply-templates/>
-    </pz:collection>
-  </xsl:template>
-
-  <xsl:template match="marc:record">
-    <xsl:variable name="title_medium" select="marc:datafield[@tag='245']/marc:subfield[@code='h']"/>
-    <xsl:variable name="journal_title" select="marc:datafield[@tag='773']/marc:subfield[@code='t']"/>
-    <xsl:variable name="electronic_location_url" select="marc:datafield[@tag='856']/marc:subfield[@code='u']"/>
-    <xsl:variable name="fulltext_a" select="marc:datafield[@tag='900']/marc:subfield[@code='a']"/>
-    <xsl:variable name="fulltext_b" select="marc:datafield[@tag='900']/marc:subfield[@code='b']"/>
-    <xsl:variable name="medium">
-      <xsl:choose>
-       <xsl:when test="$title_medium">
-         <xsl:value-of select="translate($title_medium, ' []/', '')"/>
-       </xsl:when>
-       <xsl:when test="$fulltext_a">
-         <xsl:text>electronic resource</xsl:text>
-       </xsl:when>
-       <xsl:when test="$fulltext_b">
-         <xsl:text>electronic resource</xsl:text>
-       </xsl:when>
-       <xsl:when test="$journal_title">
-         <xsl:text>article</xsl:text>
-       </xsl:when>
-       <xsl:otherwise>
-         <xsl:text>book</xsl:text>
-       </xsl:otherwise>
-      </xsl:choose>
-    </xsl:variable>
-
-    <xsl:variable name="has_fulltext">
-      <xsl:choose>
-        <xsl:when test="marc:datafield[@tag='856']/marc:subfield[@code='q']">
-          <xsl:text>yes</xsl:text>
-        </xsl:when>
-        <xsl:when test="marc:datafield[@tag='856']/marc:subfield[@code='i']='TEXT*'">
-          <xsl:text>yes</xsl:text>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:text>no</xsl:text>
-        </xsl:otherwise>
-      </xsl:choose>
-    </xsl:variable>
-
-    <xsl:variable name="oclc_number">
-      <xsl:variable name="c001" select='marc:controlfield[@tag="001"]' />
-      <xsl:choose>
-        <xsl:when test='contains(marc:controlfield[@tag="001"],"ocn") or
-                        contains(marc:controlfield[@tag="001"],"ocm") or
-                        contains(marc:controlfield[@tag="001"],"OCoLC")'>
-            <xsl:value-of select="marc:controlfield[@tag='001']"/>
-        </xsl:when>
-        <xsl:when test='contains(marc:datafield[@tag="035"]/marc:subfield[@code="a"],"ocn") or
-                        contains(marc:datafield[@tag="035"]/marc:subfield[@code="a"],"ocm") or
-                        contains(marc:datafield[@tag="035"]/marc:subfield[@code="a"],"OCoLC") '>
-         <xsl:value-of select="marc:datafield[@tag='035']/marc:subfield[@code='a']"/>
-        </xsl:when>
-      </xsl:choose>
-    </xsl:variable>
-
-    <xsl:variable name="date_008">
-      <xsl:choose>
-        <xsl:when test="contains('cestpudikmr', substring(marc:controlfield[@tag='008'], 7, 1))">
-          <xsl:value-of select="substring(marc:controlfield[@tag='008'], 8, 4)" />
-        </xsl:when>
-      </xsl:choose>
-    </xsl:variable>
-
-    <xsl:variable name="date_end_008">
-      <xsl:choose>
-        <xsl:when test="contains('dikmr', substring(marc:controlfield[@tag='008'], 7, 1))">
-          <xsl:value-of select="substring(marc:controlfield[@tag='008'], 12, 4)" />
-        </xsl:when>
-      </xsl:choose>
-    </xsl:variable>
-
-    <pz:record>
-      <xsl:for-each select="marc:controlfield[@tag='001']">
-        <pz:metadata type="id">
-          <xsl:value-of select="."/>
-        </pz:metadata>
-      </xsl:for-each>
-
-      <pz:metadata type="oclc-number">
-        <xsl:value-of select="$oclc_number" />
-      </pz:metadata>
-
-      <xsl:for-each select="marc:datafield[@tag='010']">
-        <pz:metadata type="lccn">
-         <xsl:value-of select="marc:subfield[@code='a']"/>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='020']">
-        <pz:metadata type="isbn">
-         <xsl:value-of select="marc:subfield[@code='a']"/>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='022']">
-        <pz:metadata type="issn">
-         <xsl:value-of select="marc:subfield[@code='a']"/>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='027']">
-        <pz:metadata type="tech-rep-nr">
-         <xsl:value-of select="marc:subfield[@code='a']"/>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='035']">
-        <pz:metadata type="system-control-nr">
-          <xsl:choose>
-            <xsl:when test="marc:subfield[@code='a']">
-              <xsl:value-of select="marc:subfield[@code='a']"/>
-            </xsl:when>
-            <xsl:otherwise>
-              <xsl:value-of select="marc:subfield[@code='b']"/>
-            </xsl:otherwise>
-          </xsl:choose>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='100']">
-       <pz:metadata type="author">
-         <xsl:value-of select="marc:subfield[@code='a']"/>
-       </pz:metadata>
-       <pz:metadata type="author-title">
-         <xsl:value-of select="marc:subfield[@code='c']"/>
-       </pz:metadata>
-       <pz:metadata type="author-date">
-         <xsl:value-of select="marc:subfield[@code='d']"/>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='110']">
-       <pz:metadata type="corporate-name">
-           <xsl:value-of select="marc:subfield[@code='a']"/>
-       </pz:metadata>
-       <pz:metadata type="corporate-location">
-           <xsl:value-of select="marc:subfield[@code='c']"/>
-       </pz:metadata>
-       <pz:metadata type="corporate-date">
-           <xsl:value-of select="marc:subfield[@code='d']"/>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='111']">
-       <pz:metadata type="meeting-name">
-           <xsl:value-of select="marc:subfield[@code='a']"/>
-       </pz:metadata>
-       <pz:metadata type="meeting-location">
-           <xsl:value-of select="marc:subfield[@code='c']"/>
-       </pz:metadata>
-       <pz:metadata type="meeting-date">
-           <xsl:value-of select="marc:subfield[@code='d']"/>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='130']">
-        <pz:metadata type="title-uniform">
-          <xsl:value-of select="marc:subfield[@code='a']" />
-        </pz:metadata>
-        <pz:metadata type="title-uniform-media">
-          <xsl:value-of select="marc:subfield[@code='m']" />
-        </pz:metadata>
-        <pz:metadata type="title-uniform-parts">
-          <xsl:value-of select="marc:subfield[@code='n']" />
-        </pz:metadata>
-        <pz:metadata type="title-uniform-partname">
-          <xsl:value-of select="marc:subfield[@code='p']" />
-        </pz:metadata>
-        <pz:metadata type="title-uniform-key">
-          <xsl:value-of select="marc:subfield[@code='r']" />
-        </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='260']">
-        <pz:metadata type="date">
-          <xsl:value-of select="translate(marc:subfield[@code='c'], 'cp[].', '')" />
-        </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:if test="$date_008 and not(marc:datafield[@tag='260'])">
-        <pz:metadata type="date">
-          <xsl:choose>
-            <xsl:when test="$date_end_008">
-              <xsl:value-of select="concat($date_008,'-',$date_end_008)" />
-            </xsl:when>
-            <xsl:otherwise> 
-              <xsl:value-of select="$date_008" />
-            </xsl:otherwise>
-          </xsl:choose>
-        </pz:metadata>
-      </xsl:if>
-
-      <xsl:for-each select="marc:datafield[@tag='245']">
-        <pz:metadata type="title">
-          <xsl:value-of select="marc:subfield[@code='a']"/>
-        </pz:metadata>
-        <pz:metadata type="title-remainder">
-          <xsl:value-of select="marc:subfield[@code='b']"/>
-        </pz:metadata>
-        <pz:metadata type="title-responsibility">
-          <xsl:value-of select="marc:subfield[@code='c']"/>
-        </pz:metadata>
-        <pz:metadata type="title-dates">
-          <xsl:value-of select="marc:subfield[@code='f']"/>
-        </pz:metadata>
-        <pz:metadata type="title-medium">
-          <xsl:value-of select="marc:subfield[@code='h']"/>
-        </pz:metadata>
-        <pz:metadata type="title-number-section">
-          <xsl:value-of select="marc:subfield[@code='n']"/>
-        </pz:metadata>
-        <pz:metadata type="title-complete">
-          <xsl:value-of select="marc:subfield[@code='a']" />
-          <xsl:if test="marc:subfield[@code='b']" ><xsl:value-of select="concat(' ', marc:subfield[@code='b'])" /></xsl:if>
-        </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='250']">
-       <pz:metadata type="edition">
-           <xsl:value-of select="marc:subfield[@code='a']"/>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='260']">
-        <pz:metadata type="publication-place">
-         <xsl:value-of select="marc:subfield[@code='a']"/>
-       </pz:metadata>
-        <pz:metadata type="publication-name">
-         <xsl:value-of select="marc:subfield[@code='b']"/>
-       </pz:metadata>
-        <pz:metadata type="publication-date">
-         <xsl:value-of select="marc:subfield[@code='c']"/>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='300']">
-       <pz:metadata type="physical-extent">
-         <xsl:value-of select="marc:subfield[@code='a']"/>
-       </pz:metadata>
-       <pz:metadata type="physical-format">
-         <xsl:value-of select="marc:subfield[@code='b']"/>
-       </pz:metadata>
-       <pz:metadata type="physical-dimensions">
-         <xsl:value-of select="marc:subfield[@code='c']"/>
-       </pz:metadata>
-       <pz:metadata type="physical-accomp">
-         <xsl:value-of select="marc:subfield[@code='e']"/>
-       </pz:metadata>
-       <pz:metadata type="physical-unittype">
-         <xsl:value-of select="marc:subfield[@code='f']"/>
-       </pz:metadata>
-       <pz:metadata type="physical-unitsize">
-         <xsl:value-of select="marc:subfield[@code='g']"/>
-       </pz:metadata>
-       <pz:metadata type="physical-specified">
-         <xsl:value-of select="marc:subfield[@code='3']"/>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='440']">
-       <pz:metadata type="series-title">
-         <xsl:value-of select="marc:subfield[@code='a']"/>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag = '500' or @tag = '505' or
-               @tag = '518' or @tag = '520' or @tag = '522']">
-       <pz:metadata type="description">
-            <xsl:value-of select="*/text()"/>
-        </pz:metadata>
-      </xsl:for-each>
-
-       <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']">
-               <pz:metadata type="subject">
-                       <xsl:value-of select="marc:subfield[@code='a']" />
-               </pz:metadata>
-               <pz:metadata type="subject-long">
-                       <xsl:for-each select="node()/text()">
-                               <xsl:if test="position() > 1">
-                                       <xsl:text>, </xsl:text>
-                               </xsl:if>
-                               <xsl:variable name='value'>
-                                       <xsl:value-of select='normalize-space(.)' />
-                               </xsl:variable>
-                               <xsl:choose>
-                                       <xsl:when test="substring($value,string-length($value)) = ','">
-                                               <xsl:value-of select="substring($value,1,string-length($value)-1)" />
-                                       </xsl:when>
-                                       <xsl:otherwise>
-                                               <xsl:value-of select="$value" />
-                                       </xsl:otherwise>
-                               </xsl:choose>
-                       </xsl:for-each>
-               </pz:metadata>
-       </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='856']">
-       <pz:metadata type="electronic-url">
-         <xsl:value-of select="marc:subfield[@code='u']"/>
-       </pz:metadata>
-       <pz:metadata type="electronic-text">
-         <xsl:value-of select="marc:subfield[@code='y' or @code='3' or @code='a']"/>
-       </pz:metadata>
-       <pz:metadata type="electronic-note">
-         <xsl:value-of select="marc:subfield[@code='z']"/>
-       </pz:metadata>
-       <pz:metadata type="electronic-format-instruction">
-         <xsl:value-of select="marc:subfield[@code='i']"/>
-       </pz:metadata>
-       <pz:metadata type="electronic-format-type">
-         <xsl:value-of select="marc:subfield[@code='q']"/>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='773']">
-       <pz:metadata type="citation">
-             <xsl:for-each select="*">
-               <xsl:value-of select="normalize-space(.)"/>
-               <xsl:text> </xsl:text>
-         </xsl:for-each>
-        </pz:metadata>
-        <xsl:if test="marc:subfield[@code='t']">
-         <pz:metadata type="journal-title">
-               <xsl:value-of select="marc:subfield[@code='t']"/>
-          </pz:metadata>          
-        </xsl:if>
-        <xsl:if test="marc:subfield[@code='g']">
-         <pz:metadata type="journal-subpart">
-               <xsl:value-of select="marc:subfield[@code='g']"/>
-          </pz:metadata>          
-        </xsl:if>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='852']">
-        <xsl:if test="marc:subfield[@code='y']">
-         <pz:metadata type="publicnote">
-           <xsl:value-of select="marc:subfield[@code='y']"/>
-         </pz:metadata>
-       </xsl:if>
-       <xsl:if test="marc:subfield[@code='h']">
-         <pz:metadata type="callnumber">
-           <xsl:value-of select="marc:subfield[@code='h']"/>
-         </pz:metadata>
-       </xsl:if>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='900']/marc:subfield[@code='a']">
-        <pz:metadata type="fulltext">
-          <xsl:value-of select="."/>
-        </pz:metadata>
-      </xsl:for-each>
-
-      <pz:metadata type="medium">
-        <xsl:value-of select="$medium"/>
-      </pz:metadata>
-
-      <pz:metadata type="has-fulltext">
-        <xsl:value-of select="$has_fulltext"/> 
-      </pz:metadata>
-
-      <xsl:for-each select="marc:datafield[@tag='900']/marc:subfield[@code='b']">
-        <pz:metadata type="fulltext">
-          <xsl:value-of select="."/>
-        </pz:metadata>
-      </xsl:for-each>
-
-      <!-- <xsl:if test="$fulltext_b">
-       <pz:metadata type="fulltext">
-         <xsl:value-of select="$fulltext_b"/>
-       </pz:metadata>
-      </xsl:if> -->
-
-      <xsl:for-each select="marc:datafield[@tag='907' or @tag='901']">
-        <pz:metadata type="iii-id">
-         <xsl:value-of select="marc:subfield[@code='a']"/>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='926']">
-        <pz:metadata type="holding">
-         <xsl:for-each select="marc:subfield">
-           <xsl:if test="position() > 1">
-             <xsl:text> </xsl:text>
-           </xsl:if>
-           <xsl:value-of select="."/>
-         </xsl:for-each>
-        </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='948']">
-        <pz:metadata type="holding">
-         <xsl:for-each select="marc:subfield">
-           <xsl:if test="position() > 1">
-             <xsl:text> </xsl:text>
-           </xsl:if>
-           <xsl:value-of select="."/>
-         </xsl:for-each>
-        </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='991']">
-        <pz:metadata type="holding">
-         <xsl:for-each select="marc:subfield">
-           <xsl:if test="position() > 1">
-             <xsl:text> </xsl:text>
-           </xsl:if>
-           <xsl:value-of select="."/>
-         </xsl:for-each>
-        </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='999']">
-        <pz:metadata type="localid">
-          <xsl:choose>
-            <xsl:when test="marc:subfield[@code='a']">
-              <xsl:value-of select="marc:subfield[@code='a']"/>
-            </xsl:when>
-            <xsl:when test="marc:subfield[@code='c']">
-              <xsl:value-of select="marc:subfield[@code='c']"/>
-            </xsl:when> 
-            <xsl:otherwise>
-              <xsl:value-of select="marc:subfield[@code='d']"/>
-            </xsl:otherwise>
-          </xsl:choose>
-        </pz:metadata>
-      </xsl:for-each>
-
-      <!-- passthrough id data -->
-      <xsl:for-each select="pz:metadata">
-          <xsl:copy-of select="."/>
-      </xsl:for-each>
-
-      <!-- other stylesheets importing this might want to define this -->
-      <xsl:call-template name="record-hook"/>
-
-    </pz:record>    
-  </xsl:template>
-  
-  <xsl:template match="text()"/>
-
-</xsl:stylesheet>
diff --git a/etc/marc22.xsl b/etc/marc22.xsl
deleted file mode 100644 (file)
index 02e34e0..0000000
+++ /dev/null
@@ -1,306 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet
-    version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
-    xmlns:marc="http://www.loc.gov/MARC21/slim">
-  
-  <xsl:output indent="yes" method="xml" version="1.0" encoding="UTF-8"/>
-
-<!-- Extract metadata from MARC21/USMARC 
-      http://www.loc.gov/marc/bibliographic/ecbdhome.html
--->  
-  <xsl:template name="record-hook"/>
-
-  <xsl:template match="/">
-    <xsl:apply-templates/>
-  </xsl:template>
-
-  <xsl:template match="marc:record">
-    <xsl:variable name="title_medium" select="marc:datafield[@tag='245']/marc:subfield[@code='h']"/>
-    <xsl:variable name="journal_title" select="marc:datafield[@tag='773']/marc:subfield[@code='t']"/>
-    <xsl:variable name="electronic_location_url" select="marc:datafield[@tag='856']/marc:subfield[@code='u']"/>
-    <xsl:variable name="fulltext_a" select="marc:datafield[@tag='900']/marc:subfield[@code='a']"/>
-    <xsl:variable name="fulltext_b" select="marc:datafield[@tag='900']/marc:subfield[@code='b']"/>
-    <xsl:variable name="medium">
-      <xsl:choose>
-       <xsl:when test="$title_medium">
-         <xsl:value-of select="substring-after(substring-before($title_medium,']'),'[')"/>
-       </xsl:when>
-       <xsl:when test="$fulltext_a">
-         <xsl:text>electronic resource</xsl:text>
-       </xsl:when>
-       <xsl:when test="$fulltext_b">
-         <xsl:text>electronic resource</xsl:text>
-       </xsl:when>
-       <xsl:when test="$journal_title">
-         <xsl:text>article</xsl:text>
-       </xsl:when>
-       <xsl:otherwise>
-         <xsl:text>book</xsl:text>
-       </xsl:otherwise>
-      </xsl:choose>
-    </xsl:variable>
-
-    <pz:record>
-
-      <pz:metadata type="medium">
-       <xsl:value-of select="$medium"/>
-      </pz:metadata>
-
-      <xsl:apply-templates/>
-
-      <!-- other stylesheets importing this might want to define this -->
-      <xsl:call-template name="record-hook"/>
-
-    </pz:record>    
-  </xsl:template>
-
-  <xsl:template match="marc:controlfield[@tag='001']">
-    <pz:metadata type="id">
-      <xsl:value-of select="."/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="marc:datafield[@tag='010']">
-    <pz:metadata type="lccn">
-      <xsl:value-of select="marc:subfield[@code='a']"/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="marc:datafield[@tag='020']">
-    <pz:metadata type="isbn">
-      <xsl:value-of select="marc:subfield[@code='a']"/>
-    </pz:metadata>
-  </xsl:template>
-  
-  <!-- does ANYONE need this?
-  <xsl:template match="marc:datafield[@tag='027']">
-    <pz:metadata type="tech-rep-nr">
-      <xsl:value-of select="marc:subfield[@code='a']"/>
-    </pz:metadata>
-  </xsl:template>
-  -->
-  
-  <xsl:template match="marc:datafield[@tag='035']">
-    <pz:metadata type="system-control-nr">
-      <xsl:value-of select="marc:subfield[@code='a']"/>
-    </pz:metadata>
-  </xsl:template>
-  
-  <xsl:template match="marc:datafield[@tag='100' or @tag='700']">
-    <pz:metadata type="author">
-      <xsl:value-of select="marc:subfield[@code='a']"/>
-    </pz:metadata>
-    <pz:metadata type="author-title">
-      <xsl:value-of select="marc:subfield[@code='c']"/>
-    </pz:metadata>
-    <pz:metadata type="author-date">
-      <xsl:value-of select="marc:subfield[@code='d']"/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="marc:datafield[@tag='110']">
-    <pz:metadata type="corporate-name">
-      <xsl:value-of select="marc:subfield[@code='a']"/>
-    </pz:metadata>
-    <pz:metadata type="corporate-location">
-      <xsl:value-of select="marc:subfield[@code='c']"/>
-    </pz:metadata>
-    <pz:metadata type="corporate-date">
-      <xsl:value-of select="marc:subfield[@code='d']"/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="marc:datafield[@tag='111']">
-    <pz:metadata type="meeting-name">
-      <xsl:value-of select="marc:subfield[@code='a']"/>
-    </pz:metadata>
-    <pz:metadata type="meeting-location">
-      <xsl:value-of select="marc:subfield[@code='c']"/>
-    </pz:metadata>
-    <pz:metadata type="meeting-date">
-      <xsl:value-of select="marc:subfield[@code='d']"/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="marc:datafield[@tag='245']">
-    <pz:metadata type="title">
-      <xsl:value-of select="marc:subfield[@code='a']"/>
-    </pz:metadata>
-    <pz:metadata type="title-remainder">
-      <xsl:value-of select="marc:subfield[@code='b']"/>
-    </pz:metadata>
-    <pz:metadata type="title-responsibility">
-      <xsl:value-of select="marc:subfield[@code='c']"/>
-    </pz:metadata>
-    <pz:metadata type="title-dates">
-      <xsl:value-of select="marc:subfield[@code='f']"/>
-    </pz:metadata>
-    <pz:metadata type="title-medium">
-      <xsl:value-of select="marc:subfield[@code='h']"/>
-    </pz:metadata>
-    <pz:metadata type="title-number-section">
-      <xsl:value-of select="marc:subfield[@code='n']"/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="marc:datafield[@tag='250']">
-    <pz:metadata type="edition">
-       <xsl:value-of select="marc:subfield[@code='a']"/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="marc:datafield[@tag='260']">
-    <pz:metadata type="publication-place">
-      <xsl:value-of select="marc:subfield[@code='a']"/>
-    </pz:metadata>
-    <pz:metadata type="publication-name">
-      <xsl:value-of select="marc:subfield[@code='b']"/>
-    </pz:metadata>
-    <pz:metadata type="publication-date">
-      <xsl:value-of select="marc:subfield[@code='c']"/>
-    </pz:metadata>
-    <pz:metadata type="date">
-      <xsl:value-of select="marc:subfield[@code='c']"/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="marc:datafield[@tag='300']">
-    <pz:metadata type="physical-extent">
-      <xsl:value-of select="marc:subfield[@code='a']"/>
-    </pz:metadata>
-    <pz:metadata type="physical-format">
-      <xsl:value-of select="marc:subfield[@code='b']"/>
-    </pz:metadata>
-    <pz:metadata type="physical-dimensions">
-      <xsl:value-of select="marc:subfield[@code='c']"/>
-    </pz:metadata>
-    <pz:metadata type="physical-accomp">
-      <xsl:value-of select="marc:subfield[@code='e']"/>
-    </pz:metadata>
-    <pz:metadata type="physical-unittype">
-      <xsl:value-of select="marc:subfield[@code='f']"/>
-    </pz:metadata>
-    <pz:metadata type="physical-unitsize">
-      <xsl:value-of select="marc:subfield[@code='g']"/>
-    </pz:metadata>
-    <pz:metadata type="physical-specified">
-      <xsl:value-of select="marc:subfield[@code='3']"/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="marc:datafield[@tag='440']">
-    <pz:metadata type="series-title">
-      <xsl:value-of select="marc:subfield[@code='a']"/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="marc:datafield[@tag = '500' or @tag = '505' or
-           @tag = '518' or @tag = '520' or @tag = '522']">
-    <pz:metadata type="description">
-       <xsl:value-of select="*/text()"/>
-    </pz:metadata>
-  </xsl:template>
-  
-  <xsl:template match="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']">
-    <pz:metadata type="subject">
-      <xsl:value-of select="marc:subfield[@code='a']"/>
-    </pz:metadata>
-    <pz:metadata type="subject-long">
-      <xsl:for-each select="marc:subfield">
-       <xsl:if test="position() > 1">
-         <xsl:text>, </xsl:text>
-       </xsl:if>
-       <xsl:value-of select="."/>
-      </xsl:for-each>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="marc:datafield[@tag='856']">
-    <pz:metadata type="electronic-url">
-      <xsl:value-of select="marc:subfield[@code='u']"/>
-    </pz:metadata>
-    <pz:metadata type="electronic-text">
-      <xsl:value-of select="marc:subfield[@code='y' or @code='3']"/>
-    </pz:metadata>
-    <pz:metadata type="electronic-note">
-      <xsl:value-of select="marc:subfield[@code='z']"/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="marc:datafield[@tag='773']">
-    <pz:metadata type="citation">
-      <xsl:for-each select="*">
-       <xsl:value-of select="normalize-space(.)"/>
-       <xsl:text> </xsl:text>
-      </xsl:for-each>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="marc:datafield[@tag='852']">
-    <xsl:if test="marc:subfield[@code='y']">
-      <pz:metadata type="publicnote">
-       <xsl:value-of select="marc:subfield[@code='y']"/>
-      </pz:metadata>
-    </xsl:if>
-    <xsl:if test="marc:subfield[@code='h']">
-      <pz:metadata type="callnumber">
-       <xsl:value-of select="marc:subfield[@code='h']"/>
-      </pz:metadata>
-    </xsl:if>
-  </xsl:template>
-
-  <xsl:template match="marc:datafield[@tag='900']/marc:subfield[@code='a']">
-    <pz:metadata type="fulltext">
-      <xsl:value-of select="."/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="marc:datafield[@tag='907' or @tag='901']">
-    <pz:metadata type="iii-id">
-      <xsl:value-of select="marc:subfield[@code='a']"/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="marc:datafield[@tag='926']">
-    <pz:metadata type="holding">
-      <xsl:for-each select="marc:subfield">
-       <xsl:if test="position() > 1">
-         <xsl:text> </xsl:text>
-       </xsl:if>
-       <xsl:value-of select="."/>
-      </xsl:for-each>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="marc:datafield[@tag='948']">
-    <pz:metadata type="holding">
-      <xsl:for-each select="marc:subfield">
-       <xsl:if test="position() > 1">
-         <xsl:text> </xsl:text>
-       </xsl:if>
-       <xsl:value-of select="."/>
-      </xsl:for-each>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="marc:datafield[@tag='991']">
-    <pz:metadata type="holding">
-      <xsl:for-each select="marc:subfield">
-       <xsl:if test="position() > 1">
-         <xsl:text> </xsl:text>
-       </xsl:if>
-       <xsl:value-of select="."/>
-      </xsl:for-each>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="pz:metadata">
-      <xsl:copy-of select="."/>
-  </xsl:template>
-
-      <!-- other stylesheets importing this might want to define this -->
-  <xsl:template match="text()"/>
-
-</xsl:stylesheet>
diff --git a/etc/oai_dc.xsl b/etc/oai_dc.xsl
deleted file mode 100644 (file)
index 36757cc..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    This stylesheet expects oai/dc records
--->
-<xsl:stylesheet
-    version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
-    xmlns:oai="http://www.openarchives.org/OAI/2.0/"
-    xmlns:dc="http://purl.org/dc/elements/1.1/"
-    xmlns:dcterms="http://purl.org/dc/terms/">
-
- <xsl:output indent="yes"
-        method="xml"
-        version="1.0"
-        encoding="UTF-8"/>
-
-
-
-  <xsl:template match="/oai:record/oai:metadata/*">
-    <pz:record>
-
-      <pz:metadata type="id">
-        <xsl:value-of select="/oai:record/oai:header/oai:identifier"/>
-      </pz:metadata>
-
-      <xsl:for-each select="dc:title">
-        <pz:metadata type="title">
-          <xsl:value-of select="."/>
-        </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="dc:date">
-        <pz:metadata type="date">
-         <xsl:value-of select="."/>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="dc:subject">
-        <pz:metadata type="subject">
-         <xsl:value-of select="."/>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="dc:creator">
-       <pz:metadata type="author">
-          <xsl:value-of select="."/>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="dc:description">
-        <pz:metadata type="description">
-         <xsl:value-of select="."/>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="dc:identifier">
-        <pz:metadata type="electronic-url">
-         <xsl:value-of select="."/>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="dc:type">
-        <pz:metadata type="medium">
-             <xsl:value-of select="."/>
-           </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="dcterms:bibliographicCitation">
-        <pz:metadata type="citation">
-          <xsl:value-of select="."/>
-        </pz:metadata>
-      </xsl:for-each>
-
-    </pz:record>
-  </xsl:template>
-
-
-  <xsl:template match="text()"/>
-
-</xsl:stylesheet>
diff --git a/etc/opac.xsl b/etc/opac.xsl
deleted file mode 100644 (file)
index dd5c789..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet
-    version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
-    xmlns:marc="http://www.loc.gov/MARC21/slim">
-  
-  <xsl:import href="marc21.xsl"/>
-
-  <xsl:output indent="yes" method="xml" version="1.0" encoding="UTF-8"/>
-
-<!-- Extract metadata from OPAC records with embedded MAR records
-      http://www.loc.gov/marc/bibliographic/ecbdhome.html
--->  
-
-  <xsl:template name="record-hook">
-    <xsl:for-each select="/opacRecord/holdings/holding">
-      <pz:metadata type="locallocation" empty="PAZPAR2_NULL_VALUE">
-       <xsl:value-of select="localLocation"/>
-      </pz:metadata>
-      <pz:metadata type="callnumber" empty="PAZPAR2_NULL_VALUE">
-       <xsl:value-of select="callNumber"/>
-      </pz:metadata>
-      <pz:metadata type="publicnote" empty="PAZPAR2_NULL_VALUE">
-       <xsl:value-of select="publicNote"/>
-      </pz:metadata>
-      <pz:metadata type="available" empty="PAZPAR2_NULL_VALUE">
-        <xsl:choose>
-          <xsl:when test="circulations/circulation/availableNow/@value = '1'">
-             Available
-          </xsl:when>
-          <xsl:when test="circulations/circulation/availableNow/@value = '0'">
-           <xsl:value-of select="circulations/circulation/availabiltyDate"/>
-         </xsl:when>
-        </xsl:choose>
-      </pz:metadata>
-    </xsl:for-each>
-  </xsl:template>
-
-  <xsl:template match="/">
-    <xsl:choose>
-      <xsl:when test="opacRecord">
-        <xsl:apply-templates select="opacRecord/bibliographicRecord"/>
-      </xsl:when>
-      <xsl:otherwise>
-        <xsl:apply-templates/>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:template>
-
-</xsl:stylesheet>
diff --git a/etc/opac_turbomarc.xsl b/etc/opac_turbomarc.xsl
deleted file mode 100644 (file)
index 98f33b7..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet
-    version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
-    xmlns:marc="http://www.indexdata.com/turbomarc">
-  
-  <xsl:import href="tmarc.xsl"/>
-
-  <xsl:output indent="yes" method="xml" version="1.0" encoding="UTF-8"/>
-
-<!-- Extract metadata from OPAC records with embedded MAR records
-      http://www.loc.gov/marc/bibliographic/ecbdhome.html
--->  
-
-  <xsl:template name="record-hook">
-    <xsl:for-each select="/opacRecord/holdings/holding">
-      <pz:metadata type="locallocation" empty="PAZPAR2_NULL_VALUE">
-       <xsl:value-of select="localLocation"/>
-      </pz:metadata>
-      <pz:metadata type="callnumber" empty="PAZPAR2_NULL_VALUE">
-       <xsl:value-of select="callNumber"/>
-      </pz:metadata>
-      <pz:metadata type="publicnote" empty="PAZPAR2_NULL_VALUE">
-       <xsl:value-of select="publicNote"/>
-      </pz:metadata>
-      <pz:metadata type="available" empty="PAZPAR2_NULL_VALUE">
-        <xsl:choose>
-          <xsl:when test="circulations/circulation/availableNow/@value = '1'">
-             Available
-          </xsl:when>
-          <xsl:when test="circulations/circulation/availableNow/@value = '0'">
-           <xsl:value-of select="circulations/circulation/availabiltyDate"/>
-         </xsl:when>
-        </xsl:choose>
-      </pz:metadata>
-    </xsl:for-each>
-  </xsl:template>
-  <xsl:template match="/">
-    <xsl:choose>
-      <xsl:when test="opacRecord">
-        <xsl:apply-templates select="opacRecord/bibliographicRecord"/>
-      </xsl:when>
-      <xsl:otherwise>
-        <xsl:apply-templates/>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:template>
-
-</xsl:stylesheet>
index e1ed332..65dad25 100644 (file)
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <pazpar2 xmlns="http://www.indexdata.com/pazpar2/1.0">
-  
+
+  <file path=".:xsl"/>  
   <server>
     <listen port="9004"/>
     <include src="default.xml"/>
index 1678574..943f639 100644 (file)
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <pazpar2 xmlns="http://www.indexdata.com/pazpar2/1.0">
 
+  <file path=".:xsl"/> 
   <threads number="10"/>
   <server id="metasearch_threaded">
     <listen port="9005"/>
diff --git a/etc/pp2out-to-carrot2.xsl b/etc/pp2out-to-carrot2.xsl
deleted file mode 100644 (file)
index 5bdd7a0..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-<xsl:output indent="yes" method="xml" version="1.0" encoding="UTF-8"/>
-<xsl:template match="/">
-  <searchresult>
-    <!-- TODO make query an xsl parameter -->
-    <query>water</query>
-    <xsl:for-each select="show/hit">
-    <document>
-      <xsl:attribute name="id">
-        <xsl:value-of select="recid" />
-      </xsl:attribute>
-      <title><xsl:value-of select="md-title" /></title>
-      <url><xsl:value-of select="location/md-electronic-url" /></url>
-      <snippet xml:space="preserve">
-        <xsl:for-each select="md-description">
-          <xsl:value-of select="." />
-        </xsl:for-each>
-        <xsl:value-of select="md-title-responsibility" />
-      </snippet>
-    </document> 
-    </xsl:for-each>
-  </searchresult>
-</xsl:template>
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/etc/primo-pz2.xsl b/etc/primo-pz2.xsl
deleted file mode 100644 (file)
index 43a92a1..0000000
+++ /dev/null
@@ -1,189 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet version="1.0"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
-  xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
-  xmlns:tmarc="http://www.indexdata.com/turbomarc"
-  xmlns:prim="http://www.exlibrisgroup.com/xsd/primo/primo_nm_bib" 
-  xmlns:sear="http://www.exlibrisgroup.com/xsd/jaguar/search"
->
-
-  <xsl:output indent="yes" method="xml" version="1.0"
-    encoding="UTF-8" />
-
-  <xsl:template name="record-hook" />
-
-  <xsl:variable name="type" select="/opt/prim:PrimoNMBib/prim:display/prim:type"/>
-  <xsl:variable name="is_article" select="$type = 'article'" />
-  <xsl:variable name="fulltext" select="/opt/prim:PrimoNMBib/prim:delivery/prim:fulltext"/>
-  <xsl:variable name="has_fulltext">
-    <xsl:choose>
-      <xsl:when test="$fulltext = 'no_fulltext' ">
-        <xsl:text>no</xsl:text>
-      </xsl:when>
-      <xsl:when test="$fulltext = 'fulltext'">
-        <xsl:text>yes</xsl:text>
-      </xsl:when>
-      <xsl:otherwise>
-        <xsl:text>no</xsl:text>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:variable>
-
-  <xsl:template match="/">
-    <xsl:apply-templates />
-  </xsl:template>
-
-  <xsl:template match="sear:RESULT">
-    <pz:records>
-      <xsl:apply-templates />
-    </pz:records>
-  </xsl:template>
-
-  <xsl:template match="sear:DOC">
-    <pz:record>
-      <xsl:apply-templates />
-    </pz:record>
-  </xsl:template>
-
-  <xsl:template match="prim:PrimoNMBib">
-    <xsl:apply-templates />
-  </xsl:template>
-  
-  <xsl:template match="prim:control"> 
-    <xsl:for-each select="prim:recordid">
-      <pz:metadata type="id">
-       <xsl:value-of select="."/>
-      </pz:metadata>
-    </xsl:for-each>
-  </xsl:template>
-
-  <xsl:template match="prim:addata">
-    <!--    <xsl:variable name="yearmonthday" select="@date" /> -->
-
-    <xsl:for-each select="prim:date">
-      <pz:metadata type="date">
-       <xsl:value-of select="substring(.,1,4)" />
-      </pz:metadata>
-      <pz:metadata type="journal-month">
-       <xsl:value-of select="substring(.,4,1)" />
-      </pz:metadata>
-    </xsl:for-each>
-
-    <xsl:for-each select="prim:volume">
-      <pz:metadata type="journal-number">
-       <xsl:value-of select="." />
-      </pz:metadata>
-    </xsl:for-each>
-
-    <xsl:for-each select="prim:issue">
-      <pz:metadata type="issue-number">
-       <xsl:value-of select="." />
-      </pz:metadata>
-    </xsl:for-each>
-
-    <xsl:for-each select="prim:issn">
-      <pz:metadata type="issn">
-        <xsl:value-of select="." />
-      </pz:metadata>
-    </xsl:for-each>
-
-    <xsl:for-each select="prim:jtitle">
-      <pz:metadata type="journal-title">
-       <xsl:value-of select="." />
-      </pz:metadata>
-    </xsl:for-each>
-  </xsl:template>
-
-  <xsl:template match="prim:delivery">  
-
-    <xsl:if test="$has_fulltext">
-      <pz:metadata type="has-fulltext">
-        <xsl:value-of select="$has_fulltext" />
-      </pz:metadata>
-    </xsl:if>
-
-  </xsl:template>
-
-  <xsl:template match="prim:display">
-    <xsl:for-each select="prim:creator">
-       <pz:metadata type="author">
-        <xsl:value-of select="." />
-      </pz:metadata>
-    </xsl:for-each>  
-    <xsl:for-each select="prim:type">
-      <xsl:variable name="type" select="."/>
-      <pz:metadata type="medium">
-       <xsl:choose>
-          <xsl:when test="$type ='article' and $has_fulltext = 'yes'">
-           <xsl:text>e-article</xsl:text>
-         </xsl:when>
-          <xsl:when  test="$type = 'article' and $has_fulltext = 'no'">
-           <xsl:text>article</xsl:text>
-         </xsl:when>
-          <xsl:otherwise>
-            <xsl:value-of select="$type"/>
-          </xsl:otherwise>
-       </xsl:choose>
-<!--        <xsl:value-of select="$type" /> -->
-      </pz:metadata>
-      <pz:metadata type="debug_isarticle"><xsl:value-of select="$is_article"/></pz:metadata>
-    </xsl:for-each>  
-
-    <xsl:for-each select="prim:title">
-      <pz:metadata type="title">
-       <xsl:value-of select="." />
-      </pz:metadata>
-    </xsl:for-each>  
-
-    <xsl:for-each select="prim:ispartof">
-      <pz:metadata type="journal-subpart">
-       <xsl:value-of select="." />
-      </pz:metadata>
-    </xsl:for-each>
-<!--
-    <xsl:apply-templates />
--->
-  </xsl:template>
-
-  <xsl:template match="prim:facets">
-    <xsl:for-each select="prim:topic">
-       <pz:metadata type="subject">
-        <xsl:value-of select="." />
-      </pz:metadata>
-    </xsl:for-each>  
-  </xsl:template>
-
-  <xsl:template match="sear:LINKS" >
-    <xsl:for-each select="sear:openurl"> 
-      <pz:metadata type="electronic-url">
-       <xsl:value-of select="."/>
-      </pz:metadata>
-    </xsl:for-each>
-  </xsl:template>
-
-  <xsl:template match="prim:search">
-    <xsl:for-each select="prim:description">
-      <pz:metadata type="description">
-       <xsl:value-of select="." />
-      </pz:metadata>
-    </xsl:for-each>
-
-
-    <xsl:for-each select="prim:sub">
-      <pz:metadata type="subject">
-        <xsl:value-of select="." />
-      </pz:metadata>
-    </xsl:for-each>
-
-    <!-- passthrough id data -->
-    <xsl:for-each select="pz:metadata">
-      <xsl:copy-of select="." />
-    </xsl:for-each>
-    <!-- other stylesheets importing this might want to define this -->
-
-    <xsl:call-template name="record-hook" />   
-  </xsl:template>
-
-  <xsl:template match="text()" />
-
-</xsl:stylesheet>
diff --git a/etc/pz2-ourl-base.xsl b/etc/pz2-ourl-base.xsl
deleted file mode 100644 (file)
index 260dc9f..0000000
+++ /dev/null
@@ -1,169 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet
-    version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
-    xmlns:marc="http://www.loc.gov/MARC21/slim"
-    xmlns:str="http://exslt.org/strings"
-    extension-element-prefixes="str">
-
-  <xsl:param name="open_url_resolver"/>
-  <!--<xsl:variable name="resolver">http://zeus.lib.uoc.gr:3210/sfxtst3</xsl:variable>-->
-  <xsl:template name="insert-md-openurl">
-  
-    <xsl:value-of select="$open_url_resolver" /><xsl:text>?generatedby=pz2</xsl:text>
-    <xsl:call-template name="ou-parse-author" />
-    <xsl:call-template name="ou-parse-date" />
-    <xsl:call-template name="ou-parse-volume" />
-    <xsl:call-template name="ou-parse-any">
-      <xsl:with-param name="field_name" select="string('isbn')" />
-    </xsl:call-template>
-    <xsl:call-template name="ou-parse-any">
-      <xsl:with-param name="field_name" select="string('issn')" />
-    </xsl:call-template>
-    <xsl:call-template name="ou-parse-any">
-      <xsl:with-param name="field_name" select="string('title')" />
-    </xsl:call-template>
-    <xsl:call-template name="ou-parse-any">
-      <xsl:with-param name="field_name" select="string('atitle')" />
-    </xsl:call-template>
-
-  </xsl:template>
-  <!-- parsing raw string data -->
-  
-  <xsl:template name="ou-parse-author" >
-    <xsl:variable name="author">
-      <xsl:call-template name="ou-author" />
-    </xsl:variable>
-    
-    <xsl:variable name="aulast" select="normalize-space(substring-before($author, ','))"/>
-
-    <xsl:variable name="aufirst" 
-      select="substring-before( normalize-space(substring-after($author, ',')), ' ')"/>
-
-    <xsl:if test="$aulast != ''">
-      <xsl:text>&amp;aulast=</xsl:text>
-      <xsl:value-of select="$aulast" />
-    </xsl:if>
-
-    <xsl:if test="string-length( translate($aufirst, '.', '') ) &gt; 1" >
-      <xsl:text>&amp;aufirst=</xsl:text>
-      <xsl:value-of select="$aufirst" />
-    </xsl:if>
-
-  </xsl:template>
-
-  <xsl:template name="ou-parse-volume">
-    <xsl:variable name="volume">
-      <xsl:call-template name="ou-volume" />
-    </xsl:variable>
-
-    <xsl:variable name="vol" select="substring-after($volume, 'Vol')"/>
-    <xsl:variable name="issue" select="false()" />
-    <xsl:variable name="spage" select="false()" />
-
-    <xsl:if test="$vol">
-      <xsl:text>&amp;volume=</xsl:text>
-      <xsl:value-of select="$vol" />
-    </xsl:if>
-
-    <xsl:if test="$issue">
-      <xsl:text>&amp;issue=</xsl:text>
-      <xsl:value-of select="$issue" />
-    </xsl:if>
-    
-    <xsl:if test="$spage">
-      <xsl:text>&amp;spage=</xsl:text>
-      <xsl:value-of select="$vol" />
-    </xsl:if>
-
-  </xsl:template>
-
-
-  <xsl:template name="ou-parse-date">
-    <xsl:variable name="date">
-      <xsl:call-template name="ou-date" />
-    </xsl:variable>
-
-    <xsl:variable name="parsed_date" select="translate($date, '.[]c;', '')"/>
-
-    <xsl:if test="$parsed_date">
-      <xsl:text>&amp;date=</xsl:text>
-      <xsl:value-of select="$parsed_date" />
-    </xsl:if>
-
-  </xsl:template>
-
-  
-  <xsl:template name="ou-parse-any">
-    <xsl:param name="field_name" />
-
-    <xsl:variable name="field_value">
-      <xsl:choose>
-
-      <xsl:when test="$field_name = 'isbn'">
-        <xsl:call-template name="ou-isbn"/>
-      </xsl:when>
-
-      <xsl:when test="$field_name = 'issn'">
-        <xsl:call-template name="ou-issn"/>
-      </xsl:when>
-      
-      <xsl:when test="$field_name = 'atitle'">
-        <xsl:call-template name="ou-atitle"/>
-      </xsl:when>
-     
-      <xsl:when test="$field_name = 'title'">
-        <xsl:call-template name="ou-title"/>
-      </xsl:when>
-
-      </xsl:choose>
-    </xsl:variable>
-
-    <xsl:variable name="digits" select="1234567890"/>
-
-    <xsl:variable name="parsed_value">
-      <xsl:choose>
-
-      <xsl:when test="$field_name = 'isbn'">
-        <xsl:value-of select="translate($field_value, translate($field_value, concat($digits, 'X'), ''), '')"/>
-      </xsl:when>
-
-      <xsl:when test="$field_name = 'issn'">
-        <xsl:value-of select="translate($field_value, translate($field_value, concat($digits, '-', 'X'), ''), '')"/>
-      </xsl:when>
-      
-      <xsl:when test="$field_name = 'atitle'">
-        <xsl:value-of select="translate(normalize-space($field_value), '.', '')"/>
-      </xsl:when>
-     
-      <xsl:when test="$field_name = 'title'">
-        <xsl:value-of select="translate(normalize-space($field_value), '.', '')"/>
-      </xsl:when>
-
-      </xsl:choose>
-    </xsl:variable>
-
-
-    <xsl:if test="$parsed_value != ''">
-      <xsl:text>&amp;</xsl:text>
-      <xsl:value-of select="$field_name" />
-      <xsl:text>=</xsl:text>
-      <xsl:value-of select="$parsed_value" />
-    </xsl:if>
-
-  </xsl:template>
-
-
-</xsl:stylesheet>
-<!--
-/*
- * Local variables:
- * c-basic-offset: 2
- * indent-tabs-mode: nil
- * End:
- * vim: shiftwidth=2 tabstop=4 expandtab
- */
--->
diff --git a/etc/pz2-ourl-marc21.xsl b/etc/pz2-ourl-marc21.xsl
deleted file mode 100644 (file)
index 1c8efde..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet
-    version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
-    xmlns:marc="http://www.loc.gov/MARC21/slim"
-    xmlns:str="http://exslt.org/strings"
-    extension-element-prefixes="str">  
-  
-  <xsl:import href="pz2-ourl-base.xsl"/>
-
-  <xsl:template name="ou-author" >
-  <!-- what to do with multiple authors??-->
-    <xsl:for-each select="marc:datafield[@tag='100' or @tag='700']">
-      <xsl:value-of select="marc:subfield[@code='a']"/>
-    </xsl:for-each>
-  </xsl:template>
-
-  <xsl:template name="ou-title" >
-  <!-- if 773 exists its a journal/article -->
-    <xsl:choose>
-    
-      <xsl:when test="marc:datafield[@tag='773']/marc:subfield[@code='t']">
-        <xsl:value-of select="marc:datafield[@tag='773']/marc:subfield[@code='t']"/>
-      </xsl:when>
-
-      <xsl:when test="marc:datafield[@tag='245']/marc:subfield[@code='a']">
-        <xsl:value-of select="marc:datafield[@tag='245']/marc:subfield[@code='a']"/>
-      </xsl:when>
-
-    </xsl:choose>
-  </xsl:template>
-
-  
-  <xsl:template name="ou-atitle" >
-    <!-- return value only if article or journal -->
-    <xsl:if test="marc:datafield[@tag='773']">
-      <xsl:value-of select="marc:datafield[@tag='245']/marc:subfield[@code='a']"/>
-    </xsl:if>
-  </xsl:template>
-
-
-  <xsl:template name="ou-date" >
-    <xsl:for-each select="marc:datafield[@tag='260']">
-      <xsl:value-of select="marc:subfield[@code='c']"/>
-    </xsl:for-each>
-  </xsl:template>
-
-  
-  <xsl:template name="ou-isbn" >
-  <!-- if 773 exists its a journal/article -->
-    <xsl:choose>  
-    
-      <xsl:when test="marc:datafield[@tag='773']/marc:subfield[@code='z']">
-        <xsl:value-of select="marc:datafield[@tag='773']/marc:subfield[@code='z']"/>
-      </xsl:when>
-      
-      <xsl:when test="marc:datafield[@tag='020']/marc:subfield[@code='a']">
-        <xsl:value-of select="marc:datafield[@tag='020']/marc:subfield[@code='a']"/>
-      </xsl:when>
-
-    </xsl:choose>
-  </xsl:template>
-
-  
-  <xsl:template name="ou-issn" >
-  <!-- if 773 exists its a journal/article -->
-    <xsl:choose>
-    
-      <xsl:when test="marc:datafield[@tag='773']/marc:subfield[@code='x']">
-        <xsl:value-of select="marc:datafield[@tag='773']/marc:subfield[@code='x']"/>
-      </xsl:when>
-
-      <xsl:when test="marc:datafield[@tag='022']/marc:subfield[@code='a']">
-        <xsl:value-of select="marc:datafield[@tag='022']/marc:subfield[@code='a']"/>
-      </xsl:when>
-
-      </xsl:choose>
-  </xsl:template>
-
-  
-  <xsl:template name="ou-volume" >
-    <xsl:if test="marc:datafield[@tag='773']">
-         <xsl:value-of select="marc:datafield[@tag='773']/marc:subfield[@code='g']"/>
-    </xsl:if>
-  </xsl:template>
-
-</xsl:stylesheet>
-<!--
-/*
- * Local variables:
- * c-basic-offset: 2
- * indent-tabs-mode: nil
- * End:
- * vim: shiftwidth=2 tabstop=4 expandtab
- */
--->
diff --git a/etc/pz2-solr.xsl b/etc/pz2-solr.xsl
deleted file mode 100644 (file)
index 0b7b796..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
-               xmlns:pz="http://www.indexdata.com/pazpar2/1.0" >
-  <xsl:template  match="/">
-    <add>
-      <xsl:apply-templates></xsl:apply-templates>
-    </add>
-  </xsl:template>
-
-  <xsl:template match="pz:record">
-    <doc>
-      <xsl:apply-templates></xsl:apply-templates>
-    </doc>
-  </xsl:template>
-  <xsl:template match="pz:metadata">
-    <xsl:if test="@type">
-      <field>
-       <xsl:attribute  name="name">
-         <xsl:value-of select="@type"/>
-       </xsl:attribute>
-       <xsl:value-of select="."/>
-      </field>
-    </xsl:if>
-  </xsl:template>
-</xsl:stylesheet>
index f2c404c..54b170b 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <pazpar2 xmlns="http://www.indexdata.com/pazpar2/1.0">
-
   <threads number="0"/> <!-- non-zero to enable threaded operation -->
+  <file path=".:/usr/share/pazpar2/xsl"/> 
   <server>
     <listen port="8004"/>
 
diff --git a/etc/solr-pz2.xsl b/etc/solr-pz2.xsl
deleted file mode 100644 (file)
index f6fa5dd..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0"?>
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
-               xmlns:pz="http://www.indexdata.com/pazpar2/1.0" >
-
-  <xsl:param name="medium" />
-
-  <xsl:template  match="/">
-      <xsl:apply-templates></xsl:apply-templates>
-  </xsl:template>
-
-  <xsl:template  match="response">
-      <xsl:apply-templates></xsl:apply-templates>
-  </xsl:template>
-
-  <xsl:template  match="records">
-      <xsl:apply-templates></xsl:apply-templates>
-  </xsl:template>
-
-  <xsl:template match="doc">
-    <pz:record>
-      <xsl:if test="string-length($medium) &gt; 0">
-        <pz:metadata type="medium">
-           <xsl:value-of select="$medium"/>
-        </pz:metadata>
-      </xsl:if>
-      <xsl:apply-templates></xsl:apply-templates>
-    </pz:record>
-  </xsl:template>
-
-  <xsl:template match="float[@name]">
-    <pz:metadata>
-       <xsl:attribute  name="type">
-         <xsl:value-of select="@name"/>
-       </xsl:attribute>
-       <xsl:value-of select="."/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="str[@name]">
-    <pz:metadata>
-       <xsl:attribute  name="type">
-         <xsl:value-of select="@name"/>
-       </xsl:attribute>
-       <xsl:value-of select="."/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="date[@name]">
-    <pz:metadata>
-       <xsl:attribute  name="type">
-         <xsl:value-of select="@name"/>
-       </xsl:attribute>
-       <xsl:value-of select="."/>
-    </pz:metadata>
-  </xsl:template>
-
-  <xsl:template match="arr">
-    <xsl:for-each select="str">
-      <xsl:call-template name="string"/>
-    </xsl:for-each>
-  </xsl:template>
-
-  <xsl:template name="string">
-      <pz:metadata>
-       <xsl:attribute  name="type">
-         <xsl:value-of select="../@name"/>
-       </xsl:attribute>
-       <xsl:choose>
-         <xsl:when test="../@name = 'medium' and string-length($medium) = 0">
-         </xsl:when>
-         <xsl:otherwise>
-           <xsl:value-of select="."/>
-         </xsl:otherwise>
-       </xsl:choose>
-      </pz:metadata>
-  </xsl:template>
-
-</xsl:stylesheet>
diff --git a/etc/tmarc.xsl b/etc/tmarc.xsl
deleted file mode 100644 (file)
index 95e9975..0000000
+++ /dev/null
@@ -1,829 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet version="1.0"
-  xmlns="http://www.indexdata.com/turbomarc"
-  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
-  xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
-  xmlns:tmarc="http://www.indexdata.com/turbomarc">
-
-  <xsl:output indent="yes" method="xml" version="1.0"
-    encoding="UTF-8" />
-  <xsl:param name="medium"/>
-
-  <!-- Extract metadata from MARC21/USMARC from streamlined marcxml format 
-    http://www.loc.gov/marc/bibliographic/ecbdhome.html -->
-  <xsl:template name="record-hook" />
-
-
-  <xsl:template match="/">
-      <xsl:apply-templates />
-  </xsl:template>
-
-  <xsl:template match="tmarc:collection">
-    <collection>
-      <xsl:apply-templates />
-    </collection>
-  </xsl:template>
-
-  <xsl:template match="tmarc:r">
-    <xsl:variable name="title_medium" select="tmarc:d245/tmarc:sh" />
-    <xsl:variable name="journal_title" select="tmarc:d773/tmarc:st" />
-    <xsl:variable name="electronic_location_url" select="tmarc:d856/tmarc:su" />
-    <xsl:variable name="fulltext_a" select="tmarc:d900/tmarc:sa" />
-    <xsl:variable name="fulltext_b" select="tmarc:d900/tmarc:sb" />
-    <!-- Does not always hit the right substring. The field is not always fixed-width? -->
-    <xsl:variable name="control_lang" select="substring(tmarc:c008, 36, 3)" />
-    <xsl:variable name="contains110" select="tmarc:d110" />
-    <xsl:variable name="hasAuthorFields" select="tmarc:d100 or tmarc:d111" />
-    <xsl:variable name="typeofrec" select="substring(tmarc:l, 7, 1)"/>
-    <xsl:variable name="typeofvm" select="substring(tmarc:c008, 34, 1)"/>
-    <xsl:variable name="biblevel" select="substring(tmarc:l, 8, 1)"/>
-    <xsl:variable name="physdes" select="substring(tmarc:c007, 1, 1)"/>
-    <xsl:variable name="form1" select="substring(tmarc:c008, 24, 1)"/>
-    <xsl:variable name="form2" select="substring(tmarc:c008, 30, 1)"/>
-    <xsl:variable name="oclca" select="substring(tmarc:c007, 1, 1)"/>
-    <xsl:variable name="oclcb" select="substring(tmarc:c007, 2, 1)"/>
-    <xsl:variable name="oclcd" select="substring(tmarc:c007, 4, 1)"/>
-    <xsl:variable name="oclce" select="substring(tmarc:c007, 5, 1)"/>
-    <xsl:variable name="typeofserial" select="substring(tmarc:c008, 22, 1)"/>
-
-    <xsl:variable name="electronic">
-      <xsl:choose>
-        <xsl:when test="$form1='s' or $form1='q' or $form1='o' or
-          $form2='s' or $form2='q' or $form2='o'">
-          <xsl:text>yes</xsl:text>
-       </xsl:when>
-       <xsl:otherwise/>
-      </xsl:choose>
-    </xsl:variable>
-
-    <xsl:variable name="vmedium">
-      <xsl:choose>
-        <xsl:when test="string-length($medium)"><xsl:value-of select="$medium" /></xsl:when>
-        <xsl:when test="($typeofrec='a' or $typeofrec='t') and $biblevel='m'">book</xsl:when>
-        <xsl:when test="$typeofrec='j' or $typeofrec='i'">
-         <xsl:text>recording</xsl:text>
-         <xsl:choose>
-           <xsl:when test="$oclcb='d' and $oclcd='f'">-cd</xsl:when>
-           <xsl:when test="$oclcb='s'">-cassette</xsl:when>
-           <xsl:when test="$oclcb='d' and $oclcd='a' or $oclcd='b' or
-             $oclcd='c' or $oclcd='d' or $oclcd='e'">-vinyl</xsl:when>
-         </xsl:choose>
-       </xsl:when>
-       <xsl:when test="$typeofrec='g'">
-         <xsl:choose>
-           <xsl:when test="$typeofvm='m' or $typeofvm='v'">
-             <xsl:text>video</xsl:text>
-             <xsl:choose>
-               <xsl:when test="$oclca='v' and $oclcb='d' and $oclce='v'">-dvd</xsl:when>
-               <xsl:when test="$oclca='v' and $oclcb='d' and $oclce='s'">-blu-ray</xsl:when>
-               <xsl:when test="$oclca='v' and $oclcb='f' and $oclce='b'">-vhs</xsl:when>
-             </xsl:choose>
-           </xsl:when>
-           <xsl:otherwise>audio-visual</xsl:otherwise>
-         </xsl:choose>
-       </xsl:when>
-       <xsl:when test="$typeofrec='a' and $biblevel='s'">
-         <xsl:choose>
-           <xsl:when test="$typeofserial='n'">newspaper</xsl:when>
-           <xsl:otherwise>journal</xsl:otherwise>
-         </xsl:choose>
-       </xsl:when>
-       <xsl:when test="$typeofrec='e' or $typeofrec='f'">map</xsl:when>
-       <xsl:when test="$typeofrec='c' or $typeofrec='d'">music-score</xsl:when>
-       <xsl:when test="$form1='a' or $form1='b' or $form1='c'">microform</xsl:when>
-       <xsl:when test="$typeofrec='t'">thesis</xsl:when>
-        <!-- <xsl:when test="$journal_title">article</xsl:when> -->
-       <xsl:when test="$typeofrec='a' or $typeofrec='i' and
-           ($typeofserial='d' or $typeofserial='w')">web</xsl:when>
-       <xsl:when test="$typeofrec='a' and $biblevel='b'">article</xsl:when>
-       <xsl:when test="$typeofrec='m'">electronic</xsl:when>
-        <xsl:otherwise>
-          <xsl:text>other</xsl:text>
-        </xsl:otherwise>
-      </xsl:choose>
-    </xsl:variable>
-
-    <xsl:variable name="has_fulltext">
-      <xsl:choose>
-        <xsl:when test="tmarc:d856/tmarc:sq">
-          <xsl:text>yes</xsl:text>
-        </xsl:when>
-        <xsl:when test="tmarc:d856/tmarc:si='TEXT*'">
-          <xsl:text>yes</xsl:text>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:text>no</xsl:text>
-        </xsl:otherwise>
-      </xsl:choose>
-    </xsl:variable>
-
-    <xsl:variable name="oclc_number">
-      <xsl:choose>
-        <xsl:when test='contains(tmarc:c001,"ocn") or
-                        contains(tmarc:c001,"ocm") or
-                        contains(tmarc:c001,"OCoLC") '>
-         <xsl:value-of select="tmarc:c001"/>
-        </xsl:when>
-        <xsl:when test='contains(tmarc:d035/tmarc:sa,"ocn") or
-                        contains(tmarc:d035/tmarc:sa,"ocm") or
-                        contains(tmarc:d035/tmarc:sa,"OCoLC") '>
-         <xsl:value-of select="tmarc:d035/tmarc:sa"/>
-        </xsl:when>
-      </xsl:choose>
-    </xsl:variable>
-
-    <xsl:variable name="date_008">
-      <xsl:choose>
-        <xsl:when test="contains('cestpudikmr', substring(tmarc:c008, 7, 1))">
-          <xsl:value-of select="substring(tmarc:c008, 8, 4)" />
-        </xsl:when>
-      </xsl:choose>
-    </xsl:variable>
-
-    <xsl:variable name="date_end_008">
-      <xsl:choose>
-        <xsl:when test="contains('dikmr', substring(tmarc:c008, 7, 1))">
-          <xsl:value-of select="substring(tmarc:c008, 12, 4)" />
-        </xsl:when>
-      </xsl:choose>
-    </xsl:variable>
-
-    <pz:record>
-<!--
-      <xsl:attribute name="mergekey">
-    <xsl:text>title </xsl:text>
-  <xsl:value-of select="tmarc:d245/tmarc:sa" />
-  <xsl:text> author </xsl:text>
-  <xsl:value-of select="tmarc:d100/tmarc:sa" />
-  <xsl:text> medium </xsl:text>
-  <xsl:value-of select="$medium" />
-    </xsl:attribute>
-  -->
-
-      <xsl:for-each select="tmarc:c001">
-        <pz:metadata type="id">
-          <xsl:value-of select="." />
-        </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:if test="string-length($oclc_number) &gt; 0">
-       <pz:metadata type="oclc-number">
-         <xsl:value-of select="$oclc_number" />
-       </pz:metadata>
-      </xsl:if>
-
-      <xsl:for-each select="tmarc:d010">
-       <xsl:for-each select="tmarc:sa">
-         <pz:metadata type="lccn">
-           <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-      </xsl:for-each>
-
-      <xsl:for-each select="tmarc:d020">
-       <xsl:for-each select="tmarc:sa">
-         <pz:metadata type="isbn">
-           <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-      </xsl:for-each>
-
-      <xsl:for-each select="tmarc:d022">
-       <xsl:for-each select="tmarc:sa">
-         <pz:metadata type="issn">
-           <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-      </xsl:for-each>
-      
-      <xsl:for-each select="tmarc:d027">
-       <xsl:for-each select="tmarc:sa">
-         <pz:metadata type="tech-rep-nr">
-           <xsl:value-of select="tmarc:sa" />
-         </pz:metadata>
-       </xsl:for-each>
-      </xsl:for-each>
-      
-      <xsl:for-each select="tmarc:d035"> 
-        <pz:metadata type="system-control-nr">
-          <xsl:choose>
-            <xsl:when test="tmarc:sa">
-              <xsl:value-of select="tmarc:sa"/>
-            </xsl:when>
-            <xsl:otherwise>
-              <xsl:value-of select="tmarc:sb"/>
-            </xsl:otherwise>
-          </xsl:choose>
-        </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="tmarc:d100">
-       <xsl:for-each select="tmarc:sa">
-         <pz:metadata type="author">
-           <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-       <xsl:for-each select="tmarc:sc">
-         <pz:metadata type="author-title">
-           <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-       <xsl:for-each select="tmarc:sd">
-         <pz:metadata type="author-date">
-           <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-      </xsl:for-each>
-
-      <xsl:for-each select="tmarc:d110">
-       <xsl:for-each select="tmarc:sa">
-         <pz:metadata type="corporate-name">
-          <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-       <xsl:for-each select="tmarc:sc">
-         <pz:metadata type="corporate-location">
-           <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-       <xsl:for-each select="tmarc:sd">
-         <pz:metadata type="corporate-date">
-           <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-      </xsl:for-each>
-      
-      <xsl:for-each select="tmarc:d111">
-       <xsl:for-each select="tmarc:sa">
-         <pz:metadata type="meeting-name">
-           <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-       <xsl:for-each select="tmarc:sc">
-         <pz:metadata type="meeting-location">
-           <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-       <xsl:for-each select="tmarc:sd">
-         <pz:metadata type="meeting-date">
-           <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-      </xsl:for-each>
-
-      <xsl:for-each select="tmarc:d260">
-       <xsl:for-each select="tmarc:sc">
-         <pz:metadata type="date">
-           <xsl:value-of select="translate(., 'cp[].', '')" />
-         </pz:metadata>
-       </xsl:for-each>
-      </xsl:for-each>
-
-      <xsl:if test="string-length($date_008) &gt; 0 and not(tmarc:d260)">
-        <pz:metadata type="date">
-          <xsl:choose>
-            <xsl:when test="$date_end_008">
-              <xsl:value-of select="concat($date_008,'-',$date_end_008)" />
-            </xsl:when>
-            <xsl:otherwise> 
-              <xsl:value-of select="$date_008" />
-            </xsl:otherwise>
-          </xsl:choose>
-        </pz:metadata>
-      </xsl:if>
-
-      <xsl:for-each select="tmarc:d130">
-       <xsl:for-each select="tmarc:sa">
-         <pz:metadata type="title-uniform">
-           <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-       <xsl:for-each select="tmarc:sm">
-         <pz:metadata type="title-uniform-media">
-           <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-       <xsl:for-each select="tmarc:sn">
-         <pz:metadata type="title-uniform-parts">
-           <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-       <xsl:for-each select="tmarc:sp">
-         <pz:metadata type="title-uniform-partname">
-           <xsl:value-of select="." />     
-         </pz:metadata>
-       </xsl:for-each>
-       <xsl:for-each select="tmarc:sr">
-         <pz:metadata type="title-uniform-key">
-           <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-      </xsl:for-each>
-      
-      <xsl:for-each select="tmarc:d245">
-       <xsl:for-each select="tmarc:sa">
-         <pz:metadata type="title">
-           <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-       <xsl:for-each select="tmarc:sb">
-         <pz:metadata type="title-remainder">
-           <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-       <xsl:for-each select="tmarc:sc">
-         <pz:metadata type="title-responsibility">
-           <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-       <xsl:for-each select="tmarc:sf">
-         <pz:metadata type="title-dates">
-           <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-       <xsl:for-each select="tmarc:sh">
-         <pz:metadata type="title-medium">
-           <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-       <xsl:for-each select="tmarc:sn">
-         <pz:metadata type="title-number-section">
-           <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-       <xsl:if test="tmarc:sa">
-         <pz:metadata type="title-complete">
-           <xsl:value-of select="tmarc:sa" />
-           <xsl:if test="tmarc:sb" ><xsl:value-of select="concat(' ', tmarc:sb)" /></xsl:if>
-         </pz:metadata>
-       </xsl:if>
-      </xsl:for-each>
-
-      <xsl:for-each select="tmarc:d250">
-       <xsl:for-each select="tmarc:sa">
-         <pz:metadata type="edition">
-           <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-      </xsl:for-each>
-
-      <xsl:for-each select="tmarc:d260">
-       <xsl:for-each select="tmarc:sa">
-         <pz:metadata type="publication-place">
-           <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-       <xsl:for-each select="tmarc:sb">
-         <pz:metadata type="publication-name">
-           <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-       <xsl:for-each select="tmarc:sc">
-         <pz:metadata type="publication-date">
-           <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-      </xsl:for-each>
-
-      <xsl:for-each select="tmarc:d300">
-       <xsl:for-each select="tmarc:sa">
-         <pz:metadata type="physical-extent">
-           <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-       <xsl:for-each select="tmarc:sb">
-         <pz:metadata type="physical-format">
-           <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-       <xsl:for-each select="tmarc:sc">
-         <pz:metadata type="physical-dimensions">
-           <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-       <xsl:for-each select="tmarc:se">
-         <pz:metadata type="physical-accomp">
-           <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-       <xsl:for-each select="tmarc:sf">
-         <pz:metadata type="physical-unittype">
-           <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-       <xsl:for-each select="tmarc:sg">
-         <pz:metadata type="physical-unitsize">
-           <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-       <xsl:for-each select="tmarc:s3">
-         <pz:metadata type="physical-specified">
-           <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-      </xsl:for-each>
-
-      <xsl:for-each select="tmarc:d440">
-       <xsl:for-each select="tmarc:sa">
-         <pz:metadata type="series-title">
-           <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-      </xsl:for-each>
-
-      <xsl:for-each select="tmarc:d500">
-        <pz:metadata type="description">
-          <xsl:for-each select="node()">
-            <xsl:value-of select="text()" />
-          </xsl:for-each>
-        </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="tmarc:d505">
-        <pz:metadata type="description">
-          <xsl:for-each select="node()">
-            <xsl:value-of select="text()" />
-          </xsl:for-each>
-        </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="tmarc:d518">
-        <pz:metadata type="description">
-          <xsl:for-each select="node()">
-            <xsl:value-of select="text()" />
-          </xsl:for-each>
-        </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="tmarc:d520">
-        <pz:metadata type="description">
-          <xsl:for-each select="node()">
-            <xsl:value-of select="text()" />
-          </xsl:for-each>
-        </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="tmarc:d522">
-        <pz:metadata type="description">
-          <xsl:for-each select="node()">
-            <xsl:value-of select="text()" />
-          </xsl:for-each>
-        </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="tmarc:d911">
-        <pz:metadata type="description">
-          <xsl:for-each select="node()">
-            <xsl:value-of select="text()" />
-          </xsl:for-each>
-        </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="tmarc:d600 | tmarc:d610 | tmarc:d611 | tmarc:d630 |
-                            tmarc:d648 | tmarc:d650 | tmarc:d651 | tmarc:d653 |
-                            tmarc:d654 | tmarc:d655 | tmarc:d656 | tmarc:d657 |
-                            tmarc:d658 | tmarc:d662 | tmarc:d69X">
-       <xsl:for-each select="tmarc:sa">
-         <pz:metadata type="subject">
-           <xsl:value-of select="."/>
-         </pz:metadata>
-       </xsl:for-each>
-       <pz:metadata type="subject-long">
-           <xsl:for-each select="node()/text()">
-             <xsl:if test="position() &gt; 1">
-               <xsl:text>, </xsl:text>
-             </xsl:if>
-            <xsl:variable name='value'>
-              <xsl:value-of select='normalize-space(.)'/>
-            </xsl:variable>
-            <xsl:choose>
-              <xsl:when test="substring($value, string-length($value)) = ','">
-                <xsl:value-of select="substring($value, 1, string-length($value)-1)"/>
-              </xsl:when>
-              <xsl:otherwise>
-                <xsl:value-of select="$value"/>
-              </xsl:otherwise>
-            </xsl:choose> 
-          </xsl:for-each>
-         </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="tmarc:d856">
-       <xsl:for-each select="tmarc:su">
-         <pz:metadata type="electronic-url">
-           <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-        <pz:metadata type="electronic-text">
-         <xsl:choose>
-           <xsl:when test="tmarc:sy">
-             <xsl:value-of select="tmarc:sy/text()" />
-           </xsl:when>
-           <xsl:when test="tmarc:s3">
-             <xsl:value-of select="tmarc:s3/text()" />
-           </xsl:when>
-           <xsl:when test="tmarc:sa">
-             <xsl:value-of select="tmarc:sa/text()" />
-           </xsl:when>
-           <xsl:otherwise>Get resource</xsl:otherwise>
-         </xsl:choose>
-        </pz:metadata>
-       <xsl:for-each select="tmarc:sz">
-         <pz:metadata type="electronic-note">
-           <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-       <xsl:for-each select="tmarc:si">
-         <pz:metadata type="electronic-format-instruction">
-           <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-       <xsl:for-each select="tmarc:sq">
-         <pz:metadata type="electronic-format-type">
-           <xsl:value-of select="." />
-         </pz:metadata>
-       </xsl:for-each>
-      </xsl:for-each>
-
-      <xsl:for-each select="tmarc:d773">
-        <pz:metadata type="citation">
-          <xsl:for-each select="*">
-            <xsl:value-of select="normalize-space(.)" />
-            <xsl:text> </xsl:text>
-          </xsl:for-each>
-        </pz:metadata>
-        <xsl:for-each select="tmarc:st">
-          <pz:metadata type="journal-title">
-            <xsl:value-of select="."/>
-          </pz:metadata>
-        </xsl:for-each>
-        <xsl:if test="tmarc:sg">
-         <xsl:variable name="value">
-            <xsl:for-each select="tmarc:sg">
-              <xsl:value-of select="."/>
-            </xsl:for-each>
-         </xsl:variable>
-          <pz:metadata type="journal-subpart">
-            <xsl:value-of select="$value"/>
-         </pz:metadata>
-         <xsl:variable name="l">
-           <xsl:value-of select="translate($value,
-                                 'ABCDEFGHIJKLMNOPQRSTUVWXYZ.',
-                                 'abcdefghijklmnopqrstuvwxyz ') "/>
-         </xsl:variable>
-         <xsl:variable name="volume">
-           <xsl:choose>
-             <xsl:when test="string-length(substring-after($l,'vol ')) &gt; 0">
-               <xsl:value-of select="substring-before(normalize-space(substring-after($l,'vol ')),' ')"/>
-             </xsl:when>
-             <xsl:when test="string-length(substring-after($l,'v ')) &gt; 0">
-               <xsl:value-of select="substring-before(normalize-space(substring-after($l,'v ')),' ')"/>
-             </xsl:when>
-           </xsl:choose>
-         </xsl:variable>
-         <xsl:variable name="issue">
-           <xsl:value-of select="substring-before(translate(normalize-space(substring-after($l,'issue')), ',', ' '),' ')"/>
-         </xsl:variable>
-         <xsl:variable name="pages">
-           <xsl:choose>
-             <xsl:when test="string-length(substring-after($l,' p ')) &gt; 0">
-               <xsl:value-of select="normalize-space(substring-after($l,' p '))"/>
-             </xsl:when>
-             <xsl:when test="string-length(substring-after($l,',p')) &gt; 0">
-               <xsl:value-of select="normalize-space(substring-after($l,',p'))"/>
-             </xsl:when>
-             <xsl:when test="string-length(substring-after($l,' p')) &gt; 0">
-               <xsl:value-of select="normalize-space(substring-after($l,' p'))"/>
-             </xsl:when>
-           </xsl:choose>
-         </xsl:variable>
-
-         <!-- volume -->
-         <xsl:if test="string-length($volume) &gt; 0">
-           <pz:metadata type="volume-number">
-             <xsl:value-of select="$volume"/>
-           </pz:metadata>
-         </xsl:if>
-         <!-- issue -->
-         <xsl:if test="string-length($issue) &gt; 0">
-           <pz:metadata type="issue-number">
-             <xsl:value-of select="$issue"/>
-           </pz:metadata>
-         </xsl:if>
-         <!-- pages -->
-         <xsl:if test="string-length($pages) &gt; 0">
-           <pz:metadata type="pages-number">
-             <xsl:value-of select="$pages"/>
-           </pz:metadata>
-         </xsl:if>
-
-         <!-- season -->
-        </xsl:if>
-        <xsl:if test="tmarc:sp">
-          <pz:metadata type="journal-title-abbrev">
-            <xsl:value-of select="tmarc:sp"/>
-          </pz:metadata>
-        </xsl:if>
-      </xsl:for-each>
-
-      <xsl:for-each select="tmarc:d852">
-        <xsl:for-each select="tmarc:sy">
-          <pz:metadata type="publicnote">
-            <xsl:value-of select="." />
-          </pz:metadata>
-        </xsl:for-each>
-        <xsl:for-each select="tmarc:sh">
-          <pz:metadata type="callnumber">
-            <xsl:value-of select="." />
-          </pz:metadata>
-        </xsl:for-each>
-      </xsl:for-each>
-
-      <xsl:for-each select="tmarc:d876">
-        <xsl:if test="tmarc:sf">
-          <pz:metadata type="loan-period">
-            <xsl:value-of select="concat(tmarc:s5,':',tmarc:sf)" />
-          </pz:metadata>
-        </xsl:if>
-      </xsl:for-each>
-
-      <pz:metadata type="medium">
-        <xsl:value-of select="$vmedium" />
-       <xsl:if test="string-length($electronic) and $vmedium != 'electronic'">
-         <xsl:text> (electronic)</xsl:text>
-       </xsl:if>
-      </pz:metadata>
-
-      <xsl:for-each select="tmarc:d900/tmarc:sa">
-        <pz:metadata type="fulltext">
-          <xsl:value-of select="." />
-        </pz:metadata>
-      </xsl:for-each>
-
-      <!-- <xsl:if test="$fulltext_a"> <pz:metadata type="fulltext"> <xsl:value-of 
-        select="$fulltext_a"/> </pz:metadata> </xsl:if> -->
-
-      <xsl:for-each select="tmarc:d900/tmarc:sb">
-        <pz:metadata type="fulltext">
-          <xsl:value-of select="." />
-        </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="tmarc:d900/tmarc:se">
-        <pz:metadata type="fulltext">
-          <xsl:value-of select="." />
-        </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="tmarc:d900/tmarc:sf">
-        <pz:metadata type="fulltext">
-          <xsl:value-of select="." />
-        </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="tmarc:d900/tmarc:si">
-        <pz:metadata type="fulltext">
-          <xsl:value-of select="." />
-        </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="tmarc:d900/tmarc:sk">
-        <pz:metadata type="fulltext">
-          <xsl:value-of select="." />
-        </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="tmarc:d900/tmarc:sq">
-        <pz:metadata type="fulltext">
-          <xsl:value-of select="." />
-        </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="tmarc:d900/tmarc:ss">
-        <pz:metadata type="fulltext">
-          <xsl:value-of select="." />
-        </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="tmarc:d900/tmarc:su">
-        <pz:metadata type="fulltext">
-          <xsl:value-of select="." />
-        </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="tmarc:d900/tmarc:sy">
-        <pz:metadata type="fulltext">
-          <xsl:value-of select="." />
-        </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="tmarc:d903">
-        <xsl:if test="tmarc:sa">
-          <pz:metadata type="publication-date">
-            <xsl:value-of select="substring(tmarc:sa,1,4)"/>
-          </pz:metadata>
-          <pz:metadata type="date">
-            <xsl:value-of select="substring(tmarc:sa,1,4)"/>
-          </pz:metadata>
-        </xsl:if>
-      </xsl:for-each>
-
-      <!-- <xsl:if test="$fulltext_b"> <pz:metadata type="fulltext"> <xsl:value-of 
-        select="$fulltext_b"/> </pz:metadata> </xsl:if> -->
-
-      <pz:metadata type="has-fulltext">
-        <xsl:value-of select="$has_fulltext"/>
-      </pz:metadata>
-
-      <xsl:for-each select="tmarc:d907 | tmarc:d901">
-        <pz:metadata type="iii-id">
-          <xsl:value-of select="tmarc:sa" />
-        </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="tmarc:d926">
-        <pz:metadata type="locallocation" empty="PAZPAR2_NULL_VALUE">
-         <xsl:value-of select="tmarc:sa"/>
-       </pz:metadata>
-        <pz:metadata type="callnumber" empty="PAZPAR2_NULL_VALUE">
-         <xsl:value-of select="tmarc:sc"/>
-       </pz:metadata>
-        <pz:metadata type="available" empty="PAZPAR2_NULL_VALUE">
-         <xsl:value-of select="tmarc:se"/>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <!-- OhioLINK holdings -->
-      <xsl:for-each select="tmarc:d945">
-       <pz:metadata type="locallocation" empty="PAZPAR2_NULL_VALUE">
-         <xsl:value-of select="tmarc:sa"/>
-       </pz:metadata>
-       <pz:metadata type="callnumber" empty="PAZPAR2_NULL_VALUE">
-         <xsl:value-of select="tmarc:sb"/>
-       </pz:metadata>
-       <pz:metadata type="publicnote" empty="PAZPAR2_NULL_VALUE">
-         <xsl:value-of select="tmarc:sc"/>
-       </pz:metadata>
-       <pz:metadata type="available" empty="PAZPAR2_NULL_VALUE">
-          <xsl:choose>
-            <xsl:when test="tmarc:ss = 'N'">Available</xsl:when>
-            <xsl:otherwise>
-             <xsl:value-of select="tmarc:sd"/>
-           </xsl:otherwise>
-         </xsl:choose>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="tmarc:d948">
-        <pz:metadata type="holding">
-          <xsl:for-each select="tmarc:s">
-            <xsl:if test="position() > 1">
-              <xsl:text> </xsl:text>
-            </xsl:if>
-            <xsl:value-of select="." />
-          </xsl:for-each>
-        </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="tmarc:d991">
-        <pz:metadata type="holding">
-          <xsl:for-each select="tmarc:s">
-            <xsl:if test="position() > 1">
-              <xsl:text> </xsl:text>
-            </xsl:if>
-            <xsl:value-of select="." />
-          </xsl:for-each>
-        </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="tmarc:d999">
-        <pz:metadata type="localid">
-          <xsl:choose>
-            <xsl:when test="tmarc:sa">
-              <xsl:value-of select="tmarc:sa"/>
-            </xsl:when>
-            <xsl:when test="tmarc:sc">
-              <xsl:value-of select="tmarc:sc"/>
-            </xsl:when> 
-            <xsl:otherwise>
-              <xsl:value-of select="tmarc:sd"/>
-            </xsl:otherwise>
-          </xsl:choose>
-        </pz:metadata>
-      </xsl:for-each>
-
-
-      <!-- passthrough id data -->
-      <xsl:for-each select="pz:metadata">
-        <xsl:copy-of select="." />
-      </xsl:for-each>
-
-      <!-- other stylesheets importing this might want to define this -->
-       <xsl:call-template name="record-hook" />
-
-    </pz:record>
-  </xsl:template>
-
-  <xsl:template match="text()" />
-
-</xsl:stylesheet>
diff --git a/etc/unimarc.xsl b/etc/unimarc.xsl
deleted file mode 100644 (file)
index 4842e24..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet
-    version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
-    xmlns:marc="http://www.loc.gov/MARC21/slim">
-
- <xsl:output indent="yes" method="xml" version="1.0" encoding="UTF-8"/>
-
-
-  <xsl:template match="/marc:record">
-    <pz:record>
-
-      <xsl:for-each select="marc:controlfield[@tag='001']">
-        <pz:metadata type="id">
-          <xsl:value-of select="."/>
-        </pz:metadata>
-      </xsl:for-each>
-
-      <!-- -->
-      <xsl:for-each select="marc:datafield[@tag='020']">
-       <xsl:if test="marc:subfield[@code='a'] = 'US'">
-          <pz:metadata type="lccn">
-           <xsl:value-of select="marc:subfield[@code='b']"/>
-         </pz:metadata>
-       </xsl:if>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='010']">
-        <pz:metadata type="isbn">
-         <xsl:value-of select="marc:subfield[@code='a']"/>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag='011']">
-        <pz:metadata type="issn">
-         <xsl:value-of select="marc:subfield[@code='a']"/>
-       </pz:metadata>
-      </xsl:for-each>
-
-
-      <xsl:for-each select="marc:datafield[@tag='200']">
-        <pz:metadata type="title">
-          <xsl:value-of select="marc:subfield[@code='a']"/>
-        </pz:metadata>
-      </xsl:for-each>
-
-
-      <!-- Date of Pulbication -->
-      <xsl:for-each select="marc:datafield[@tag='210']">
-        <pz:metadata type="date">
-         <xsl:value-of select="marc:subfield[@code='d']"/>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <!--  Usmarc 650 maps to unimarc 606 and marc21 653 maps to unimarc 610 -->
-      <xsl:for-each select="marc:datafield[@tag='606' or @tag='610']">
-       <pz:metadata type="subject">
-         <xsl:value-of select="marc:subfield[@code='a']"/>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <xsl:for-each select="marc:datafield[@tag &gt;= 300 and @tag &lt;= 345]
-                            [@tag != '325']">
-        <pz:metadata type="description">
-            <xsl:value-of select="*/text()"/>
-        </pz:metadata>
-      </xsl:for-each>
-
-
-      <!-- Author : primary, alternative and secondary responsibility (equivalent marc21 tags : 100, 700 -->
-      <xsl:for-each select="marc:datafield[@tag='700' or @tag='701' or @tag='702']">
-       <pz:metadata type="author">
-         <xsl:value-of select="marc:subfield[@code='a']"/>
-          <xsl:text>, </xsl:text>
-         <xsl:value-of select="marc:subfield[@code='b']"/>
-       </pz:metadata>
-      </xsl:for-each>
-
-      <!-- Author : marc21 tag 720 maps to unimarc 730
-      <xsl:for-each select="marc:datafield[@tag='730']">
-       <pz:metadata type="author">
-         <xsl:value-of select="marc:subfield[@code='a']"/>
-       </pz:metadata>
-      </xsl:for-each>
-      -->
-
-      <!-- -->
-      <xsl:for-each select="marc:datafield[@tag='856']">
-       <pz:metadata type="url">
-         <xsl:value-of select="marc:subfield[@code='u']"/>
-       </pz:metadata>
-      </xsl:for-each>
-
-    </pz:record>
-  </xsl:template>
-
-</xsl:stylesheet>
diff --git a/etc/usmarc.xsl b/etc/usmarc.xsl
deleted file mode 100644 (file)
index 12346c8..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet
-    version="1.0"
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-    xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
-    xmlns:marc="http://www.loc.gov/MARC21/slim">
-  
-  <xsl:output indent="yes" method="xml" version="1.0" encoding="UTF-8"/>
-
-  <xsl:include href="marc21.xsl"/>
-
-</xsl:stylesheet>
diff --git a/etc/xsl/.gitignore b/etc/xsl/.gitignore
new file mode 100644 (file)
index 0000000..46d2c87
--- /dev/null
@@ -0,0 +1,5 @@
+*.log
+*.log.xml
+*.dif
+Makefile
+Makefile.in
diff --git a/etc/xsl/Makefile.am b/etc/xsl/Makefile.am
new file mode 100644 (file)
index 0000000..ce95cd4
--- /dev/null
@@ -0,0 +1,9 @@
+TESTS = $(check_SCRIPTS)
+
+check_SCRIPTS = test_xsl.sh
+
+dist-hook:
+       rm -f ${srcdir}/*.log.xml
+       cp ${srcdir}/*.xml $(distdir)
+       cp ${srcdir}/*.xsl $(distdir)
+
diff --git a/etc/xsl/MarcXML2TurboMarc.xsl b/etc/xsl/MarcXML2TurboMarc.xsl
new file mode 100644 (file)
index 0000000..566fe03
--- /dev/null
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Converts MarcXML to TurboMarc
+    (to benefit from pazpar2's improved tmarc.xsl)
+
+    Also includes a provision to handle PicaMarc where datafield names can
+    contain a @ that is changed to Ä to give valid XML.
+    2010-2011
+    Sven-S. Porst, SUB Göttingen <porst@sub.uni-goettingen.de>
+-->
+<xsl:stylesheet
+   version="1.0"
+   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+   xmlns:tmarc="http://www.indexdata.com/turbomarc"
+   xmlns:marc="http://www.loc.gov/MARC21/slim">
+
+<xsl:output indent="yes" method="xml" version="1.0" encoding="UTF-8"/>
+
+<xsl:template match="@*|node()">
+  <xsl:copy>
+    <xsl:apply-templates select="@*|node()"/>
+    </xsl:copy>
+</xsl:template>
+
+
+<xsl:template match="record|marc:record">
+  <xsl:element name="r" namespace="http://www.indexdata.com/turbomarc">
+    <xsl:apply-templates select="@*|node()"/>
+    </xsl:element>
+</xsl:template>
+
+
+<xsl:template match="leader|marc:leader">
+  <xsl:element name="l" namespace="http://www.indexdata.com/turbomarc">
+    <xsl:apply-templates select="@*|node()"/>
+    </xsl:element>
+</xsl:template>
+
+
+<xsl:template match="controlfield|datafield|subfield|marc:controlfield|marc:datafield|marc:subfield">
+  <!--
+      Try to mock Indexdata's specification without regexps:
+      Translate all allowed characters to 'a' and assume field names are
+      shorter than 62 characters.
+      Given the typical 3 digit Marc field numbers this seems
+      safe in the practical cases I have seen.
+
+      http://www.indexdata.com/blog/2010/05/turbomarc-faster-xml-marc-records
+      http://www.indexdata.com/yaz/doc/marc.html
+      -->
+
+  <xsl:variable name="allowedCharacters" select="'0123465789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@'"/>
+  <xsl:variable name="manyAs" select="'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'"/>
+
+  <xsl:choose>
+    <xsl:when test="(name(.)='datafield' or name(.)='controlfield') and
+                   contains($manyAs, translate(@tag, $allowedCharacters, $manyAs))">
+      <xsl:element name="{concat(substring(local-name(),1,1), translate(@tag,'@','Ä'))}"
+                  namespace="http://www.indexdata.com/turbomarc">
+       <xsl:apply-templates select="@*[name(.)!='tag']|node()"/>
+       </xsl:element>
+      </xsl:when>
+
+    <xsl:when test="name(.)='subfield' and
+                   contains($manyAs, translate(@code, $allowedCharacters, $manyAs))">
+      <xsl:element name="{concat(substring(local-name(),1,1), @code)}"
+                  namespace="http://www.indexdata.com/turbomarc">
+       <xsl:apply-templates select="@*[name(.)!='code']|node()"/>
+       </xsl:element>
+      </xsl:when>
+
+    <xsl:otherwise>
+      <xsl:copy>
+       <xsl:apply-templates select="@*|node()"/>
+       </xsl:copy>
+      </xsl:otherwise>
+    </xsl:choose>
+</xsl:template>
+
+
+</xsl:stylesheet>
diff --git a/etc/xsl/cf.xsl b/etc/xsl/cf.xsl
new file mode 100644 (file)
index 0000000..61edc04
--- /dev/null
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    This stylesheet expects Connector Frameworks records
+-->
+<xsl:stylesheet
+    version="1.0"
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
+    xmlns:dc="http://purl.org/dc/elements/1.1/"
+    xmlns:siebel="http://loc.gov/siebel/elements/1.0/" >
+
+ <xsl:output indent="yes"
+        method="xml"
+        version="1.0"
+        encoding="UTF-8"/>
+
+  <xsl:param name="medium" />
+
+  <!-- Use medium parameter if given. Default to medium from connector -->
+  <xsl:template match="/record">
+    <pz:record>
+      <pz:metadata type="medium">
+        <xsl:choose>
+          <xsl:when test="string-length($medium)">
+            <xsl:value-of select="$medium" />
+          </xsl:when>
+          <xsl:otherwise>
+            <xsl:if test="medium">
+             <xsl:value-of select="medium" />
+            </xsl:if>
+          </xsl:otherwise>
+        </xsl:choose>
+      </pz:metadata>
+      <xsl:apply-templates/>
+    </pz:record>
+  </xsl:template>
+
+  <!--
+      The elements mapped in the following clauses should be kept more
+      or less in sync with those named in builder/templates/search.cft
+      in the "cf" git module.
+  -->
+
+  <xsl:template match="date">
+    <pz:metadata type="publication-date">
+      <xsl:value-of select="."/>
+    </pz:metadata>
+    <pz:metadata type="date">
+      <xsl:value-of select="."/>
+    </pz:metadata>
+  </xsl:template>
+
+  <xsl:template match="url">
+    <pz:metadata type="electronic-url">
+      <xsl:value-of select="."/>
+    </pz:metadata>
+  </xsl:template>
+
+  <xsl:template match="title">
+    <pz:metadata type="title">
+      <xsl:value-of select="."/>
+    </pz:metadata>
+    <pz:metadata type="title-complete">
+      <xsl:value-of select="." />
+    </pz:metadata>
+  </xsl:template>
+
+  <xsl:template match="journaltitle">
+    <pz:metadata type="journal-title">
+      <xsl:value-of select="."/>
+    </pz:metadata>
+  </xsl:template>
+
+  <!--
+    According to cf/builder/templates/parseTask.cff, connectors can
+    also generate a "holding" field, but it's not clear how that is
+    different from "item".  Perhaps this "item" rule should also
+    handle "holding" in the same way?
+  -->
+
+  <xsl:template match="item">
+    <pz:metadata type="due" empty="PAZPAR2_NULL_VALUE">
+      <xsl:value-of select="due"/>
+    </pz:metadata>
+    <pz:metadata type="locallocation" empty="PAZPAR2_NULL_VALUE">
+      <xsl:value-of select="location"/>
+    </pz:metadata>
+    <pz:metadata type="callnumber" empty="PAZPAR2_NULL_VALUE">
+      <xsl:value-of select="callno"/>
+    </pz:metadata>
+    <pz:metadata type="available" empty="PAZPAR_NULL_VALUE">
+      <xsl:value-of select="available"/>
+    </pz:metadata>
+    <pz:metadata type="publicnote" empty="PAZPAR2_NULL_VALUE">
+      <xsl:value-of select="publicnote"/>
+    </pz:metadata>
+  </xsl:template>
+
+  <xsl:template match="location">
+    <pz:metadata type="locallocation">
+      <xsl:value-of select="."/>
+    </pz:metadata>
+  </xsl:template>
+
+  <xsl:template match="callno">
+    <pz:metadata type="callnumber">
+      <xsl:value-of select="."/>
+    </pz:metadata>
+  </xsl:template>
+  
+  <!-- no-op template to avoid printing medium out --> 
+  <xsl:template match="medium" />
+
+  <xsl:template match="*" >
+    <pz:metadata type="{local-name()}">
+      <xsl:value-of select="."/>
+    </pz:metadata>
+  </xsl:template>
+
+  <xsl:template match="text()"/>
+
+</xsl:stylesheet>
diff --git a/etc/xsl/cf1.res.xml b/etc/xsl/cf1.res.xml
new file mode 100644 (file)
index 0000000..6a243c0
--- /dev/null
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<pz:record xmlns:pz="http://www.indexdata.com/pazpar2/1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:siebel="http://loc.gov/siebel/elements/1.0/">
+  <pz:metadata type="medium"/>
+  <pz:metadata type="publication-date">2013 </pz:metadata>
+  <pz:metadata type="date">2013 </pz:metadata>
+  <pz:metadata type="electronic-url">http://agricola.nal.usda.gov/cgi-bin/Pwebrecon.cgi?v1=1&amp;ti=1,1&amp;SAB1=mankind&amp;BOOL1=all%20of%20these&amp;FLD1=Keyword%20Anywhere%20%28GKEY%29&amp;GRP1=AND%20with%20next%20set&amp;SAB2=&amp;BOOL2=any%20of%20these&amp;FLD2=Subject%20%28SKEY%29&amp;GRP2=AND%20with%20next%20set&amp;SAB3=&amp;BOOL3=as%20a%20phrase&amp;FLD3=Title%20%28TKEY%29&amp;GRP3=AND%20with%20next%20set&amp;SAB4=&amp;BOOL4=as%20a%20phrase&amp;FLD4=Author%20Name%20%28NKEY%29&amp;CNT=25&amp;PID=j4FOGuOTymu6tJsbPHH3Q3yGIH7DxM&amp;SEQ=20140519072849&amp;SID=1</pz:metadata>
+  <pz:metadata type="title">Biotechnological applications of microalgae : biodiesel and value added products</pz:metadata>
+  <pz:metadata type="title-complete">Biotechnological applications of microalgae : biodiesel and value added products</pz:metadata>
+  <pz:metadata type="author"/>
+  <pz:metadata type="due" empty="PAZPAR2_NULL_VALUE"/>
+  <pz:metadata type="locallocation" empty="PAZPAR2_NULL_VALUE">Stacks</pz:metadata>
+  <pz:metadata type="callnumber" empty="PAZPAR2_NULL_VALUE">TP248.27.A46 B56 2013</pz:metadata>
+  <pz:metadata type="available" empty="PAZPAR_NULL_VALUE">Available</pz:metadata>
+  <pz:metadata type="publicnote" empty="PAZPAR2_NULL_VALUE"/>
+</pz:record>
diff --git a/etc/xsl/cf1.xml b/etc/xsl/cf1.xml
new file mode 100644 (file)
index 0000000..603f643
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<record>
+  <date>2013 </date>
+  <url>http://agricola.nal.usda.gov/cgi-bin/Pwebrecon.cgi?v1=1&amp;ti=1,1&amp;SAB1=mankind&amp;BOOL1=all%20of%20these&amp;FLD1=Keyword%20Anywhere%20%28GKEY%29&amp;GRP1=AND%20with%20next%20set&amp;SAB2=&amp;BOOL2=any%20of%20these&amp;FLD2=Subject%20%28SKEY%29&amp;GRP2=AND%20with%20next%20set&amp;SAB3=&amp;BOOL3=as%20a%20phrase&amp;FLD3=Title%20%28TKEY%29&amp;GRP3=AND%20with%20next%20set&amp;SAB4=&amp;BOOL4=as%20a%20phrase&amp;FLD4=Author%20Name%20%28NKEY%29&amp;CNT=25&amp;PID=j4FOGuOTymu6tJsbPHH3Q3yGIH7DxM&amp;SEQ=20140519072849&amp;SID=1</url>
+  <title>Biotechnological applications of microalgae : biodiesel and value added products</title>
+  <author></author>
+  <item>
+    <location>Stacks</location>
+    <callno>TP248.27.A46 B56 2013</callno>
+    <available>Available</available>
+  </item>
+</record>
diff --git a/etc/xsl/danmarc2.xsl b/etc/xsl/danmarc2.xsl
new file mode 100644 (file)
index 0000000..7e595b1
--- /dev/null
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet
+    version="1.0"
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
+    xmlns:marc="http://www.loc.gov/MARC21/slim">
+
+
+  <xsl:output indent="yes" method="xml" version="1.0" encoding="UTF-8"/>
+
+<!-- Beginnings of Danmarc2 XSL.
+
+   This is just USMARC with minor tweaks.. Not complete!
+-->
+  <xsl:include href="pz2-ourl-marc21.xsl" />
+
+  <xsl:template match="/marc:record">
+    <xsl:variable name="title_medium" select="marc:datafield[@tag='245']/marc:subfield[@code='h']"/>
+    <xsl:variable name="journal_title" select="marc:datafield[@tag='773']/marc:subfield[@code='t']"/>
+    <xsl:variable name="electronic_location_url" select="marc:datafield[@tag='856']/marc:subfield[@code='u']"/>
+    <xsl:variable name="fulltext_a" select="marc:datafield[@tag='900']/marc:subfield[@code='a']"/>
+    <xsl:variable name="fulltext_b" select="marc:datafield[@tag='900']/marc:subfield[@code='b']"/>
+    <xsl:variable name="medium">
+      <xsl:choose>
+       <xsl:when test="$title_medium">
+         <xsl:value-of select="substring-after(substring-before($title_medium,']'),'[')"/>
+       </xsl:when>
+       <xsl:when test="$fulltext_a">
+         <xsl:text>electronic resource</xsl:text>
+       </xsl:when>
+       <xsl:when test="$fulltext_b">
+         <xsl:text>electronic resource</xsl:text>
+       </xsl:when>
+       <xsl:when test="$electronic_location_url">
+         <xsl:text>electronic resource</xsl:text>
+       </xsl:when>
+       <xsl:when test="$journal_title">
+         <xsl:text>article</xsl:text>
+       </xsl:when>
+       <xsl:otherwise>
+         <xsl:text>book</xsl:text>
+       </xsl:otherwise>
+      </xsl:choose>
+    </xsl:variable>
+
+    <pz:record>
+      <xsl:attribute name="mergekey">
+        <xsl:text>title </xsl:text>
+       <xsl:value-of select="marc:datafield[@tag='245']/marc:subfield[@code='a']"/>
+       <xsl:text> author </xsl:text>
+       <xsl:value-of select="marc:datafield[@tag='100']/marc:subfield[@code='a']"/>
+       <xsl:text> medium </xsl:text>
+       <xsl:value-of select="$medium"/>
+      </xsl:attribute>
+
+
+      <xsl:for-each select="marc:datafield[@tag='001']/marc:subfield[@code='a']">
+        <pz:metadata type="id">
+          <xsl:value-of select="."/>
+        </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='010']">
+        <pz:metadata type="lccn">
+         <xsl:value-of select="marc:subfield[@code='a']"/>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='020']">
+        <pz:metadata type="isbn">
+         <xsl:value-of select="marc:subfield[@code='a']"/>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='022']">
+        <pz:metadata type="issn">
+         <xsl:value-of select="marc:subfield[@code='a']"/>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='027']">
+        <pz:metadata type="tech-rep-nr">
+         <xsl:value-of select="marc:subfield[@code='a']"/>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='100']">
+       <pz:metadata type="author">
+         <xsl:value-of select="marc:subfield[@code='a']"/>
+       </pz:metadata>
+       <pz:metadata type="author-title">
+         <xsl:value-of select="marc:subfield[@code='c']"/>
+       </pz:metadata>
+       <pz:metadata type="author-date">
+         <xsl:value-of select="marc:subfield[@code='d']"/>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='110']">
+       <pz:metadata type="corporate-name">
+           <xsl:value-of select="marc:subfield[@code='a']"/>
+       </pz:metadata>
+       <pz:metadata type="corporate-location">
+           <xsl:value-of select="marc:subfield[@code='c']"/>
+       </pz:metadata>
+       <pz:metadata type="corporate-date">
+           <xsl:value-of select="marc:subfield[@code='d']"/>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='111']">
+       <pz:metadata type="meeting-name">
+           <xsl:value-of select="marc:subfield[@code='a']"/>
+       </pz:metadata>
+       <pz:metadata type="meeting-location">
+           <xsl:value-of select="marc:subfield[@code='c']"/>
+       </pz:metadata>
+       <pz:metadata type="meeting-date">
+           <xsl:value-of select="marc:subfield[@code='d']"/>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='260']">
+       <pz:metadata type="date">
+           <xsl:value-of select="marc:subfield[@code='c']"/>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='245']">
+        <pz:metadata type="title">
+          <xsl:value-of select="marc:subfield[@code='a']"/>
+        </pz:metadata>
+        <pz:metadata type="title-remainder">
+          <xsl:value-of select="marc:subfield[@code='b']"/>
+        </pz:metadata>
+        <pz:metadata type="title-responsibility">
+          <xsl:value-of select="marc:subfield[@code='c']"/>
+        </pz:metadata>
+        <pz:metadata type="title-dates">
+          <xsl:value-of select="marc:subfield[@code='f']"/>
+        </pz:metadata>
+        <pz:metadata type="title-medium">
+          <xsl:value-of select="marc:subfield[@code='h']"/>
+        </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='250']">
+       <pz:metadata type="edition">
+           <xsl:value-of select="marc:subfield[@code='a']"/>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='260']">
+        <pz:metadata type="publication-place">
+         <xsl:value-of select="marc:subfield[@code='a']"/>
+       </pz:metadata>
+        <pz:metadata type="publication-name">
+         <xsl:value-of select="marc:subfield[@code='b']"/>
+       </pz:metadata>
+        <pz:metadata type="publication-date">
+         <xsl:value-of select="marc:subfield[@code='c']"/>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='300']">
+       <pz:metadata type="physical-extent">
+         <xsl:value-of select="marc:subfield[@code='a']"/>
+       </pz:metadata>
+       <pz:metadata type="physical-format">
+         <xsl:value-of select="marc:subfield[@code='b']"/>
+       </pz:metadata>
+       <pz:metadata type="physical-dimensions">
+         <xsl:value-of select="marc:subfield[@code='c']"/>
+       </pz:metadata>
+       <pz:metadata type="physical-accomp">
+         <xsl:value-of select="marc:subfield[@code='e']"/>
+       </pz:metadata>
+       <pz:metadata type="physical-unittype">
+         <xsl:value-of select="marc:subfield[@code='f']"/>
+       </pz:metadata>
+       <pz:metadata type="physical-unitsize">
+         <xsl:value-of select="marc:subfield[@code='g']"/>
+       </pz:metadata>
+       <pz:metadata type="physical-specified">
+         <xsl:value-of select="marc:subfield[@code='3']"/>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='440']">
+       <pz:metadata type="series-title">
+         <xsl:value-of select="marc:subfield[@code='a']"/>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag &gt;= 500 and @tag &lt;= 599]
+                           [@tag != '506' and @tag != '530' and
+                           @tag != '540' and @tag != '546'
+                            and @tag != '522']">
+       <pz:metadata type="description">
+            <xsl:value-of select="*/text()"/>
+        </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='650' or @tag='653'
+          or @tag='630' or @tag='666']">
+
+         <xsl:for-each select="marc:subfield">
+               <pz:metadata type="subject">
+                       <xsl:value-of select="."/>
+               </pz:metadata>
+         </xsl:for-each>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='856']">
+       <pz:metadata type="electronic-url">
+         <xsl:value-of select="marc:subfield[@code='u']"/>
+       </pz:metadata>
+       <pz:metadata type="electronic-text">
+         <xsl:value-of select="marc:subfield[@code='y']"/>
+       </pz:metadata>
+       <pz:metadata type="electronic-note">
+         <xsl:value-of select="marc:subfield[@code='z']"/>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='773']">
+       <pz:metadata type="citation">
+         <xsl:for-each select="*">
+           <xsl:value-of select="normalize-space(.)"/>
+           <xsl:text> </xsl:text>
+         </xsl:for-each>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <pz:metadata type="medium">
+       <xsl:value-of select="$medium"/>
+      </pz:metadata>
+
+      <xsl:if test="$fulltext_a">
+       <pz:metadata type="fulltext">
+         <xsl:value-of select="$fulltext_a"/>
+       </pz:metadata>
+      </xsl:if>
+
+      <xsl:if test="$fulltext_b">
+       <pz:metadata type="fulltext">
+         <xsl:value-of select="$fulltext_b"/>
+       </pz:metadata>
+      </xsl:if>
+
+      <xsl:if test="$open_url_resolver">
+        <pz:metadata type="open-url">
+            <xsl:call-template name="insert-md-openurl" />
+        </pz:metadata>
+      </xsl:if>
+
+    </pz:record>
+
+  </xsl:template>
+
+</xsl:stylesheet>
diff --git a/etc/xsl/dc.xsl b/etc/xsl/dc.xsl
new file mode 100644 (file)
index 0000000..d9ae36d
--- /dev/null
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    This stylesheet expects oai/dc records
+-->
+<xsl:stylesheet
+    version="1.0"
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
+    xmlns:dc="http://purl.org/dc/elements/1.1/"
+    xmlns:dcterms="http://purl.org/dc/terms/">
+
+ <xsl:output indent="yes"
+        method="xml"
+        version="1.0"
+        encoding="UTF-8"/>
+
+  <xsl:param name="medium" />
+
+  <xsl:template match="/*">
+    <pz:record>
+
+      <pz:metadata type="id">
+        <xsl:value-of select="dc:identifier"/>
+      </pz:metadata>
+
+      <xsl:for-each select="dc:title">
+        <pz:metadata type="title">
+          <xsl:value-of select="."/>
+        </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="dc:date">
+        <pz:metadata type="date">
+         <xsl:value-of select="."/>
+             </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="dc:subject">
+        <pz:metadata type="subject">
+               <xsl:value-of select="."/>
+             </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="dc:creator">
+             <pz:metadata type="author">
+          <xsl:value-of select="."/>
+             </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="dc:description">
+        <pz:metadata type="description">
+               <xsl:value-of select="."/>
+             </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="dc:identifier">
+        <pz:metadata type="electronic-url">
+               <xsl:value-of select="."/>
+             </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="dc:type">
+        <pz:metadata type="medium">
+               <xsl:value-of select="."/>
+             </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="dcterms:bibliographicCitation">
+        <pz:metadata type="citation">
+          <xsl:value-of select="."/>
+        </pz:metadata>
+      </xsl:for-each>
+
+      <pz:metadata type="medium">
+        <xsl:value-of select="$medium" />
+      </pz:metadata>
+
+    </pz:record>
+  </xsl:template>
+
+  <xsl:template match="text()"/>
+
+</xsl:stylesheet>
diff --git a/etc/xsl/dkabm.xsl b/etc/xsl/dkabm.xsl
new file mode 100644 (file)
index 0000000..ca135b6
--- /dev/null
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    This stylesheet expects dkabm collection records as returned
+    from DBC's OpenSearch service.
+-->
+<xsl:stylesheet
+    version="1.0"
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
+    xmlns:dc="http://purl.org/dc/elements/1.1/"
+    xmlns:dcterms="http://purl.org/dc/terms/"
+    xmlns:dkabm="http://biblstandard.dk/abm/namespace/dkabm/"
+    xmlns:os="http://oss.dbc.dk/ns/opensearch">
+
+ <xsl:output indent="yes"
+        method="xml"
+        version="1.0"
+        encoding="UTF-8"/>
+
+  <xsl:param name="medium" />
+
+  <xsl:template match="/">
+    <pz:cluster>
+      <xsl:apply-templates/>
+    </pz:cluster>
+  </xsl:template>
+
+  <xsl:template match="os:object">
+    <pz:record>
+      <xsl:apply-templates/>
+    </pz:record>
+  </xsl:template>
+
+  <xsl:template match="os:score">
+    <pz:metadata type="score">
+      <xsl:value-of select="."/>
+    </pz:metadata>
+  </xsl:template>
+
+  <xsl:template match="dkabm:record">
+
+      <pz:metadata type="id">
+        <xsl:value-of select="dc:identifier"/>
+      </pz:metadata>
+
+      <xsl:for-each select="dc:title">
+        <pz:metadata type="title">
+          <xsl:value-of select="."/>
+        </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="dc:date">
+        <pz:metadata type="date">
+         <xsl:value-of select="."/>
+             </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="dc:subject">
+        <pz:metadata type="subject">
+               <xsl:value-of select="."/>
+             </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="dc:creator">
+             <pz:metadata type="author">
+          <xsl:value-of select="."/>
+             </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="dc:description">
+        <pz:metadata type="description">
+               <xsl:value-of select="."/>
+             </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="dc:identifier">
+        <pz:metadata type="electronic-url">
+               <xsl:value-of select="."/>
+             </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="dc:type">
+        <pz:metadata type="medium">
+               <xsl:value-of select="."/>
+             </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="dcterms:bibliographicCitation">
+        <pz:metadata type="citation">
+          <xsl:value-of select="."/>
+        </pz:metadata>
+      </xsl:for-each>
+
+      <pz:metadata type="medium">
+        <xsl:value-of select="$medium" />
+      </pz:metadata>
+
+  </xsl:template>
+
+  <xsl:template match="text()"/>
+
+</xsl:stylesheet>
diff --git a/etc/xsl/marc21-ourl.xsl b/etc/xsl/marc21-ourl.xsl
new file mode 100644 (file)
index 0000000..804c153
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet
+    version="1.0"
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
+    xmlns:marc="http://www.loc.gov/MARC21/slim">
+
+  
+  <xsl:import href="marc21.xsl" />
+  <xsl:output indent="yes" method="xml" version="1.0" encoding="UTF-8"/>
+
+  <xsl:include href="pz2-ourl-marc21.xsl" />
+
+  <xsl:template name="record-hook">
+   Our hook
+      <xsl:if test="$open_url_resolver">
+        <pz:metadata type="open-url">
+            <xsl:call-template name="insert-md-openurl" />
+        </pz:metadata>
+      </xsl:if>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/etc/xsl/marc21.xsl b/etc/xsl/marc21.xsl
new file mode 100644 (file)
index 0000000..e7bee0c
--- /dev/null
@@ -0,0 +1,467 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet
+    version="1.0"
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
+    xmlns:marc="http://www.loc.gov/MARC21/slim">
+  
+  <xsl:output indent="yes" method="xml" version="1.0" encoding="UTF-8"/>
+
+<!-- Extract metadata from MARC21/USMARC 
+      http://www.loc.gov/marc/bibliographic/ecbdhome.html
+-->  
+  <xsl:template name="record-hook"/>
+
+  <xsl:template match="/">
+    <xsl:apply-templates/>
+  </xsl:template>
+
+  <xsl:template match="marc:collection">
+    <pz:collection>
+        <xsl:apply-templates/>
+    </pz:collection>
+  </xsl:template>
+
+  <xsl:template match="marc:record">
+    <xsl:variable name="title_medium" select="marc:datafield[@tag='245']/marc:subfield[@code='h']"/>
+    <xsl:variable name="journal_title" select="marc:datafield[@tag='773']/marc:subfield[@code='t']"/>
+    <xsl:variable name="electronic_location_url" select="marc:datafield[@tag='856']/marc:subfield[@code='u']"/>
+    <xsl:variable name="fulltext_a" select="marc:datafield[@tag='900']/marc:subfield[@code='a']"/>
+    <xsl:variable name="fulltext_b" select="marc:datafield[@tag='900']/marc:subfield[@code='b']"/>
+    <xsl:variable name="medium">
+      <xsl:choose>
+       <xsl:when test="$title_medium">
+         <xsl:value-of select="translate($title_medium, ' []/', '')"/>
+       </xsl:when>
+       <xsl:when test="$fulltext_a">
+         <xsl:text>electronic resource</xsl:text>
+       </xsl:when>
+       <xsl:when test="$fulltext_b">
+         <xsl:text>electronic resource</xsl:text>
+       </xsl:when>
+       <xsl:when test="$journal_title">
+         <xsl:text>article</xsl:text>
+       </xsl:when>
+       <xsl:otherwise>
+         <xsl:text>book</xsl:text>
+       </xsl:otherwise>
+      </xsl:choose>
+    </xsl:variable>
+
+    <xsl:variable name="has_fulltext">
+      <xsl:choose>
+        <xsl:when test="marc:datafield[@tag='856']/marc:subfield[@code='q']">
+          <xsl:text>yes</xsl:text>
+        </xsl:when>
+        <xsl:when test="marc:datafield[@tag='856']/marc:subfield[@code='i']='TEXT*'">
+          <xsl:text>yes</xsl:text>
+        </xsl:when>
+        <xsl:otherwise>
+          <xsl:text>no</xsl:text>
+        </xsl:otherwise>
+      </xsl:choose>
+    </xsl:variable>
+
+    <xsl:variable name="oclc_number">
+      <xsl:variable name="c001" select='marc:controlfield[@tag="001"]' />
+      <xsl:choose>
+        <xsl:when test='contains(marc:controlfield[@tag="001"],"ocn") or
+                        contains(marc:controlfield[@tag="001"],"ocm") or
+                        contains(marc:controlfield[@tag="001"],"OCoLC")'>
+            <xsl:value-of select="marc:controlfield[@tag='001']"/>
+        </xsl:when>
+        <xsl:when test='contains(marc:datafield[@tag="035"]/marc:subfield[@code="a"],"ocn") or
+                        contains(marc:datafield[@tag="035"]/marc:subfield[@code="a"],"ocm") or
+                        contains(marc:datafield[@tag="035"]/marc:subfield[@code="a"],"OCoLC") '>
+         <xsl:value-of select="marc:datafield[@tag='035']/marc:subfield[@code='a']"/>
+        </xsl:when>
+      </xsl:choose>
+    </xsl:variable>
+
+    <xsl:variable name="date_008">
+      <xsl:choose>
+        <xsl:when test="contains('cestpudikmr', substring(marc:controlfield[@tag='008'], 7, 1))">
+          <xsl:value-of select="substring(marc:controlfield[@tag='008'], 8, 4)" />
+        </xsl:when>
+      </xsl:choose>
+    </xsl:variable>
+
+    <xsl:variable name="date_end_008">
+      <xsl:choose>
+        <xsl:when test="contains('dikmr', substring(marc:controlfield[@tag='008'], 7, 1))">
+          <xsl:value-of select="substring(marc:controlfield[@tag='008'], 12, 4)" />
+        </xsl:when>
+      </xsl:choose>
+    </xsl:variable>
+
+    <pz:record>
+      <xsl:for-each select="marc:controlfield[@tag='001']">
+        <pz:metadata type="id">
+          <xsl:value-of select="."/>
+        </pz:metadata>
+      </xsl:for-each>
+
+      <pz:metadata type="oclc-number">
+        <xsl:value-of select="$oclc_number" />
+      </pz:metadata>
+
+      <xsl:for-each select="marc:datafield[@tag='010']">
+        <pz:metadata type="lccn">
+         <xsl:value-of select="marc:subfield[@code='a']"/>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='020']">
+        <pz:metadata type="isbn">
+         <xsl:value-of select="marc:subfield[@code='a']"/>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='022']">
+        <pz:metadata type="issn">
+         <xsl:value-of select="marc:subfield[@code='a']"/>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='027']">
+        <pz:metadata type="tech-rep-nr">
+         <xsl:value-of select="marc:subfield[@code='a']"/>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='035']">
+        <pz:metadata type="system-control-nr">
+          <xsl:choose>
+            <xsl:when test="marc:subfield[@code='a']">
+              <xsl:value-of select="marc:subfield[@code='a']"/>
+            </xsl:when>
+            <xsl:otherwise>
+              <xsl:value-of select="marc:subfield[@code='b']"/>
+            </xsl:otherwise>
+          </xsl:choose>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='100']">
+       <pz:metadata type="author">
+         <xsl:value-of select="marc:subfield[@code='a']"/>
+       </pz:metadata>
+       <pz:metadata type="author-title">
+         <xsl:value-of select="marc:subfield[@code='c']"/>
+       </pz:metadata>
+       <pz:metadata type="author-date">
+         <xsl:value-of select="marc:subfield[@code='d']"/>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='110']">
+       <pz:metadata type="corporate-name">
+           <xsl:value-of select="marc:subfield[@code='a']"/>
+       </pz:metadata>
+       <pz:metadata type="corporate-location">
+           <xsl:value-of select="marc:subfield[@code='c']"/>
+       </pz:metadata>
+       <pz:metadata type="corporate-date">
+           <xsl:value-of select="marc:subfield[@code='d']"/>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='111']">
+       <pz:metadata type="meeting-name">
+           <xsl:value-of select="marc:subfield[@code='a']"/>
+       </pz:metadata>
+       <pz:metadata type="meeting-location">
+           <xsl:value-of select="marc:subfield[@code='c']"/>
+       </pz:metadata>
+       <pz:metadata type="meeting-date">
+           <xsl:value-of select="marc:subfield[@code='d']"/>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='130']">
+        <pz:metadata type="title-uniform">
+          <xsl:value-of select="marc:subfield[@code='a']" />
+        </pz:metadata>
+        <pz:metadata type="title-uniform-media">
+          <xsl:value-of select="marc:subfield[@code='m']" />
+        </pz:metadata>
+        <pz:metadata type="title-uniform-parts">
+          <xsl:value-of select="marc:subfield[@code='n']" />
+        </pz:metadata>
+        <pz:metadata type="title-uniform-partname">
+          <xsl:value-of select="marc:subfield[@code='p']" />
+        </pz:metadata>
+        <pz:metadata type="title-uniform-key">
+          <xsl:value-of select="marc:subfield[@code='r']" />
+        </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='260']">
+        <pz:metadata type="date">
+          <xsl:value-of select="translate(marc:subfield[@code='c'], 'cp[].', '')" />
+        </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:if test="$date_008 and not(marc:datafield[@tag='260'])">
+        <pz:metadata type="date">
+          <xsl:choose>
+            <xsl:when test="$date_end_008">
+              <xsl:value-of select="concat($date_008,'-',$date_end_008)" />
+            </xsl:when>
+            <xsl:otherwise> 
+              <xsl:value-of select="$date_008" />
+            </xsl:otherwise>
+          </xsl:choose>
+        </pz:metadata>
+      </xsl:if>
+
+      <xsl:for-each select="marc:datafield[@tag='245']">
+        <pz:metadata type="title">
+          <xsl:value-of select="marc:subfield[@code='a']"/>
+        </pz:metadata>
+        <pz:metadata type="title-remainder">
+          <xsl:value-of select="marc:subfield[@code='b']"/>
+        </pz:metadata>
+        <pz:metadata type="title-responsibility">
+          <xsl:value-of select="marc:subfield[@code='c']"/>
+        </pz:metadata>
+        <pz:metadata type="title-dates">
+          <xsl:value-of select="marc:subfield[@code='f']"/>
+        </pz:metadata>
+        <pz:metadata type="title-medium">
+          <xsl:value-of select="marc:subfield[@code='h']"/>
+        </pz:metadata>
+        <pz:metadata type="title-number-section">
+          <xsl:value-of select="marc:subfield[@code='n']"/>
+        </pz:metadata>
+        <pz:metadata type="title-complete">
+          <xsl:value-of select="marc:subfield[@code='a']" />
+          <xsl:if test="marc:subfield[@code='b']" ><xsl:value-of select="concat(' ', marc:subfield[@code='b'])" /></xsl:if>
+        </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='250']">
+       <pz:metadata type="edition">
+           <xsl:value-of select="marc:subfield[@code='a']"/>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='260']">
+        <pz:metadata type="publication-place">
+         <xsl:value-of select="marc:subfield[@code='a']"/>
+       </pz:metadata>
+        <pz:metadata type="publication-name">
+         <xsl:value-of select="marc:subfield[@code='b']"/>
+       </pz:metadata>
+        <pz:metadata type="publication-date">
+         <xsl:value-of select="marc:subfield[@code='c']"/>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='300']">
+       <pz:metadata type="physical-extent">
+         <xsl:value-of select="marc:subfield[@code='a']"/>
+       </pz:metadata>
+       <pz:metadata type="physical-format">
+         <xsl:value-of select="marc:subfield[@code='b']"/>
+       </pz:metadata>
+       <pz:metadata type="physical-dimensions">
+         <xsl:value-of select="marc:subfield[@code='c']"/>
+       </pz:metadata>
+       <pz:metadata type="physical-accomp">
+         <xsl:value-of select="marc:subfield[@code='e']"/>
+       </pz:metadata>
+       <pz:metadata type="physical-unittype">
+         <xsl:value-of select="marc:subfield[@code='f']"/>
+       </pz:metadata>
+       <pz:metadata type="physical-unitsize">
+         <xsl:value-of select="marc:subfield[@code='g']"/>
+       </pz:metadata>
+       <pz:metadata type="physical-specified">
+         <xsl:value-of select="marc:subfield[@code='3']"/>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='440']">
+       <pz:metadata type="series-title">
+         <xsl:value-of select="marc:subfield[@code='a']"/>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag = '500' or @tag = '505' or
+               @tag = '518' or @tag = '520' or @tag = '522']">
+       <pz:metadata type="description">
+            <xsl:value-of select="*/text()"/>
+        </pz:metadata>
+      </xsl:for-each>
+
+       <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']">
+               <pz:metadata type="subject">
+                       <xsl:value-of select="marc:subfield[@code='a']" />
+               </pz:metadata>
+               <pz:metadata type="subject-long">
+                       <xsl:for-each select="node()/text()">
+                               <xsl:if test="position() > 1">
+                                       <xsl:text>, </xsl:text>
+                               </xsl:if>
+                               <xsl:variable name='value'>
+                                       <xsl:value-of select='normalize-space(.)' />
+                               </xsl:variable>
+                               <xsl:choose>
+                                       <xsl:when test="substring($value,string-length($value)) = ','">
+                                               <xsl:value-of select="substring($value,1,string-length($value)-1)" />
+                                       </xsl:when>
+                                       <xsl:otherwise>
+                                               <xsl:value-of select="$value" />
+                                       </xsl:otherwise>
+                               </xsl:choose>
+                       </xsl:for-each>
+               </pz:metadata>
+       </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='856']">
+       <pz:metadata type="electronic-url">
+         <xsl:value-of select="marc:subfield[@code='u']"/>
+       </pz:metadata>
+       <pz:metadata type="electronic-text">
+         <xsl:value-of select="marc:subfield[@code='y' or @code='3' or @code='a']"/>
+       </pz:metadata>
+       <pz:metadata type="electronic-note">
+         <xsl:value-of select="marc:subfield[@code='z']"/>
+       </pz:metadata>
+       <pz:metadata type="electronic-format-instruction">
+         <xsl:value-of select="marc:subfield[@code='i']"/>
+       </pz:metadata>
+       <pz:metadata type="electronic-format-type">
+         <xsl:value-of select="marc:subfield[@code='q']"/>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='773']">
+       <pz:metadata type="citation">
+             <xsl:for-each select="*">
+               <xsl:value-of select="normalize-space(.)"/>
+               <xsl:text> </xsl:text>
+         </xsl:for-each>
+        </pz:metadata>
+        <xsl:if test="marc:subfield[@code='t']">
+         <pz:metadata type="journal-title">
+               <xsl:value-of select="marc:subfield[@code='t']"/>
+          </pz:metadata>          
+        </xsl:if>
+        <xsl:if test="marc:subfield[@code='g']">
+         <pz:metadata type="journal-subpart">
+               <xsl:value-of select="marc:subfield[@code='g']"/>
+          </pz:metadata>          
+        </xsl:if>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='852']">
+        <xsl:if test="marc:subfield[@code='y']">
+         <pz:metadata type="publicnote">
+           <xsl:value-of select="marc:subfield[@code='y']"/>
+         </pz:metadata>
+       </xsl:if>
+       <xsl:if test="marc:subfield[@code='h']">
+         <pz:metadata type="callnumber">
+           <xsl:value-of select="marc:subfield[@code='h']"/>
+         </pz:metadata>
+       </xsl:if>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='900']/marc:subfield[@code='a']">
+        <pz:metadata type="fulltext">
+          <xsl:value-of select="."/>
+        </pz:metadata>
+      </xsl:for-each>
+
+      <pz:metadata type="medium">
+        <xsl:value-of select="$medium"/>
+      </pz:metadata>
+
+      <pz:metadata type="has-fulltext">
+        <xsl:value-of select="$has_fulltext"/> 
+      </pz:metadata>
+
+      <xsl:for-each select="marc:datafield[@tag='900']/marc:subfield[@code='b']">
+        <pz:metadata type="fulltext">
+          <xsl:value-of select="."/>
+        </pz:metadata>
+      </xsl:for-each>
+
+      <!-- <xsl:if test="$fulltext_b">
+       <pz:metadata type="fulltext">
+         <xsl:value-of select="$fulltext_b"/>
+       </pz:metadata>
+      </xsl:if> -->
+
+      <xsl:for-each select="marc:datafield[@tag='907' or @tag='901']">
+        <pz:metadata type="iii-id">
+         <xsl:value-of select="marc:subfield[@code='a']"/>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='926']">
+        <pz:metadata type="holding">
+         <xsl:for-each select="marc:subfield">
+           <xsl:if test="position() > 1">
+             <xsl:text> </xsl:text>
+           </xsl:if>
+           <xsl:value-of select="."/>
+         </xsl:for-each>
+        </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='948']">
+        <pz:metadata type="holding">
+         <xsl:for-each select="marc:subfield">
+           <xsl:if test="position() > 1">
+             <xsl:text> </xsl:text>
+           </xsl:if>
+           <xsl:value-of select="."/>
+         </xsl:for-each>
+        </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='991']">
+        <pz:metadata type="holding">
+         <xsl:for-each select="marc:subfield">
+           <xsl:if test="position() > 1">
+             <xsl:text> </xsl:text>
+           </xsl:if>
+           <xsl:value-of select="."/>
+         </xsl:for-each>
+        </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='999']">
+        <pz:metadata type="localid">
+          <xsl:choose>
+            <xsl:when test="marc:subfield[@code='a']">
+              <xsl:value-of select="marc:subfield[@code='a']"/>
+            </xsl:when>
+            <xsl:when test="marc:subfield[@code='c']">
+              <xsl:value-of select="marc:subfield[@code='c']"/>
+            </xsl:when> 
+            <xsl:otherwise>
+              <xsl:value-of select="marc:subfield[@code='d']"/>
+            </xsl:otherwise>
+          </xsl:choose>
+        </pz:metadata>
+      </xsl:for-each>
+
+      <!-- passthrough id data -->
+      <xsl:for-each select="pz:metadata">
+          <xsl:copy-of select="."/>
+      </xsl:for-each>
+
+      <!-- other stylesheets importing this might want to define this -->
+      <xsl:call-template name="record-hook"/>
+
+    </pz:record>    
+  </xsl:template>
+  
+  <xsl:template match="text()"/>
+
+</xsl:stylesheet>
diff --git a/etc/xsl/oai_dc.xsl b/etc/xsl/oai_dc.xsl
new file mode 100644 (file)
index 0000000..36757cc
--- /dev/null
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    This stylesheet expects oai/dc records
+-->
+<xsl:stylesheet
+    version="1.0"
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
+    xmlns:oai="http://www.openarchives.org/OAI/2.0/"
+    xmlns:dc="http://purl.org/dc/elements/1.1/"
+    xmlns:dcterms="http://purl.org/dc/terms/">
+
+ <xsl:output indent="yes"
+        method="xml"
+        version="1.0"
+        encoding="UTF-8"/>
+
+
+
+  <xsl:template match="/oai:record/oai:metadata/*">
+    <pz:record>
+
+      <pz:metadata type="id">
+        <xsl:value-of select="/oai:record/oai:header/oai:identifier"/>
+      </pz:metadata>
+
+      <xsl:for-each select="dc:title">
+        <pz:metadata type="title">
+          <xsl:value-of select="."/>
+        </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="dc:date">
+        <pz:metadata type="date">
+         <xsl:value-of select="."/>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="dc:subject">
+        <pz:metadata type="subject">
+         <xsl:value-of select="."/>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="dc:creator">
+       <pz:metadata type="author">
+          <xsl:value-of select="."/>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="dc:description">
+        <pz:metadata type="description">
+         <xsl:value-of select="."/>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="dc:identifier">
+        <pz:metadata type="electronic-url">
+         <xsl:value-of select="."/>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="dc:type">
+        <pz:metadata type="medium">
+             <xsl:value-of select="."/>
+           </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="dcterms:bibliographicCitation">
+        <pz:metadata type="citation">
+          <xsl:value-of select="."/>
+        </pz:metadata>
+      </xsl:for-each>
+
+    </pz:record>
+  </xsl:template>
+
+
+  <xsl:template match="text()"/>
+
+</xsl:stylesheet>
diff --git a/etc/xsl/opac.xsl b/etc/xsl/opac.xsl
new file mode 100644 (file)
index 0000000..78f3b22
--- /dev/null
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet
+    version="1.0"
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
+    xmlns:marc="http://www.loc.gov/MARC21/slim">
+  
+  <xsl:import href="marc21.xsl"/>
+
+  <xsl:output indent="yes" method="xml" version="1.0" encoding="UTF-8"/>
+
+<!-- Extract metadata from OPAC records with embedded MAR records
+      http://www.loc.gov/marc/bibliographic/ecbdhome.html
+-->  
+
+  <xsl:template name="record-hook">
+    <xsl:for-each select="/opacRecord/holdings/holding">
+      <pz:metadata type="locallocation" empty="PAZPAR2_NULL_VALUE">
+       <xsl:value-of select="localLocation"/>
+      </pz:metadata>
+      <pz:metadata type="callnumber" empty="PAZPAR2_NULL_VALUE">
+       <xsl:value-of select="callNumber"/>
+      </pz:metadata>
+      <pz:metadata type="publicnote" empty="PAZPAR2_NULL_VALUE">
+       <xsl:value-of select="publicNote"/>
+      </pz:metadata>
+      <pz:metadata type="available" empty="PAZPAR2_NULL_VALUE">
+        <xsl:choose>
+          <xsl:when test="circulations/circulation/availableNow/@value = '1'">
+             Available
+          </xsl:when>
+          <xsl:when test="circulations/circulation/availableNow/@value = '0'">
+           <xsl:value-of select="circulations/circulation/availabilityDate"/>
+         </xsl:when>
+        </xsl:choose>
+      </pz:metadata>
+    </xsl:for-each>
+  </xsl:template>
+
+  <xsl:template match="/">
+    <xsl:choose>
+      <xsl:when test="opacRecord">
+        <xsl:apply-templates select="opacRecord/bibliographicRecord"/>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:apply-templates/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+</xsl:stylesheet>
diff --git a/etc/xsl/opac_turbomarc.xsl b/etc/xsl/opac_turbomarc.xsl
new file mode 100644 (file)
index 0000000..430a43e
--- /dev/null
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet
+    version="1.0"
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
+    xmlns:marc="http://www.indexdata.com/turbomarc">
+  
+  <xsl:import href="tmarc.xsl"/>
+
+  <xsl:output indent="yes" method="xml" version="1.0" encoding="UTF-8"/>
+
+<!-- Extract metadata from OPAC records with embedded MAR records
+      http://www.loc.gov/marc/bibliographic/ecbdhome.html
+-->  
+
+  <xsl:template name="record-hook">
+    <xsl:for-each select="/opacRecord/holdings/holding">
+      <pz:metadata type="locallocation" empty="PAZPAR2_NULL_VALUE">
+       <xsl:value-of select="localLocation"/>
+      </pz:metadata>
+      <pz:metadata type="callnumber" empty="PAZPAR2_NULL_VALUE">
+       <xsl:value-of select="callNumber"/>
+      </pz:metadata>
+      <pz:metadata type="publicnote" empty="PAZPAR2_NULL_VALUE">
+       <xsl:value-of select="publicNote"/>
+      </pz:metadata>
+      <pz:metadata type="available" empty="PAZPAR2_NULL_VALUE">
+        <xsl:choose>
+          <xsl:when test="circulations/circulation/availableNow/@value = '1'">
+             Available
+          </xsl:when>
+          <xsl:when test="circulations/circulation/availableNow/@value = '0'">
+           <xsl:value-of select="circulations/circulation/availabilityDate"/>
+         </xsl:when>
+        </xsl:choose>
+      </pz:metadata>
+    </xsl:for-each>
+  </xsl:template>
+  <xsl:template match="/">
+    <xsl:choose>
+      <xsl:when test="opacRecord">
+        <xsl:apply-templates select="opacRecord/bibliographicRecord"/>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:apply-templates/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+</xsl:stylesheet>
diff --git a/etc/xsl/pp2out-to-carrot2.xsl b/etc/xsl/pp2out-to-carrot2.xsl
new file mode 100644 (file)
index 0000000..5bdd7a0
--- /dev/null
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+<xsl:output indent="yes" method="xml" version="1.0" encoding="UTF-8"/>
+<xsl:template match="/">
+  <searchresult>
+    <!-- TODO make query an xsl parameter -->
+    <query>water</query>
+    <xsl:for-each select="show/hit">
+    <document>
+      <xsl:attribute name="id">
+        <xsl:value-of select="recid" />
+      </xsl:attribute>
+      <title><xsl:value-of select="md-title" /></title>
+      <url><xsl:value-of select="location/md-electronic-url" /></url>
+      <snippet xml:space="preserve">
+        <xsl:for-each select="md-description">
+          <xsl:value-of select="." />
+        </xsl:for-each>
+        <xsl:value-of select="md-title-responsibility" />
+      </snippet>
+    </document> 
+    </xsl:for-each>
+  </searchresult>
+</xsl:template>
+</xsl:stylesheet>
\ No newline at end of file
diff --git a/etc/xsl/primo-pz2.xsl b/etc/xsl/primo-pz2.xsl
new file mode 100644 (file)
index 0000000..43a92a1
--- /dev/null
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0"
+  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
+  xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
+  xmlns:tmarc="http://www.indexdata.com/turbomarc"
+  xmlns:prim="http://www.exlibrisgroup.com/xsd/primo/primo_nm_bib" 
+  xmlns:sear="http://www.exlibrisgroup.com/xsd/jaguar/search"
+>
+
+  <xsl:output indent="yes" method="xml" version="1.0"
+    encoding="UTF-8" />
+
+  <xsl:template name="record-hook" />
+
+  <xsl:variable name="type" select="/opt/prim:PrimoNMBib/prim:display/prim:type"/>
+  <xsl:variable name="is_article" select="$type = 'article'" />
+  <xsl:variable name="fulltext" select="/opt/prim:PrimoNMBib/prim:delivery/prim:fulltext"/>
+  <xsl:variable name="has_fulltext">
+    <xsl:choose>
+      <xsl:when test="$fulltext = 'no_fulltext' ">
+        <xsl:text>no</xsl:text>
+      </xsl:when>
+      <xsl:when test="$fulltext = 'fulltext'">
+        <xsl:text>yes</xsl:text>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:text>no</xsl:text>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:variable>
+
+  <xsl:template match="/">
+    <xsl:apply-templates />
+  </xsl:template>
+
+  <xsl:template match="sear:RESULT">
+    <pz:records>
+      <xsl:apply-templates />
+    </pz:records>
+  </xsl:template>
+
+  <xsl:template match="sear:DOC">
+    <pz:record>
+      <xsl:apply-templates />
+    </pz:record>
+  </xsl:template>
+
+  <xsl:template match="prim:PrimoNMBib">
+    <xsl:apply-templates />
+  </xsl:template>
+  
+  <xsl:template match="prim:control"> 
+    <xsl:for-each select="prim:recordid">
+      <pz:metadata type="id">
+       <xsl:value-of select="."/>
+      </pz:metadata>
+    </xsl:for-each>
+  </xsl:template>
+
+  <xsl:template match="prim:addata">
+    <!--    <xsl:variable name="yearmonthday" select="@date" /> -->
+
+    <xsl:for-each select="prim:date">
+      <pz:metadata type="date">
+       <xsl:value-of select="substring(.,1,4)" />
+      </pz:metadata>
+      <pz:metadata type="journal-month">
+       <xsl:value-of select="substring(.,4,1)" />
+      </pz:metadata>
+    </xsl:for-each>
+
+    <xsl:for-each select="prim:volume">
+      <pz:metadata type="journal-number">
+       <xsl:value-of select="." />
+      </pz:metadata>
+    </xsl:for-each>
+
+    <xsl:for-each select="prim:issue">
+      <pz:metadata type="issue-number">
+       <xsl:value-of select="." />
+      </pz:metadata>
+    </xsl:for-each>
+
+    <xsl:for-each select="prim:issn">
+      <pz:metadata type="issn">
+        <xsl:value-of select="." />
+      </pz:metadata>
+    </xsl:for-each>
+
+    <xsl:for-each select="prim:jtitle">
+      <pz:metadata type="journal-title">
+       <xsl:value-of select="." />
+      </pz:metadata>
+    </xsl:for-each>
+  </xsl:template>
+
+  <xsl:template match="prim:delivery">  
+
+    <xsl:if test="$has_fulltext">
+      <pz:metadata type="has-fulltext">
+        <xsl:value-of select="$has_fulltext" />
+      </pz:metadata>
+    </xsl:if>
+
+  </xsl:template>
+
+  <xsl:template match="prim:display">
+    <xsl:for-each select="prim:creator">
+       <pz:metadata type="author">
+        <xsl:value-of select="." />
+      </pz:metadata>
+    </xsl:for-each>  
+    <xsl:for-each select="prim:type">
+      <xsl:variable name="type" select="."/>
+      <pz:metadata type="medium">
+       <xsl:choose>
+          <xsl:when test="$type ='article' and $has_fulltext = 'yes'">
+           <xsl:text>e-article</xsl:text>
+         </xsl:when>
+          <xsl:when  test="$type = 'article' and $has_fulltext = 'no'">
+           <xsl:text>article</xsl:text>
+         </xsl:when>
+          <xsl:otherwise>
+            <xsl:value-of select="$type"/>
+          </xsl:otherwise>
+       </xsl:choose>
+<!--        <xsl:value-of select="$type" /> -->
+      </pz:metadata>
+      <pz:metadata type="debug_isarticle"><xsl:value-of select="$is_article"/></pz:metadata>
+    </xsl:for-each>  
+
+    <xsl:for-each select="prim:title">
+      <pz:metadata type="title">
+       <xsl:value-of select="." />
+      </pz:metadata>
+    </xsl:for-each>  
+
+    <xsl:for-each select="prim:ispartof">
+      <pz:metadata type="journal-subpart">
+       <xsl:value-of select="." />
+      </pz:metadata>
+    </xsl:for-each>
+<!--
+    <xsl:apply-templates />
+-->
+  </xsl:template>
+
+  <xsl:template match="prim:facets">
+    <xsl:for-each select="prim:topic">
+       <pz:metadata type="subject">
+        <xsl:value-of select="." />
+      </pz:metadata>
+    </xsl:for-each>  
+  </xsl:template>
+
+  <xsl:template match="sear:LINKS" >
+    <xsl:for-each select="sear:openurl"> 
+      <pz:metadata type="electronic-url">
+       <xsl:value-of select="."/>
+      </pz:metadata>
+    </xsl:for-each>
+  </xsl:template>
+
+  <xsl:template match="prim:search">
+    <xsl:for-each select="prim:description">
+      <pz:metadata type="description">
+       <xsl:value-of select="." />
+      </pz:metadata>
+    </xsl:for-each>
+
+
+    <xsl:for-each select="prim:sub">
+      <pz:metadata type="subject">
+        <xsl:value-of select="." />
+      </pz:metadata>
+    </xsl:for-each>
+
+    <!-- passthrough id data -->
+    <xsl:for-each select="pz:metadata">
+      <xsl:copy-of select="." />
+    </xsl:for-each>
+    <!-- other stylesheets importing this might want to define this -->
+
+    <xsl:call-template name="record-hook" />   
+  </xsl:template>
+
+  <xsl:template match="text()" />
+
+</xsl:stylesheet>
diff --git a/etc/xsl/pz2-ourl-base.xsl b/etc/xsl/pz2-ourl-base.xsl
new file mode 100644 (file)
index 0000000..260dc9f
--- /dev/null
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet
+    version="1.0"
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
+    xmlns:marc="http://www.loc.gov/MARC21/slim"
+    xmlns:str="http://exslt.org/strings"
+    extension-element-prefixes="str">
+
+  <xsl:param name="open_url_resolver"/>
+  <!--<xsl:variable name="resolver">http://zeus.lib.uoc.gr:3210/sfxtst3</xsl:variable>-->
+  <xsl:template name="insert-md-openurl">
+  
+    <xsl:value-of select="$open_url_resolver" /><xsl:text>?generatedby=pz2</xsl:text>
+    <xsl:call-template name="ou-parse-author" />
+    <xsl:call-template name="ou-parse-date" />
+    <xsl:call-template name="ou-parse-volume" />
+    <xsl:call-template name="ou-parse-any">
+      <xsl:with-param name="field_name" select="string('isbn')" />
+    </xsl:call-template>
+    <xsl:call-template name="ou-parse-any">
+      <xsl:with-param name="field_name" select="string('issn')" />
+    </xsl:call-template>
+    <xsl:call-template name="ou-parse-any">
+      <xsl:with-param name="field_name" select="string('title')" />
+    </xsl:call-template>
+    <xsl:call-template name="ou-parse-any">
+      <xsl:with-param name="field_name" select="string('atitle')" />
+    </xsl:call-template>
+
+  </xsl:template>
+  <!-- parsing raw string data -->
+  
+  <xsl:template name="ou-parse-author" >
+    <xsl:variable name="author">
+      <xsl:call-template name="ou-author" />
+    </xsl:variable>
+    
+    <xsl:variable name="aulast" select="normalize-space(substring-before($author, ','))"/>
+
+    <xsl:variable name="aufirst" 
+      select="substring-before( normalize-space(substring-after($author, ',')), ' ')"/>
+
+    <xsl:if test="$aulast != ''">
+      <xsl:text>&amp;aulast=</xsl:text>
+      <xsl:value-of select="$aulast" />
+    </xsl:if>
+
+    <xsl:if test="string-length( translate($aufirst, '.', '') ) &gt; 1" >
+      <xsl:text>&amp;aufirst=</xsl:text>
+      <xsl:value-of select="$aufirst" />
+    </xsl:if>
+
+  </xsl:template>
+
+  <xsl:template name="ou-parse-volume">
+    <xsl:variable name="volume">
+      <xsl:call-template name="ou-volume" />
+    </xsl:variable>
+
+    <xsl:variable name="vol" select="substring-after($volume, 'Vol')"/>
+    <xsl:variable name="issue" select="false()" />
+    <xsl:variable name="spage" select="false()" />
+
+    <xsl:if test="$vol">
+      <xsl:text>&amp;volume=</xsl:text>
+      <xsl:value-of select="$vol" />
+    </xsl:if>
+
+    <xsl:if test="$issue">
+      <xsl:text>&amp;issue=</xsl:text>
+      <xsl:value-of select="$issue" />
+    </xsl:if>
+    
+    <xsl:if test="$spage">
+      <xsl:text>&amp;spage=</xsl:text>
+      <xsl:value-of select="$vol" />
+    </xsl:if>
+
+  </xsl:template>
+
+
+  <xsl:template name="ou-parse-date">
+    <xsl:variable name="date">
+      <xsl:call-template name="ou-date" />
+    </xsl:variable>
+
+    <xsl:variable name="parsed_date" select="translate($date, '.[]c;', '')"/>
+
+    <xsl:if test="$parsed_date">
+      <xsl:text>&amp;date=</xsl:text>
+      <xsl:value-of select="$parsed_date" />
+    </xsl:if>
+
+  </xsl:template>
+
+  
+  <xsl:template name="ou-parse-any">
+    <xsl:param name="field_name" />
+
+    <xsl:variable name="field_value">
+      <xsl:choose>
+
+      <xsl:when test="$field_name = 'isbn'">
+        <xsl:call-template name="ou-isbn"/>
+      </xsl:when>
+
+      <xsl:when test="$field_name = 'issn'">
+        <xsl:call-template name="ou-issn"/>
+      </xsl:when>
+      
+      <xsl:when test="$field_name = 'atitle'">
+        <xsl:call-template name="ou-atitle"/>
+      </xsl:when>
+     
+      <xsl:when test="$field_name = 'title'">
+        <xsl:call-template name="ou-title"/>
+      </xsl:when>
+
+      </xsl:choose>
+    </xsl:variable>
+
+    <xsl:variable name="digits" select="1234567890"/>
+
+    <xsl:variable name="parsed_value">
+      <xsl:choose>
+
+      <xsl:when test="$field_name = 'isbn'">
+        <xsl:value-of select="translate($field_value, translate($field_value, concat($digits, 'X'), ''), '')"/>
+      </xsl:when>
+
+      <xsl:when test="$field_name = 'issn'">
+        <xsl:value-of select="translate($field_value, translate($field_value, concat($digits, '-', 'X'), ''), '')"/>
+      </xsl:when>
+      
+      <xsl:when test="$field_name = 'atitle'">
+        <xsl:value-of select="translate(normalize-space($field_value), '.', '')"/>
+      </xsl:when>
+     
+      <xsl:when test="$field_name = 'title'">
+        <xsl:value-of select="translate(normalize-space($field_value), '.', '')"/>
+      </xsl:when>
+
+      </xsl:choose>
+    </xsl:variable>
+
+
+    <xsl:if test="$parsed_value != ''">
+      <xsl:text>&amp;</xsl:text>
+      <xsl:value-of select="$field_name" />
+      <xsl:text>=</xsl:text>
+      <xsl:value-of select="$parsed_value" />
+    </xsl:if>
+
+  </xsl:template>
+
+
+</xsl:stylesheet>
+<!--
+/*
+ * Local variables:
+ * c-basic-offset: 2
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=2 tabstop=4 expandtab
+ */
+-->
diff --git a/etc/xsl/pz2-ourl-marc21.xsl b/etc/xsl/pz2-ourl-marc21.xsl
new file mode 100644 (file)
index 0000000..1c8efde
--- /dev/null
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet
+    version="1.0"
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
+    xmlns:marc="http://www.loc.gov/MARC21/slim"
+    xmlns:str="http://exslt.org/strings"
+    extension-element-prefixes="str">  
+  
+  <xsl:import href="pz2-ourl-base.xsl"/>
+
+  <xsl:template name="ou-author" >
+  <!-- what to do with multiple authors??-->
+    <xsl:for-each select="marc:datafield[@tag='100' or @tag='700']">
+      <xsl:value-of select="marc:subfield[@code='a']"/>
+    </xsl:for-each>
+  </xsl:template>
+
+  <xsl:template name="ou-title" >
+  <!-- if 773 exists its a journal/article -->
+    <xsl:choose>
+    
+      <xsl:when test="marc:datafield[@tag='773']/marc:subfield[@code='t']">
+        <xsl:value-of select="marc:datafield[@tag='773']/marc:subfield[@code='t']"/>
+      </xsl:when>
+
+      <xsl:when test="marc:datafield[@tag='245']/marc:subfield[@code='a']">
+        <xsl:value-of select="marc:datafield[@tag='245']/marc:subfield[@code='a']"/>
+      </xsl:when>
+
+    </xsl:choose>
+  </xsl:template>
+
+  
+  <xsl:template name="ou-atitle" >
+    <!-- return value only if article or journal -->
+    <xsl:if test="marc:datafield[@tag='773']">
+      <xsl:value-of select="marc:datafield[@tag='245']/marc:subfield[@code='a']"/>
+    </xsl:if>
+  </xsl:template>
+
+
+  <xsl:template name="ou-date" >
+    <xsl:for-each select="marc:datafield[@tag='260']">
+      <xsl:value-of select="marc:subfield[@code='c']"/>
+    </xsl:for-each>
+  </xsl:template>
+
+  
+  <xsl:template name="ou-isbn" >
+  <!-- if 773 exists its a journal/article -->
+    <xsl:choose>  
+    
+      <xsl:when test="marc:datafield[@tag='773']/marc:subfield[@code='z']">
+        <xsl:value-of select="marc:datafield[@tag='773']/marc:subfield[@code='z']"/>
+      </xsl:when>
+      
+      <xsl:when test="marc:datafield[@tag='020']/marc:subfield[@code='a']">
+        <xsl:value-of select="marc:datafield[@tag='020']/marc:subfield[@code='a']"/>
+      </xsl:when>
+
+    </xsl:choose>
+  </xsl:template>
+
+  
+  <xsl:template name="ou-issn" >
+  <!-- if 773 exists its a journal/article -->
+    <xsl:choose>
+    
+      <xsl:when test="marc:datafield[@tag='773']/marc:subfield[@code='x']">
+        <xsl:value-of select="marc:datafield[@tag='773']/marc:subfield[@code='x']"/>
+      </xsl:when>
+
+      <xsl:when test="marc:datafield[@tag='022']/marc:subfield[@code='a']">
+        <xsl:value-of select="marc:datafield[@tag='022']/marc:subfield[@code='a']"/>
+      </xsl:when>
+
+      </xsl:choose>
+  </xsl:template>
+
+  
+  <xsl:template name="ou-volume" >
+    <xsl:if test="marc:datafield[@tag='773']">
+         <xsl:value-of select="marc:datafield[@tag='773']/marc:subfield[@code='g']"/>
+    </xsl:if>
+  </xsl:template>
+
+</xsl:stylesheet>
+<!--
+/*
+ * Local variables:
+ * c-basic-offset: 2
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=2 tabstop=4 expandtab
+ */
+-->
diff --git a/etc/xsl/solr-pz2.xsl b/etc/xsl/solr-pz2.xsl
new file mode 100644 (file)
index 0000000..5a11a53
--- /dev/null
@@ -0,0 +1,78 @@
+<?xml version="1.0"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
+               xmlns:pz="http://www.indexdata.com/pazpar2/1.0" >
+
+  <xsl:param name="medium" />
+
+  <xsl:template  match="/">
+      <xsl:apply-templates></xsl:apply-templates>
+  </xsl:template>
+
+  <xsl:template  match="response">
+      <xsl:apply-templates></xsl:apply-templates>
+  </xsl:template>
+
+  <xsl:template  match="records">
+      <xsl:apply-templates></xsl:apply-templates>
+  </xsl:template>
+
+  <xsl:template match="doc">
+    <pz:record>
+      <xsl:if test="string-length($medium) &gt; 0">
+        <pz:metadata type="medium">
+           <xsl:value-of select="$medium"/>
+        </pz:metadata>
+      </xsl:if>
+      <xsl:apply-templates></xsl:apply-templates>
+    </pz:record>
+  </xsl:template>
+
+  <xsl:template match="float[@name]">
+    <pz:metadata>
+       <xsl:attribute  name="type">
+         <xsl:value-of select="@name"/>
+       </xsl:attribute>
+       <xsl:value-of select="."/>
+    </pz:metadata>
+  </xsl:template>
+
+  <xsl:template match="str[@name]">
+    <pz:metadata>
+       <xsl:attribute  name="type">
+         <xsl:value-of select="@name"/>
+       </xsl:attribute>
+       <xsl:value-of select="."/>
+    </pz:metadata>
+  </xsl:template>
+
+  <xsl:template match="date[@name]">
+    <pz:metadata>
+       <xsl:attribute  name="type">
+         <xsl:value-of select="@name"/>
+       </xsl:attribute>
+       <xsl:value-of select="."/>
+    </pz:metadata>
+  </xsl:template>
+
+  <xsl:template match="arr">
+    <xsl:for-each select="str">
+      <xsl:call-template name="string"/>
+    </xsl:for-each>
+  </xsl:template>
+
+  <xsl:template name="string">
+    <xsl:choose>
+      <xsl:when test="../@name = 'medium' and string-length($medium) &gt; 0">
+      </xsl:when>
+      <xsl:otherwise>
+       <pz:metadata>
+         <xsl:attribute  name="type">
+           <xsl:value-of select="../@name"/>
+         </xsl:attribute>
+         <xsl:value-of select="."/>
+       </pz:metadata>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+</xsl:stylesheet>
diff --git a/etc/xsl/solr-pz21.res.xml b/etc/xsl/solr-pz21.res.xml
new file mode 100644 (file)
index 0000000..72845cd
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<pz:record xmlns:pz="http://www.indexdata.com/pazpar2/1.0">
+  <pz:metadata type="electronic-text"/>
+  <pz:metadata type="subject">Science fiction Short stories Forgers -- Fiction</pz:metadata>
+  <pz:metadata type="subject-long">Science fiction Short stories Forgers -- Fiction, PS</pz:metadata>
+  <pz:metadata type="electronic-url">http://www.gutenberg.org/ebooks/24558</pz:metadata>
+  <pz:metadata type="publication-place"/>
+  <pz:metadata type="publication-name">Project Gutenberg</pz:metadata>
+  <pz:metadata type="title-dates"/>
+  <pz:metadata type="date"/>
+  <pz:metadata type="medium">book</pz:metadata>
+  <pz:metadata type="title-number-section"/>
+  <pz:metadata type="title-responsibility"/>
+  <pz:metadata type="publication-date"/>
+  <pz:metadata type="id">3552-24558</pz:metadata>
+  <pz:metadata type="author-date"/>
+  <pz:metadata type="author">Schmitz, James H.</pz:metadata>
+  <pz:metadata type="title">Watch the Sky</pz:metadata>
+  <pz:metadata type="author-title"/>
+  <pz:metadata type="electronic-note"/>
+  <pz:metadata type="title-remainder"/>
+  <pz:metadata type="title-medium"/>
+  <pz:metadata type="database">3552</pz:metadata>
+  <pz:metadata type="harvest-timestamp">2014-04-23T08:00:01.067Z</pz:metadata>
+  <pz:metadata type="harvest-date">2014-04-23</pz:metadata>
+  1466162433409155072
+  <pz:metadata type="score">7.7963223</pz:metadata>
+</pz:record>
diff --git a/etc/xsl/solr-pz21.xml b/etc/xsl/solr-pz21.xml
new file mode 100644 (file)
index 0000000..e8c6b05
--- /dev/null
@@ -0,0 +1,68 @@
+<?xml version="1.0"?>
+<doc>
+  <arr name="electronic-text">
+    <str/>
+  </arr>
+  <arr name="subject">
+    <str>Science fiction Short stories Forgers -- Fiction</str>
+  </arr>
+  <arr name="subject-long">
+    <str>Science fiction Short stories Forgers -- Fiction, PS</str>
+  </arr>
+  <arr name="electronic-url">
+    <str>http://www.gutenberg.org/ebooks/24558</str>
+  </arr>
+  <arr name="publication-place">
+    <str/>
+  </arr>
+  <arr name="publication-name">
+    <str>Project Gutenberg</str>
+  </arr>
+  <arr name="title-dates">
+    <str/>
+  </arr>
+  <arr name="date">
+    <str/>
+  </arr>
+  <arr name="medium">
+    <str>book</str>
+  </arr>
+  <arr name="title-number-section">
+    <str/>
+  </arr>
+  <arr name="title-responsibility">
+    <str/>
+  </arr>
+  <arr name="publication-date">
+    <str/>
+  </arr>
+  <str name="id">3552-24558</str>
+  <arr name="author-date">
+    <str/>
+  </arr>
+  <arr name="author">
+    <str>Schmitz, James H.</str>
+  </arr>
+  <arr name="title">
+    <str>Watch the Sky</str>
+  </arr>
+  <arr name="author-title">
+    <str/>
+  </arr>
+  <arr name="electronic-note">
+    <str/>
+  </arr>
+  <arr name="title-remainder">
+    <str/>
+  </arr>
+  <arr name="title-medium">
+    <str/>
+  </arr>
+  <arr name="database">
+    <str>3552</str>
+  </arr>
+  <date name="harvest-timestamp">2014-04-23T08:00:01.067Z</date>
+  <str name="harvest-date">2014-04-23</str>
+  <long name="_version_">1466162433409155072</long>
+  <float name="score">7.7963223</float>
+</doc>
diff --git a/etc/xsl/solr-pz22.res.xml b/etc/xsl/solr-pz22.res.xml
new file mode 100644 (file)
index 0000000..1a4d948
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<pz:record xmlns:pz="http://www.indexdata.com/pazpar2/1.0"><pz:metadata type="medium">cd</pz:metadata>
+  <pz:metadata type="electronic-text"/>
+  <pz:metadata type="subject">Science fiction Short stories Forgers -- Fiction</pz:metadata>
+  <pz:metadata type="subject-long">Science fiction Short stories Forgers -- Fiction, PS</pz:metadata>
+  <pz:metadata type="electronic-url">http://www.gutenberg.org/ebooks/24558</pz:metadata>
+  <pz:metadata type="publication-place"/>
+  <pz:metadata type="publication-name">Project Gutenberg</pz:metadata>
+  <pz:metadata type="title-dates"/>
+  <pz:metadata type="date"/>
+  
+  <pz:metadata type="title-number-section"/>
+  <pz:metadata type="title-responsibility"/>
+  <pz:metadata type="publication-date"/>
+  <pz:metadata type="id">3552-24558</pz:metadata>
+  <pz:metadata type="author-date"/>
+  <pz:metadata type="author">Schmitz, James H.</pz:metadata>
+  <pz:metadata type="title">Watch the Sky</pz:metadata>
+  <pz:metadata type="author-title"/>
+  <pz:metadata type="electronic-note"/>
+  <pz:metadata type="title-remainder"/>
+  <pz:metadata type="title-medium"/>
+  <pz:metadata type="database">3552</pz:metadata>
+  <pz:metadata type="harvest-timestamp">2014-04-23T08:00:01.067Z</pz:metadata>
+  <pz:metadata type="harvest-date">2014-04-23</pz:metadata>
+  1466162433409155072
+  <pz:metadata type="score">7.7963223</pz:metadata>
+</pz:record>
diff --git a/etc/xsl/solr-pz22.xml b/etc/xsl/solr-pz22.xml
new file mode 100644 (file)
index 0000000..339c6d2
--- /dev/null
@@ -0,0 +1,69 @@
+<?xml version="1.0"?>
+<!-- xsltproc: ##stringparam medium cd -->
+<doc>
+  <arr name="electronic-text">
+    <str/>
+  </arr>
+  <arr name="subject">
+    <str>Science fiction Short stories Forgers -- Fiction</str>
+  </arr>
+  <arr name="subject-long">
+    <str>Science fiction Short stories Forgers -- Fiction, PS</str>
+  </arr>
+  <arr name="electronic-url">
+    <str>http://www.gutenberg.org/ebooks/24558</str>
+  </arr>
+  <arr name="publication-place">
+    <str/>
+  </arr>
+  <arr name="publication-name">
+    <str>Project Gutenberg</str>
+  </arr>
+  <arr name="title-dates">
+    <str/>
+  </arr>
+  <arr name="date">
+    <str/>
+  </arr>
+  <arr name="medium">
+    <str>book</str>
+  </arr>
+  <arr name="title-number-section">
+    <str/>
+  </arr>
+  <arr name="title-responsibility">
+    <str/>
+  </arr>
+  <arr name="publication-date">
+    <str/>
+  </arr>
+  <str name="id">3552-24558</str>
+  <arr name="author-date">
+    <str/>
+  </arr>
+  <arr name="author">
+    <str>Schmitz, James H.</str>
+  </arr>
+  <arr name="title">
+    <str>Watch the Sky</str>
+  </arr>
+  <arr name="author-title">
+    <str/>
+  </arr>
+  <arr name="electronic-note">
+    <str/>
+  </arr>
+  <arr name="title-remainder">
+    <str/>
+  </arr>
+  <arr name="title-medium">
+    <str/>
+  </arr>
+  <arr name="database">
+    <str>3552</str>
+  </arr>
+  <date name="harvest-timestamp">2014-04-23T08:00:01.067Z</date>
+  <str name="harvest-date">2014-04-23</str>
+  <long name="_version_">1466162433409155072</long>
+  <float name="score">7.7963223</float>
+</doc>
diff --git a/etc/xsl/test_xsl.sh b/etc/xsl/test_xsl.sh
new file mode 100755 (executable)
index 0000000..ec3dce9
--- /dev/null
@@ -0,0 +1,35 @@
+#!/bin/sh
+v=`xsltproc --version|head -1|awk '{print $5}'`
+if test $v -lt 10124; then
+    echo "libxslt is version $v. Skipping test"
+    exit 0
+fi
+res=0
+for x in *.xsl; do
+    t=`basename $x .xsl`
+    if test ! -f ${t}1.xml; then
+       continue
+    fi
+    echo "$t"
+    for m in ${t}?.xml; do
+       b=`basename $m .xml`
+       opt=`grep 'xsltproc:' $m|cut -d: -f2|cut -d- -f1|tr '#' '-'`
+       l=$b.log.xml
+       r=$b.res.xml
+       d=$b.dif
+       xsltproc $opt $x $m >$l
+       if test -f $r; then
+           if diff $l $r >$d; then
+               rm $d
+           else
+               echo "$b: FAIL; check $d"
+               res=1
+           fi
+       else
+           echo "$b: making $r for the first time"
+           mv $l $r
+           res=1
+       fi
+    done
+done
+exit $res
diff --git a/etc/xsl/tmarc.xsl b/etc/xsl/tmarc.xsl
new file mode 100644 (file)
index 0000000..95e9975
--- /dev/null
@@ -0,0 +1,829 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0"
+  xmlns="http://www.indexdata.com/turbomarc"
+  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
+  xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
+  xmlns:tmarc="http://www.indexdata.com/turbomarc">
+
+  <xsl:output indent="yes" method="xml" version="1.0"
+    encoding="UTF-8" />
+  <xsl:param name="medium"/>
+
+  <!-- Extract metadata from MARC21/USMARC from streamlined marcxml format 
+    http://www.loc.gov/marc/bibliographic/ecbdhome.html -->
+  <xsl:template name="record-hook" />
+
+
+  <xsl:template match="/">
+      <xsl:apply-templates />
+  </xsl:template>
+
+  <xsl:template match="tmarc:collection">
+    <collection>
+      <xsl:apply-templates />
+    </collection>
+  </xsl:template>
+
+  <xsl:template match="tmarc:r">
+    <xsl:variable name="title_medium" select="tmarc:d245/tmarc:sh" />
+    <xsl:variable name="journal_title" select="tmarc:d773/tmarc:st" />
+    <xsl:variable name="electronic_location_url" select="tmarc:d856/tmarc:su" />
+    <xsl:variable name="fulltext_a" select="tmarc:d900/tmarc:sa" />
+    <xsl:variable name="fulltext_b" select="tmarc:d900/tmarc:sb" />
+    <!-- Does not always hit the right substring. The field is not always fixed-width? -->
+    <xsl:variable name="control_lang" select="substring(tmarc:c008, 36, 3)" />
+    <xsl:variable name="contains110" select="tmarc:d110" />
+    <xsl:variable name="hasAuthorFields" select="tmarc:d100 or tmarc:d111" />
+    <xsl:variable name="typeofrec" select="substring(tmarc:l, 7, 1)"/>
+    <xsl:variable name="typeofvm" select="substring(tmarc:c008, 34, 1)"/>
+    <xsl:variable name="biblevel" select="substring(tmarc:l, 8, 1)"/>
+    <xsl:variable name="physdes" select="substring(tmarc:c007, 1, 1)"/>
+    <xsl:variable name="form1" select="substring(tmarc:c008, 24, 1)"/>
+    <xsl:variable name="form2" select="substring(tmarc:c008, 30, 1)"/>
+    <xsl:variable name="oclca" select="substring(tmarc:c007, 1, 1)"/>
+    <xsl:variable name="oclcb" select="substring(tmarc:c007, 2, 1)"/>
+    <xsl:variable name="oclcd" select="substring(tmarc:c007, 4, 1)"/>
+    <xsl:variable name="oclce" select="substring(tmarc:c007, 5, 1)"/>
+    <xsl:variable name="typeofserial" select="substring(tmarc:c008, 22, 1)"/>
+
+    <xsl:variable name="electronic">
+      <xsl:choose>
+        <xsl:when test="$form1='s' or $form1='q' or $form1='o' or
+          $form2='s' or $form2='q' or $form2='o'">
+          <xsl:text>yes</xsl:text>
+       </xsl:when>
+       <xsl:otherwise/>
+      </xsl:choose>
+    </xsl:variable>
+
+    <xsl:variable name="vmedium">
+      <xsl:choose>
+        <xsl:when test="string-length($medium)"><xsl:value-of select="$medium" /></xsl:when>
+        <xsl:when test="($typeofrec='a' or $typeofrec='t') and $biblevel='m'">book</xsl:when>
+        <xsl:when test="$typeofrec='j' or $typeofrec='i'">
+         <xsl:text>recording</xsl:text>
+         <xsl:choose>
+           <xsl:when test="$oclcb='d' and $oclcd='f'">-cd</xsl:when>
+           <xsl:when test="$oclcb='s'">-cassette</xsl:when>
+           <xsl:when test="$oclcb='d' and $oclcd='a' or $oclcd='b' or
+             $oclcd='c' or $oclcd='d' or $oclcd='e'">-vinyl</xsl:when>
+         </xsl:choose>
+       </xsl:when>
+       <xsl:when test="$typeofrec='g'">
+         <xsl:choose>
+           <xsl:when test="$typeofvm='m' or $typeofvm='v'">
+             <xsl:text>video</xsl:text>
+             <xsl:choose>
+               <xsl:when test="$oclca='v' and $oclcb='d' and $oclce='v'">-dvd</xsl:when>
+               <xsl:when test="$oclca='v' and $oclcb='d' and $oclce='s'">-blu-ray</xsl:when>
+               <xsl:when test="$oclca='v' and $oclcb='f' and $oclce='b'">-vhs</xsl:when>
+             </xsl:choose>
+           </xsl:when>
+           <xsl:otherwise>audio-visual</xsl:otherwise>
+         </xsl:choose>
+       </xsl:when>
+       <xsl:when test="$typeofrec='a' and $biblevel='s'">
+         <xsl:choose>
+           <xsl:when test="$typeofserial='n'">newspaper</xsl:when>
+           <xsl:otherwise>journal</xsl:otherwise>
+         </xsl:choose>
+       </xsl:when>
+       <xsl:when test="$typeofrec='e' or $typeofrec='f'">map</xsl:when>
+       <xsl:when test="$typeofrec='c' or $typeofrec='d'">music-score</xsl:when>
+       <xsl:when test="$form1='a' or $form1='b' or $form1='c'">microform</xsl:when>
+       <xsl:when test="$typeofrec='t'">thesis</xsl:when>
+        <!-- <xsl:when test="$journal_title">article</xsl:when> -->
+       <xsl:when test="$typeofrec='a' or $typeofrec='i' and
+           ($typeofserial='d' or $typeofserial='w')">web</xsl:when>
+       <xsl:when test="$typeofrec='a' and $biblevel='b'">article</xsl:when>
+       <xsl:when test="$typeofrec='m'">electronic</xsl:when>
+        <xsl:otherwise>
+          <xsl:text>other</xsl:text>
+        </xsl:otherwise>
+      </xsl:choose>
+    </xsl:variable>
+
+    <xsl:variable name="has_fulltext">
+      <xsl:choose>
+        <xsl:when test="tmarc:d856/tmarc:sq">
+          <xsl:text>yes</xsl:text>
+        </xsl:when>
+        <xsl:when test="tmarc:d856/tmarc:si='TEXT*'">
+          <xsl:text>yes</xsl:text>
+        </xsl:when>
+        <xsl:otherwise>
+          <xsl:text>no</xsl:text>
+        </xsl:otherwise>
+      </xsl:choose>
+    </xsl:variable>
+
+    <xsl:variable name="oclc_number">
+      <xsl:choose>
+        <xsl:when test='contains(tmarc:c001,"ocn") or
+                        contains(tmarc:c001,"ocm") or
+                        contains(tmarc:c001,"OCoLC") '>
+         <xsl:value-of select="tmarc:c001"/>
+        </xsl:when>
+        <xsl:when test='contains(tmarc:d035/tmarc:sa,"ocn") or
+                        contains(tmarc:d035/tmarc:sa,"ocm") or
+                        contains(tmarc:d035/tmarc:sa,"OCoLC") '>
+         <xsl:value-of select="tmarc:d035/tmarc:sa"/>
+        </xsl:when>
+      </xsl:choose>
+    </xsl:variable>
+
+    <xsl:variable name="date_008">
+      <xsl:choose>
+        <xsl:when test="contains('cestpudikmr', substring(tmarc:c008, 7, 1))">
+          <xsl:value-of select="substring(tmarc:c008, 8, 4)" />
+        </xsl:when>
+      </xsl:choose>
+    </xsl:variable>
+
+    <xsl:variable name="date_end_008">
+      <xsl:choose>
+        <xsl:when test="contains('dikmr', substring(tmarc:c008, 7, 1))">
+          <xsl:value-of select="substring(tmarc:c008, 12, 4)" />
+        </xsl:when>
+      </xsl:choose>
+    </xsl:variable>
+
+    <pz:record>
+<!--
+      <xsl:attribute name="mergekey">
+    <xsl:text>title </xsl:text>
+  <xsl:value-of select="tmarc:d245/tmarc:sa" />
+  <xsl:text> author </xsl:text>
+  <xsl:value-of select="tmarc:d100/tmarc:sa" />
+  <xsl:text> medium </xsl:text>
+  <xsl:value-of select="$medium" />
+    </xsl:attribute>
+  -->
+
+      <xsl:for-each select="tmarc:c001">
+        <pz:metadata type="id">
+          <xsl:value-of select="." />
+        </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:if test="string-length($oclc_number) &gt; 0">
+       <pz:metadata type="oclc-number">
+         <xsl:value-of select="$oclc_number" />
+       </pz:metadata>
+      </xsl:if>
+
+      <xsl:for-each select="tmarc:d010">
+       <xsl:for-each select="tmarc:sa">
+         <pz:metadata type="lccn">
+           <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+      </xsl:for-each>
+
+      <xsl:for-each select="tmarc:d020">
+       <xsl:for-each select="tmarc:sa">
+         <pz:metadata type="isbn">
+           <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+      </xsl:for-each>
+
+      <xsl:for-each select="tmarc:d022">
+       <xsl:for-each select="tmarc:sa">
+         <pz:metadata type="issn">
+           <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+      </xsl:for-each>
+      
+      <xsl:for-each select="tmarc:d027">
+       <xsl:for-each select="tmarc:sa">
+         <pz:metadata type="tech-rep-nr">
+           <xsl:value-of select="tmarc:sa" />
+         </pz:metadata>
+       </xsl:for-each>
+      </xsl:for-each>
+      
+      <xsl:for-each select="tmarc:d035"> 
+        <pz:metadata type="system-control-nr">
+          <xsl:choose>
+            <xsl:when test="tmarc:sa">
+              <xsl:value-of select="tmarc:sa"/>
+            </xsl:when>
+            <xsl:otherwise>
+              <xsl:value-of select="tmarc:sb"/>
+            </xsl:otherwise>
+          </xsl:choose>
+        </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="tmarc:d100">
+       <xsl:for-each select="tmarc:sa">
+         <pz:metadata type="author">
+           <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+       <xsl:for-each select="tmarc:sc">
+         <pz:metadata type="author-title">
+           <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+       <xsl:for-each select="tmarc:sd">
+         <pz:metadata type="author-date">
+           <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+      </xsl:for-each>
+
+      <xsl:for-each select="tmarc:d110">
+       <xsl:for-each select="tmarc:sa">
+         <pz:metadata type="corporate-name">
+          <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+       <xsl:for-each select="tmarc:sc">
+         <pz:metadata type="corporate-location">
+           <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+       <xsl:for-each select="tmarc:sd">
+         <pz:metadata type="corporate-date">
+           <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+      </xsl:for-each>
+      
+      <xsl:for-each select="tmarc:d111">
+       <xsl:for-each select="tmarc:sa">
+         <pz:metadata type="meeting-name">
+           <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+       <xsl:for-each select="tmarc:sc">
+         <pz:metadata type="meeting-location">
+           <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+       <xsl:for-each select="tmarc:sd">
+         <pz:metadata type="meeting-date">
+           <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+      </xsl:for-each>
+
+      <xsl:for-each select="tmarc:d260">
+       <xsl:for-each select="tmarc:sc">
+         <pz:metadata type="date">
+           <xsl:value-of select="translate(., 'cp[].', '')" />
+         </pz:metadata>
+       </xsl:for-each>
+      </xsl:for-each>
+
+      <xsl:if test="string-length($date_008) &gt; 0 and not(tmarc:d260)">
+        <pz:metadata type="date">
+          <xsl:choose>
+            <xsl:when test="$date_end_008">
+              <xsl:value-of select="concat($date_008,'-',$date_end_008)" />
+            </xsl:when>
+            <xsl:otherwise> 
+              <xsl:value-of select="$date_008" />
+            </xsl:otherwise>
+          </xsl:choose>
+        </pz:metadata>
+      </xsl:if>
+
+      <xsl:for-each select="tmarc:d130">
+       <xsl:for-each select="tmarc:sa">
+         <pz:metadata type="title-uniform">
+           <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+       <xsl:for-each select="tmarc:sm">
+         <pz:metadata type="title-uniform-media">
+           <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+       <xsl:for-each select="tmarc:sn">
+         <pz:metadata type="title-uniform-parts">
+           <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+       <xsl:for-each select="tmarc:sp">
+         <pz:metadata type="title-uniform-partname">
+           <xsl:value-of select="." />     
+         </pz:metadata>
+       </xsl:for-each>
+       <xsl:for-each select="tmarc:sr">
+         <pz:metadata type="title-uniform-key">
+           <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+      </xsl:for-each>
+      
+      <xsl:for-each select="tmarc:d245">
+       <xsl:for-each select="tmarc:sa">
+         <pz:metadata type="title">
+           <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+       <xsl:for-each select="tmarc:sb">
+         <pz:metadata type="title-remainder">
+           <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+       <xsl:for-each select="tmarc:sc">
+         <pz:metadata type="title-responsibility">
+           <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+       <xsl:for-each select="tmarc:sf">
+         <pz:metadata type="title-dates">
+           <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+       <xsl:for-each select="tmarc:sh">
+         <pz:metadata type="title-medium">
+           <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+       <xsl:for-each select="tmarc:sn">
+         <pz:metadata type="title-number-section">
+           <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+       <xsl:if test="tmarc:sa">
+         <pz:metadata type="title-complete">
+           <xsl:value-of select="tmarc:sa" />
+           <xsl:if test="tmarc:sb" ><xsl:value-of select="concat(' ', tmarc:sb)" /></xsl:if>
+         </pz:metadata>
+       </xsl:if>
+      </xsl:for-each>
+
+      <xsl:for-each select="tmarc:d250">
+       <xsl:for-each select="tmarc:sa">
+         <pz:metadata type="edition">
+           <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+      </xsl:for-each>
+
+      <xsl:for-each select="tmarc:d260">
+       <xsl:for-each select="tmarc:sa">
+         <pz:metadata type="publication-place">
+           <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+       <xsl:for-each select="tmarc:sb">
+         <pz:metadata type="publication-name">
+           <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+       <xsl:for-each select="tmarc:sc">
+         <pz:metadata type="publication-date">
+           <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+      </xsl:for-each>
+
+      <xsl:for-each select="tmarc:d300">
+       <xsl:for-each select="tmarc:sa">
+         <pz:metadata type="physical-extent">
+           <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+       <xsl:for-each select="tmarc:sb">
+         <pz:metadata type="physical-format">
+           <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+       <xsl:for-each select="tmarc:sc">
+         <pz:metadata type="physical-dimensions">
+           <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+       <xsl:for-each select="tmarc:se">
+         <pz:metadata type="physical-accomp">
+           <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+       <xsl:for-each select="tmarc:sf">
+         <pz:metadata type="physical-unittype">
+           <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+       <xsl:for-each select="tmarc:sg">
+         <pz:metadata type="physical-unitsize">
+           <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+       <xsl:for-each select="tmarc:s3">
+         <pz:metadata type="physical-specified">
+           <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+      </xsl:for-each>
+
+      <xsl:for-each select="tmarc:d440">
+       <xsl:for-each select="tmarc:sa">
+         <pz:metadata type="series-title">
+           <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+      </xsl:for-each>
+
+      <xsl:for-each select="tmarc:d500">
+        <pz:metadata type="description">
+          <xsl:for-each select="node()">
+            <xsl:value-of select="text()" />
+          </xsl:for-each>
+        </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="tmarc:d505">
+        <pz:metadata type="description">
+          <xsl:for-each select="node()">
+            <xsl:value-of select="text()" />
+          </xsl:for-each>
+        </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="tmarc:d518">
+        <pz:metadata type="description">
+          <xsl:for-each select="node()">
+            <xsl:value-of select="text()" />
+          </xsl:for-each>
+        </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="tmarc:d520">
+        <pz:metadata type="description">
+          <xsl:for-each select="node()">
+            <xsl:value-of select="text()" />
+          </xsl:for-each>
+        </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="tmarc:d522">
+        <pz:metadata type="description">
+          <xsl:for-each select="node()">
+            <xsl:value-of select="text()" />
+          </xsl:for-each>
+        </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="tmarc:d911">
+        <pz:metadata type="description">
+          <xsl:for-each select="node()">
+            <xsl:value-of select="text()" />
+          </xsl:for-each>
+        </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="tmarc:d600 | tmarc:d610 | tmarc:d611 | tmarc:d630 |
+                            tmarc:d648 | tmarc:d650 | tmarc:d651 | tmarc:d653 |
+                            tmarc:d654 | tmarc:d655 | tmarc:d656 | tmarc:d657 |
+                            tmarc:d658 | tmarc:d662 | tmarc:d69X">
+       <xsl:for-each select="tmarc:sa">
+         <pz:metadata type="subject">
+           <xsl:value-of select="."/>
+         </pz:metadata>
+       </xsl:for-each>
+       <pz:metadata type="subject-long">
+           <xsl:for-each select="node()/text()">
+             <xsl:if test="position() &gt; 1">
+               <xsl:text>, </xsl:text>
+             </xsl:if>
+            <xsl:variable name='value'>
+              <xsl:value-of select='normalize-space(.)'/>
+            </xsl:variable>
+            <xsl:choose>
+              <xsl:when test="substring($value, string-length($value)) = ','">
+                <xsl:value-of select="substring($value, 1, string-length($value)-1)"/>
+              </xsl:when>
+              <xsl:otherwise>
+                <xsl:value-of select="$value"/>
+              </xsl:otherwise>
+            </xsl:choose> 
+          </xsl:for-each>
+         </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="tmarc:d856">
+       <xsl:for-each select="tmarc:su">
+         <pz:metadata type="electronic-url">
+           <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+        <pz:metadata type="electronic-text">
+         <xsl:choose>
+           <xsl:when test="tmarc:sy">
+             <xsl:value-of select="tmarc:sy/text()" />
+           </xsl:when>
+           <xsl:when test="tmarc:s3">
+             <xsl:value-of select="tmarc:s3/text()" />
+           </xsl:when>
+           <xsl:when test="tmarc:sa">
+             <xsl:value-of select="tmarc:sa/text()" />
+           </xsl:when>
+           <xsl:otherwise>Get resource</xsl:otherwise>
+         </xsl:choose>
+        </pz:metadata>
+       <xsl:for-each select="tmarc:sz">
+         <pz:metadata type="electronic-note">
+           <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+       <xsl:for-each select="tmarc:si">
+         <pz:metadata type="electronic-format-instruction">
+           <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+       <xsl:for-each select="tmarc:sq">
+         <pz:metadata type="electronic-format-type">
+           <xsl:value-of select="." />
+         </pz:metadata>
+       </xsl:for-each>
+      </xsl:for-each>
+
+      <xsl:for-each select="tmarc:d773">
+        <pz:metadata type="citation">
+          <xsl:for-each select="*">
+            <xsl:value-of select="normalize-space(.)" />
+            <xsl:text> </xsl:text>
+          </xsl:for-each>
+        </pz:metadata>
+        <xsl:for-each select="tmarc:st">
+          <pz:metadata type="journal-title">
+            <xsl:value-of select="."/>
+          </pz:metadata>
+        </xsl:for-each>
+        <xsl:if test="tmarc:sg">
+         <xsl:variable name="value">
+            <xsl:for-each select="tmarc:sg">
+              <xsl:value-of select="."/>
+            </xsl:for-each>
+         </xsl:variable>
+          <pz:metadata type="journal-subpart">
+            <xsl:value-of select="$value"/>
+         </pz:metadata>
+         <xsl:variable name="l">
+           <xsl:value-of select="translate($value,
+                                 'ABCDEFGHIJKLMNOPQRSTUVWXYZ.',
+                                 'abcdefghijklmnopqrstuvwxyz ') "/>
+         </xsl:variable>
+         <xsl:variable name="volume">
+           <xsl:choose>
+             <xsl:when test="string-length(substring-after($l,'vol ')) &gt; 0">
+               <xsl:value-of select="substring-before(normalize-space(substring-after($l,'vol ')),' ')"/>
+             </xsl:when>
+             <xsl:when test="string-length(substring-after($l,'v ')) &gt; 0">
+               <xsl:value-of select="substring-before(normalize-space(substring-after($l,'v ')),' ')"/>
+             </xsl:when>
+           </xsl:choose>
+         </xsl:variable>
+         <xsl:variable name="issue">
+           <xsl:value-of select="substring-before(translate(normalize-space(substring-after($l,'issue')), ',', ' '),' ')"/>
+         </xsl:variable>
+         <xsl:variable name="pages">
+           <xsl:choose>
+             <xsl:when test="string-length(substring-after($l,' p ')) &gt; 0">
+               <xsl:value-of select="normalize-space(substring-after($l,' p '))"/>
+             </xsl:when>
+             <xsl:when test="string-length(substring-after($l,',p')) &gt; 0">
+               <xsl:value-of select="normalize-space(substring-after($l,',p'))"/>
+             </xsl:when>
+             <xsl:when test="string-length(substring-after($l,' p')) &gt; 0">
+               <xsl:value-of select="normalize-space(substring-after($l,' p'))"/>
+             </xsl:when>
+           </xsl:choose>
+         </xsl:variable>
+
+         <!-- volume -->
+         <xsl:if test="string-length($volume) &gt; 0">
+           <pz:metadata type="volume-number">
+             <xsl:value-of select="$volume"/>
+           </pz:metadata>
+         </xsl:if>
+         <!-- issue -->
+         <xsl:if test="string-length($issue) &gt; 0">
+           <pz:metadata type="issue-number">
+             <xsl:value-of select="$issue"/>
+           </pz:metadata>
+         </xsl:if>
+         <!-- pages -->
+         <xsl:if test="string-length($pages) &gt; 0">
+           <pz:metadata type="pages-number">
+             <xsl:value-of select="$pages"/>
+           </pz:metadata>
+         </xsl:if>
+
+         <!-- season -->
+        </xsl:if>
+        <xsl:if test="tmarc:sp">
+          <pz:metadata type="journal-title-abbrev">
+            <xsl:value-of select="tmarc:sp"/>
+          </pz:metadata>
+        </xsl:if>
+      </xsl:for-each>
+
+      <xsl:for-each select="tmarc:d852">
+        <xsl:for-each select="tmarc:sy">
+          <pz:metadata type="publicnote">
+            <xsl:value-of select="." />
+          </pz:metadata>
+        </xsl:for-each>
+        <xsl:for-each select="tmarc:sh">
+          <pz:metadata type="callnumber">
+            <xsl:value-of select="." />
+          </pz:metadata>
+        </xsl:for-each>
+      </xsl:for-each>
+
+      <xsl:for-each select="tmarc:d876">
+        <xsl:if test="tmarc:sf">
+          <pz:metadata type="loan-period">
+            <xsl:value-of select="concat(tmarc:s5,':',tmarc:sf)" />
+          </pz:metadata>
+        </xsl:if>
+      </xsl:for-each>
+
+      <pz:metadata type="medium">
+        <xsl:value-of select="$vmedium" />
+       <xsl:if test="string-length($electronic) and $vmedium != 'electronic'">
+         <xsl:text> (electronic)</xsl:text>
+       </xsl:if>
+      </pz:metadata>
+
+      <xsl:for-each select="tmarc:d900/tmarc:sa">
+        <pz:metadata type="fulltext">
+          <xsl:value-of select="." />
+        </pz:metadata>
+      </xsl:for-each>
+
+      <!-- <xsl:if test="$fulltext_a"> <pz:metadata type="fulltext"> <xsl:value-of 
+        select="$fulltext_a"/> </pz:metadata> </xsl:if> -->
+
+      <xsl:for-each select="tmarc:d900/tmarc:sb">
+        <pz:metadata type="fulltext">
+          <xsl:value-of select="." />
+        </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="tmarc:d900/tmarc:se">
+        <pz:metadata type="fulltext">
+          <xsl:value-of select="." />
+        </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="tmarc:d900/tmarc:sf">
+        <pz:metadata type="fulltext">
+          <xsl:value-of select="." />
+        </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="tmarc:d900/tmarc:si">
+        <pz:metadata type="fulltext">
+          <xsl:value-of select="." />
+        </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="tmarc:d900/tmarc:sk">
+        <pz:metadata type="fulltext">
+          <xsl:value-of select="." />
+        </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="tmarc:d900/tmarc:sq">
+        <pz:metadata type="fulltext">
+          <xsl:value-of select="." />
+        </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="tmarc:d900/tmarc:ss">
+        <pz:metadata type="fulltext">
+          <xsl:value-of select="." />
+        </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="tmarc:d900/tmarc:su">
+        <pz:metadata type="fulltext">
+          <xsl:value-of select="." />
+        </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="tmarc:d900/tmarc:sy">
+        <pz:metadata type="fulltext">
+          <xsl:value-of select="." />
+        </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="tmarc:d903">
+        <xsl:if test="tmarc:sa">
+          <pz:metadata type="publication-date">
+            <xsl:value-of select="substring(tmarc:sa,1,4)"/>
+          </pz:metadata>
+          <pz:metadata type="date">
+            <xsl:value-of select="substring(tmarc:sa,1,4)"/>
+          </pz:metadata>
+        </xsl:if>
+      </xsl:for-each>
+
+      <!-- <xsl:if test="$fulltext_b"> <pz:metadata type="fulltext"> <xsl:value-of 
+        select="$fulltext_b"/> </pz:metadata> </xsl:if> -->
+
+      <pz:metadata type="has-fulltext">
+        <xsl:value-of select="$has_fulltext"/>
+      </pz:metadata>
+
+      <xsl:for-each select="tmarc:d907 | tmarc:d901">
+        <pz:metadata type="iii-id">
+          <xsl:value-of select="tmarc:sa" />
+        </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="tmarc:d926">
+        <pz:metadata type="locallocation" empty="PAZPAR2_NULL_VALUE">
+         <xsl:value-of select="tmarc:sa"/>
+       </pz:metadata>
+        <pz:metadata type="callnumber" empty="PAZPAR2_NULL_VALUE">
+         <xsl:value-of select="tmarc:sc"/>
+       </pz:metadata>
+        <pz:metadata type="available" empty="PAZPAR2_NULL_VALUE">
+         <xsl:value-of select="tmarc:se"/>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <!-- OhioLINK holdings -->
+      <xsl:for-each select="tmarc:d945">
+       <pz:metadata type="locallocation" empty="PAZPAR2_NULL_VALUE">
+         <xsl:value-of select="tmarc:sa"/>
+       </pz:metadata>
+       <pz:metadata type="callnumber" empty="PAZPAR2_NULL_VALUE">
+         <xsl:value-of select="tmarc:sb"/>
+       </pz:metadata>
+       <pz:metadata type="publicnote" empty="PAZPAR2_NULL_VALUE">
+         <xsl:value-of select="tmarc:sc"/>
+       </pz:metadata>
+       <pz:metadata type="available" empty="PAZPAR2_NULL_VALUE">
+          <xsl:choose>
+            <xsl:when test="tmarc:ss = 'N'">Available</xsl:when>
+            <xsl:otherwise>
+             <xsl:value-of select="tmarc:sd"/>
+           </xsl:otherwise>
+         </xsl:choose>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="tmarc:d948">
+        <pz:metadata type="holding">
+          <xsl:for-each select="tmarc:s">
+            <xsl:if test="position() > 1">
+              <xsl:text> </xsl:text>
+            </xsl:if>
+            <xsl:value-of select="." />
+          </xsl:for-each>
+        </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="tmarc:d991">
+        <pz:metadata type="holding">
+          <xsl:for-each select="tmarc:s">
+            <xsl:if test="position() > 1">
+              <xsl:text> </xsl:text>
+            </xsl:if>
+            <xsl:value-of select="." />
+          </xsl:for-each>
+        </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="tmarc:d999">
+        <pz:metadata type="localid">
+          <xsl:choose>
+            <xsl:when test="tmarc:sa">
+              <xsl:value-of select="tmarc:sa"/>
+            </xsl:when>
+            <xsl:when test="tmarc:sc">
+              <xsl:value-of select="tmarc:sc"/>
+            </xsl:when> 
+            <xsl:otherwise>
+              <xsl:value-of select="tmarc:sd"/>
+            </xsl:otherwise>
+          </xsl:choose>
+        </pz:metadata>
+      </xsl:for-each>
+
+
+      <!-- passthrough id data -->
+      <xsl:for-each select="pz:metadata">
+        <xsl:copy-of select="." />
+      </xsl:for-each>
+
+      <!-- other stylesheets importing this might want to define this -->
+       <xsl:call-template name="record-hook" />
+
+    </pz:record>
+  </xsl:template>
+
+  <xsl:template match="text()" />
+
+</xsl:stylesheet>
diff --git a/etc/xsl/tmarc1.res.xml b/etc/xsl/tmarc1.res.xml
new file mode 100644 (file)
index 0000000..d5c2397
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<collection xmlns="http://www.indexdata.com/turbomarc" xmlns:pz="http://www.indexdata.com/pazpar2/1.0" xmlns:tmarc="http://www.indexdata.com/turbomarc">
+  <pz:record>
+    <pz:metadata type="author">Sloman</pz:metadata>
+    <pz:metadata type="date">2002</pz:metadata>
+    <pz:metadata type="title">On the road with Bob Dylan</pz:metadata>
+    <pz:metadata type="title-complete">On the road with Bob Dylan</pz:metadata>
+    <pz:metadata type="edition">Revised edition</pz:metadata>
+    <pz:metadata type="publication-place">New York</pz:metadata>
+    <pz:metadata type="publication-name">Three Rivers Press</pz:metadata>
+    <pz:metadata type="publication-date">2002</pz:metadata>
+    <pz:metadata type="physical-extent">xv, 464 sider, tavler</pz:metadata>
+    <pz:metadata type="description">Tidligere: 1. udgave. New York, Bantam, 1978</pz:metadata>
+    <pz:metadata type="medium">book</pz:metadata>
+    <pz:metadata type="has-fulltext">no</pz:metadata>
+  </pz:record>
+</collection>
diff --git a/etc/xsl/tmarc1.xml b/etc/xsl/tmarc1.xml
new file mode 100644 (file)
index 0000000..dab3674
--- /dev/null
@@ -0,0 +1,95 @@
+<collection xmlns="http://www.indexdata.com/turbomarc">
+<r>
+<!-- Length implementation at offset 22 should hold a digit. Assuming 0 -->
+  <l>00988nam0a32003011  450 </l>
+  <d001 i1="0" i2="0" i3="0">
+    <sa>9 181 423 4</sa>
+    <sb>710100</sb>
+    <sf>a</sf>
+  </d001>
+  <d004 i1="0" i2="0" i3="0">
+    <sr>n</sr>
+    <sa>e</sa>
+  </d004>
+  <d008 i1="0" i2="0" i3="0">
+    <st>m</st>
+    <su>u</su>
+    <sa>2002</sa>
+    <sb>us</sb>
+    <sl>eng</sl>
+    <sv>0</sv>
+  </d008>
+  <d009 i1="0" i2="0" i3="0">
+    <sa>a</sa>
+    <sg>xx</sg>
+  </d009>
+  <d021 i1="0" i2="0" i3="0">
+    <sa>1-4000-4596-7</sa>
+    <sd>$14,00</sd>
+  </d021>
+  <d032 i1="0" i2="0" i3="0">
+    <s code="&amp;">DBC200439</s>
+  </d032>
+  <d100 i1="0" i2="0" i3="0">
+    <s0></s0>
+    <sa>Sloman</sa>
+    <sh>Larry</sh>
+  </d100>
+  <d245 i1="0" i2="0" i3="0">
+    <sa>On the road with Bob Dylan</sa>
+    <se>Larry &quot;Ratso&quot; Sloman</se>
+  </d245>
+  <d250 i1="0" i2="0" i3="0">
+    <sa>Revised edition</sa>
+    <sb>Three Rivers Press</sb>
+  </d250>
+  <d260 i1="0" i2="0" i3="0">
+    <sa>New York</sa>
+    <sb>Three Rivers Press</sb>
+    <sc>2002</sc>
+  </d260>
+  <d300 i1="0" i2="0" i3="0">
+    <sa>xv, 464 sider, tavler</sa>
+  </d300>
+  <d504 i1="0" i2="0" i3="0">
+    <sa>Larry &quot;Ratso&quot; Slomans meget personlige beretning om Bob Dylans koncertturne i USA i 1975: &quot;The Rolling Thunder revue&quot;</sa>
+  </d504>
+  <d512 i1="0" i2="0" i3="0">
+    <sa>På omslaget: With a new introduction by Kinky Friedman</sa>
+  </d512>
+  <d520 i1="0" i2="0" i3="0">
+    <sa>Tidligere: 1. udgave. New York, Bantam, 1978</sa>
+  </d520>
+  <d652 i1="0" i2="0" i3="0">
+    <s0></s0>
+    <sm>99.4</sm>
+    <sa>Dylan</sa>
+    <sh>Bob</sh>
+  </d652>
+  <d652 i1="0" i2="0" i3="0">
+    <sp>78.9064</sp>
+    <sv>5</sv>
+  </d652>
+  <d666 i1="0" i2="0" i3="0">
+    <sf>folkemusik</sf>
+  </d666>
+  <d666 i1="0" i2="0" i3="0">
+    <sf>folkemusikere</sf>
+  </d666>
+  <d666 i1="0" i2="0" i3="0">
+    <sf>rockmusik</sf>
+  </d666>
+  <d666 i1="0" i2="0" i3="0">
+    <sf>rockmusikere</sf>
+  </d666>
+  <d666 i1="0" i2="0" i3="0">
+    <sf>rockkoncerter</sf>
+  </d666>
+  <d666 i1="0" i2="0" i3="0">
+    <se>USA</se>
+  </d666>
+  <d666 i1="0" i2="0" i3="0">
+    <si>1970-1979</si>
+  </d666>
+</r>
+</collection>
diff --git a/etc/xsl/tmarc2.res.xml b/etc/xsl/tmarc2.res.xml
new file mode 100644 (file)
index 0000000..bce5221
--- /dev/null
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<collection xmlns="http://www.indexdata.com/turbomarc" xmlns:pz="http://www.indexdata.com/pazpar2/1.0" xmlns:tmarc="http://www.indexdata.com/turbomarc">
+  <pz:record>
+    <pz:metadata type="author">Mimms</pz:metadata>
+    <pz:metadata type="date">1995</pz:metadata>
+    <pz:metadata type="title">Cry baby</pz:metadata>
+    <pz:metadata type="title">Warm and soulful</pz:metadata>
+    <pz:metadata type="title-complete">Cry baby</pz:metadata>
+    <pz:metadata type="publication-place">Bury St. Edmunds</pz:metadata>
+    <pz:metadata type="publication-name">BGO</pz:metadata>
+    <pz:metadata type="publication-date">1995</pz:metadata>
+    <pz:metadata type="medium">book</pz:metadata>
+    <pz:metadata type="has-fulltext">no</pz:metadata>
+  </pz:record>
+</collection>
diff --git a/etc/xsl/tmarc2.xml b/etc/xsl/tmarc2.xml
new file mode 100644 (file)
index 0000000..8f28780
--- /dev/null
@@ -0,0 +1,102 @@
+<collection xmlns="http://www.indexdata.com/turbomarc">
+<r>
+<!-- Length implementation at offset 22 should hold a digit. Assuming 0 -->
+  <l>01116nam0a32002171  450 </l>
+  <d001 i1="0" i2="0" i3="0">
+    <sa>9 182 502 3</sa>
+    <sb>710100</sb>
+    <sf>a</sf>
+  </d001>
+  <d004 i1="0" i2="0" i3="0">
+    <sr>c</sr>
+    <sa>e</sa>
+  </d004>
+  <d008 i1="0" i2="0" i3="0">
+    <st>s</st>
+    <su>f</su>
+    <sa>1995</sa>
+    <sb>gb</sb>
+    <sl>eng</sl>
+    <sv>0</sv>
+  </d008>
+  <d009 i1="0" i2="0" i3="0">
+    <sa>s</sa>
+    <sg>xc</sg>
+  </d009>
+  <d039 i1="0" i2="0" i3="0">
+    <sa>bef</sa>
+  </d039>
+  <d100 i1="0" i2="0" i3="0">
+    <sa>Mimms</sa>
+    <sh>Garnet</sh>
+  </d100>
+  <d245 i1="0" i2="0" i3="0">
+    <sa>Cry baby</sa>
+    <sa>Warm and soulful</sa>
+    <se>Garnet Mimms ... [et al.]</se>
+  </d245>
+  <d260 i1="0" i2="0" i3="0">
+    <sa>Bury St. Edmunds</sa>
+    <sb>BGO</sb>
+    <sc>1995</sc>
+  </d260>
+  <d300 i1="0" i2="0" i3="0">
+    <sn>1 cd</sn>
+  </d300>
+  <d512 i1="0" i2="0" i3="0">
+    <sa>Indspilninger publiceret 1963 (Cry baby) og 1965 (Warm and soulful)</sa>
+  </d512>
+  <d531 i1="0" i2="0" i3="0">
+    <sa>Indhold:</sa>
+  </d531>
+  <d538 i1="0" i2="0" i3="0">
+    <sf>BGO</sf>
+    <sg>BGOCD268</sg>
+  </d538>
+  <d652 i1="0" i2="0" i3="0">
+    <sm>78.794</sm>
+    <sv>4</sv>
+  </d652>
+  <d666 i1="0" i2="0" i3="0">
+    <sm>soul</sm>
+    <sm>rhythm &amp; blues</sm>
+    <sn>vokal</sn>
+    <sp>1960-1969</sp>
+    <sl>USA</sl>
+  </d666>
+  <d795 i1="0" i2="0" i3="0">
+    <s code="å">11</s>
+    <sa>Cry baby</sa>
+    <sa>Nobody but you</sa>
+    <sa>Until you were gone</sa>
+    <sa>Anytime you want me</sa>
+    <sa>So close</sa>
+    <sa>For your precious love</sa>
+    <sa>Baby don&apos;t you weep</sa>
+    <sa>A ¤quiet place</sa>
+    <sa>Cry to me</sa>
+    <sa>Don&apos;t change your heart</sa>
+    <sa>Wanting you</sa>
+    <sa>The ¤truth hurts</sa>
+    <sa>I&apos;ll take good care of you</sa>
+    <sa>Looking for you</sa>
+    <sa>It won&apos;t hurt (half as much)</sa>
+    <sa>It was easier to hurt her</sa>
+    <sa>Thinkin&apos;</sa>
+    <sa>Prove it to me</sa>
+    <sa>More than a miracle</sa>
+    <sa>As long as I have you</sa>
+    <sa>One girl</sa>
+    <sa>There goes my baby</sa>
+    <sa>It&apos;s just a matter of time</sa>
+    <sa>A ¤little bit of soap</sa>
+    <sa>Look away</sa>
+    <sa>I&apos;ll make it up to you</sa>
+  </d795>
+  <d795 i1="0" i2="0" i3="0">
+    <s code="å">40</s>
+    <sy>0</sy>
+    <sa>1 girl</sa>
+  </d795>
+</r>
+</collection>
diff --git a/etc/xsl/tmarc3.res.xml b/etc/xsl/tmarc3.res.xml
new file mode 100644 (file)
index 0000000..ddd115f
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<collection xmlns="http://www.indexdata.com/turbomarc" xmlns:pz="http://www.indexdata.com/pazpar2/1.0" xmlns:tmarc="http://www.indexdata.com/turbomarc">
+  <pz:record>
+    <pz:metadata type="title">Byfornyelse ved Ibsen-Ringen</pz:metadata>
+    <pz:metadata type="title-complete">Byfornyelse ved Ibsen-Ringen</pz:metadata>
+    <pz:metadata type="physical-format">farvefoto</pz:metadata>
+    <pz:metadata type="physical-format">plan</pz:metadata>
+    <pz:metadata type="physical-format">snit</pz:metadata>
+    <pz:metadata type="subject-long">byfornyelse</pz:metadata>
+    <pz:metadata type="subject-long">sanering</pz:metadata>
+    <pz:metadata type="subject">Telje Torp Aasen Arkitektkontor</pz:metadata>
+    <pz:metadata type="subject-long">Telje Torp Aasen Arkitektkontor, Kristian Augustsgate 7B</pz:metadata>
+    <pz:metadata type="subject">Eng, Dagfin</pz:metadata>
+    <pz:metadata type="subject-long">Eng, Dagfin</pz:metadata>
+    <pz:metadata type="subject-long">anlund, Tom, Kristian Augustsgate, Pilestredet 19</pz:metadata>
+    <pz:metadata type="medium">web</pz:metadata>
+    <pz:metadata type="has-fulltext">no</pz:metadata>
+  </pz:record>
+</collection>
diff --git a/etc/xsl/tmarc3.xml b/etc/xsl/tmarc3.xml
new file mode 100644 (file)
index 0000000..84f8bbe
--- /dev/null
@@ -0,0 +1,122 @@
+<collection xmlns="http://www.indexdata.com/turbomarc">
+<r>
+<!-- Length implementation at offset 22 should hold a digit. Assuming 0 -->
+  <l>00914naa a2200337   450 </l>
+  <d001 i1=" " i2=" ">
+    <sa>a00001508</sa>
+    <sf>a</sf>
+  </d001>
+  <d004 i1=" " i2=" ">
+    <sa>i</sa>
+    <sr>n</sr>
+  </d004>
+  <d008 i1=" " i2=" ">
+    <sa>1991</sa>
+    <sb>xx</sb>
+    <sl>nor</sl>
+    <st>a</st>
+    <sv>9</sv>
+  </d008>
+  <d009 i1=" " i2=" ">
+    <sa>a</sa>
+    <sg>xx</sg>
+  </d009>
+  <d041 i1=" " i2=" ">
+    <sa>nor</sa>
+  </d041>
+  <d041 i1=" " i2=" ">
+    <sd>eng</sd>
+  </d041>
+  <d097 i1="0" i2="0">
+    <sa>06</sa>
+  </d097>
+  <d245 i1=" " i2=" ">
+    <sa>Byfornyelse ved Ibsen-Ringen</sa>
+  </d245>
+  <d300 i1=" " i2=" ">
+    <sb>farvefoto</sb>
+    <sb>plan</sb>
+    <sb>snit</sb>
+  </d300>
+  <d557 i1=" " i2=" ">
+    <sa>Byggekunst</sa>
+    <sj>1991</sj>
+    <sv>1/2</sv>
+    <sk>41-45</sk>
+  </d557>
+  <d630 i1=" " i2=" ">
+    <sf>byfornyelse</sf>
+  </d630>
+  <d630 i1=" " i2=" ">
+    <sf>sanering</sf>
+  </d630>
+  <d633 i1=" " i2=" ">
+    <sf>Norge</sf>
+  </d633>
+  <d633 i1=" " i2=" ">
+    <sf>Oslo</sf>
+  </d633>
+  <d648 i1=" " i2=" ">
+    <sa>Telje Torp Aasen Arkitektkontor</sa>
+    <sc>Kristian Augustsgate 7B</sc>
+  </d648>
+  <d648 i1=" " i2=" ">
+    <sa>Eng, Dagfin</sa>
+  </d648>
+  <d648 i1=" " i2=" ">
+    <sr>anlund, Tom</sr>
+    <sc>Kristian Augustsgate</sc>
+    <sc>Pilestredet 19</sc>
+  </d648>
+  <dJ01 i1=" " i2=" ">
+    <sa>a</sa>
+  </dJ01>
+  <dBAS i1=" " i2=" ">
+    <s0></s0>
+  </dBAS>
+  <dLKR i1=" " i2=" ">
+    <sa>ITM</sa>
+    <sl>ARK50</sl>
+    <sb>0000145</sb>
+    <sy>1991</sy>
+    <si>1/2</si>
+    <sk>41-45</sk>
+  </dLKR>
+  <dCAT i1=" " i2=" ">
+    <sa></sa>
+    <sb></sb>
+    <sc>20020111</sc>
+    <sl>ARK01</sl>
+    <sh>2002</sh>
+  </dCAT>
+  <dCAT i1=" " i2=" ">
+    <sa></sa>
+    <sb></sb>
+    <sc>20020111</sc>
+    <sl>ARK01</sl>
+    <sh>2116</sh>
+  </dCAT>
+  <dCAT i1=" " i2=" ">
+    <sa></sa>
+    <sb></sb>
+    <sc>20021002</sc>
+    <sl>ARK01</sl>
+    <sh>1000</sh>
+  </dCAT>
+  <dCAT i1=" " i2=" ">
+    <sa>ICLLOAD</sa>
+    <sb>00</sb>
+    <sc>20021122</sc>
+    <sl>ARK01</sl>
+    <sh>1948</sh>
+  </dCAT>
+  <dCAT i1=" " i2=" ">
+    <sc>20030618</sc>
+    <sl>ARK01</sl>
+    <sh>1330</sh>
+  </dCAT>
+  <dUID i1=" " i2=" ">
+    <sa>a00001508</sa>
+  </dUID>
+</r>
+</collection>
diff --git a/etc/xsl/tmarc4.res.xml b/etc/xsl/tmarc4.res.xml
new file mode 100644 (file)
index 0000000..966fc24
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<collection xmlns="http://www.indexdata.com/turbomarc" xmlns:pz="http://www.indexdata.com/pazpar2/1.0" xmlns:tmarc="http://www.indexdata.com/turbomarc">
+  <pz:record>
+    <pz:metadata type="medium">other</pz:metadata>
+    <pz:metadata type="has-fulltext">no</pz:metadata>
+  </pz:record>
+</collection>
diff --git a/etc/xsl/tmarc4.xml b/etc/xsl/tmarc4.xml
new file mode 100644 (file)
index 0000000..dadbd7b
--- /dev/null
@@ -0,0 +1,11 @@
+<collection xmlns="http://www.indexdata.com/turbomarc">
+<r>
+<!-- Indicator length at offset 10 should hold a digit. Assuming 2 -->
+<!-- Identifier length at offset 11 should hold a digit. Assuming 2 -->
+<!-- Base address at offsets 12..16 should hold a number. Assuming 0 -->
+<!-- Length implementation at offset 22 should hold a digit. Assuming 0 -->
+  <l>009140091a22a  22003370 </l>
+<!-- Directory offset 24: Bad value for data length and/or length starting ( 45  00100170) -->
+<!-- Base address not at end of directory, base 0, end 25 -->
+</r>
+</collection>
diff --git a/etc/xsl/tmarc5.res.xml b/etc/xsl/tmarc5.res.xml
new file mode 100644 (file)
index 0000000..5fa0c5b
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<collection xmlns="http://www.indexdata.com/turbomarc" xmlns:pz="http://www.indexdata.com/pazpar2/1.0" xmlns:tmarc="http://www.indexdata.com/turbomarc">
+  <pz:record>
+    <pz:metadata type="id">000277485</pz:metadata>
+    <pz:metadata type="author">Μαρούδης, Κωνσταντίνος Ιω</pz:metadata>
+    <pz:metadata type="date">1894</pz:metadata>
+    <pz:metadata type="title">Ελληνικόν κρυπτογραφικόν λεξικόν /</pz:metadata>
+    <pz:metadata type="title-responsibility">Κωνστ. Ι. Μαρούδης.</pz:metadata>
+    <pz:metadata type="title-complete">Ελληνικόν κρυπτογραφικόν λεξικόν /</pz:metadata>
+    <pz:metadata type="publication-place">Αθήνα,</pz:metadata>
+    <pz:metadata type="publication-date">1894.</pz:metadata>
+    <pz:metadata type="physical-extent">248 σελ.</pz:metadata>
+    <pz:metadata type="subject">Greek language, Modern</pz:metadata>
+    <pz:metadata type="subject-long">Greek language, Modern, Dialects, Dictionaries</pz:metadata>
+    <pz:metadata type="subject">Cryptography.</pz:metadata>
+    <pz:metadata type="subject-long">Cryptography.</pz:metadata>
+    <pz:metadata type="medium">book</pz:metadata>
+    <pz:metadata type="has-fulltext">no</pz:metadata>
+  </pz:record>
+</collection>
diff --git a/etc/xsl/tmarc5.xml b/etc/xsl/tmarc5.xml
new file mode 100644 (file)
index 0000000..89343ab
--- /dev/null
@@ -0,0 +1,33 @@
+<collection xmlns="http://www.indexdata.com/turbomarc">
+<r>
+  <l>00492nam a22001455a 4500</l>
+  <c001>000277485</c001>
+  <c005>20051026111436.0</c005>
+  <c008>050413s1894    gr            000 0 gre d</c008>
+  <d100 i1="1" i2=" ">
+    <sa>Μαρούδης, Κωνσταντίνος Ιω</sa>
+  </d100>
+  <d245 i1="1" i2="0">
+    <sa>Ελληνικόν κρυπτογραφικόν λεξικόν /</sa>
+    <sc>Κωνστ. Ι. Μαρούδης.</sc>
+  </d245>
+  <d250 i1=" " i2=" ">
+    <s code="η"> εκδ.</s>
+  </d250>
+  <d260 i1=" " i2=" ">
+    <sa>Αθήνα,</sa>
+    <sc>1894.</sc>
+  </d260>
+  <d300 i1=" " i2=" ">
+    <sa>248 σελ.</sa>
+  </d300>
+  <d650 i1=" " i2="0">
+    <sa>Greek language, Modern</sa>
+    <sx>Dialects</sx>
+    <sv>Dictionaries</sv>
+  </d650>
+  <d650 i1=" " i2="0">
+    <sa>Cryptography.</sa>
+  </d650>
+</r>
+</collection>
diff --git a/etc/xsl/tmarc6.res.xml b/etc/xsl/tmarc6.res.xml
new file mode 100644 (file)
index 0000000..5665ab0
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<collection xmlns="http://www.indexdata.com/turbomarc" xmlns:pz="http://www.indexdata.com/pazpar2/1.0" xmlns:tmarc="http://www.indexdata.com/turbomarc">
+  <pz:record>
+    <pz:metadata type="id">   11224466 </pz:metadata>
+    <pz:metadata type="lccn">   11224466 </pz:metadata>
+    <pz:metadata type="author">Jack Collins</pz:metadata>
+    <pz:metadata type="title">How to program a computer</pz:metadata>
+    <pz:metadata type="title-complete">How to program a computer</pz:metadata>
+    <pz:metadata type="publication-place">Penguin</pz:metadata>
+    <pz:metadata type="physical-extent">p. cm.</pz:metadata>
+    <pz:metadata type="medium">book</pz:metadata>
+    <pz:metadata type="has-fulltext">no</pz:metadata>
+  </pz:record>
+</collection>
diff --git a/etc/xsl/tmarc6.xml b/etc/xsl/tmarc6.xml
new file mode 100644 (file)
index 0000000..70d23e7
--- /dev/null
@@ -0,0 +1,34 @@
+<collection xmlns="http://www.indexdata.com/turbomarc">
+<r>
+  <l>00366nam a22001698a 4500</l>
+  <c001>   11224466 </c001>
+  <c003>DLC</c003>
+  <c005>00000000000000.0</c005>
+  <c008>910710c19910701nju           00010 eng  </c008>
+  <d010 i1=" " i2=" ">
+    <sa>   11224466 </sa>
+  </d010>
+  <d040 i1=" " i2=" ">
+    <sa>DLC</sa>
+    <sc>DLC</sc>
+  </d040>
+  <d050 i1="0" i2="0">
+    <sa>123-xyz</sa>
+  </d050>
+  <d100 i1="1" i2="0">
+    <sa>Jack Collins</sa>
+  </d100>
+  <d245 i1="1" i2="0">
+    <sa>How to program a computer</sa>
+  </d245>
+  <d260 i1="1" i2=" ">
+    <sa>Penguin</sa>
+  </d260>
+  <d263 i1=" " i2=" ">
+    <sa>8710</sa>
+  </d263>
+  <d300 i1=" " i2=" ">
+    <sa>p. cm.</sa>
+  </d300>
+</r>
+</collection>
diff --git a/etc/xsl/tmarc7.res.xml b/etc/xsl/tmarc7.res.xml
new file mode 100644 (file)
index 0000000..dc96c3a
--- /dev/null
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<collection xmlns="http://www.indexdata.com/turbomarc" xmlns:pz="http://www.indexdata.com/pazpar2/1.0" xmlns:tmarc="http://www.indexdata.com/turbomarc">
+  <pz:record>
+    <pz:metadata type="id">   77123332 </pz:metadata>
+    <pz:metadata type="lccn">   77123332 </pz:metadata>
+    <pz:metadata type="system-control-nr">57779</pz:metadata>
+    <pz:metadata type="system-control-nr">90490</pz:metadata>
+    <pz:metadata type="system-control-nr">93202</pz:metadata>
+    <pz:metadata type="date">2001</pz:metadata>
+    <pz:metadata type="title">Voyager Diacritic test -- New input 001 (SBIE).</pz:metadata>
+    <pz:metadata type="title-complete">Voyager Diacritic test -- New input 001 (SBIE).</pz:metadata>
+    <pz:metadata type="publication-place">ny :</pz:metadata>
+    <pz:metadata type="publication-name">ny,</pz:metadata>
+    <pz:metadata type="publication-date">2001.</pz:metadata>
+    <pz:metadata type="physical-extent">100 p. ;</pz:metadata>
+    <pz:metadata type="physical-dimensions">12 cm.</pz:metadata>
+    <pz:metadata type="description">New copy imported from file (8/12/99).</pz:metadata>
+    <pz:metadata type="description">VOYAGER COLUMN 0  (NEW):  Degree sign (°);  Phono Copyright mark (℗);  Copyright mark (©);  Sharp (♯);  Inverted Question mark (¿);  Inverted Exclamation mark (¡).</pz:metadata>
+    <pz:metadata type="description">VOYAGER COLUMN 1:  Script L (ℓ);  Polish L (Ł);  Scandanavian O (Ø);  D with Crossbar (Đ);  Icelandic Thorn (Þ);  AE Digraph (Æ); OE Digraph (Œ);  Miagkii Znak (ʹ);  Dot at Midline (·).</pz:metadata>
+    <pz:metadata type="description">VOYAGER COLUMN 2:  Musical Flat (♭);  Patent Mark (®);  Plus or Minus (±);  O Hook (Ơ);  U Hook (Ư);  Alif (ʼ);  alpha α;  Ayn (ʻ);  Polish l (ł).</pz:metadata>
+    <pz:metadata type="description">VOYAGER COLUMN 3:  Scandanavian o (ø);  d with crossbar (đ);  Icelandic Thorn (þ);  ae Digraph (æ);  oe Digraph (œ);  Tverdii Znak (ʺ);  Turkish i (ı);  British Pound (£);  eth (ð).</pz:metadata>
+    <pz:metadata type="description">VOYAGER COLUMN 4:  Dagger (DO NOT USE);  o Hook (ơ);  u Hook (ư);  Beta β;  Gamma γ;  Superscript 0 (⁰);  Superscript 1 (¹);  Superscript 2 (²);  Superscript 3 (³).</pz:metadata>
+    <pz:metadata type="description">VOYAGER COLUMN 5:  Superscript 4 (⁴);  Superscript 5 (⁵);  Superscript 6 (⁶);  Superscript 7 (⁷);  Superscript 8 (⁸);  Superscript 9 (⁹);  Superscript + (⁺);  Superscript - (⁻);  Superscript ( (⁽).</pz:metadata>
+    <pz:metadata type="description">VOYAGER COLUMN 6:  Superscript ) (⁾);  Subscript 0 (₀);  Subscript  1 (₁);  Subscript 2 (₂);  Subscript 3 (₃);  Subscript 4 (₄);  Subscript 5 (₅);  Subscript 6 (₆);  Subscript 7 (₇).</pz:metadata>
+    <pz:metadata type="description">VOYAGER COLUMN 7:  Subscript 8 (₈);  Subscript 9 (₉);  Subscript + (₊);  Subscript - (₋);  Subscript ( (₍);  Subscript ) (₎);  Pseudo Question Mark (ỏ);  Grave (ò);  Acute (ó).</pz:metadata>
+    <pz:metadata type="description">VOYAGER COLUMN 8:  Circumflex (ô);  Tilde (õ);  Macron (ō);  Breve (ŏ);  Superior Dot (ȯ);  Umlaut (ö);  Hacek (ǒ);  Circle Above (o̊);  Ligature left (o͡).</pz:metadata>
+    <pz:metadata type="description">VOYAGER COLUMN 9:  Ligature right (o) ;  High Comma off center (o̕);  Double Acute (ő);  Candrabindu (o̐);  Cedilla (o̧);  Right Hook (ǫ);  Dot Below (ọ);  Double Dot Below (o̤);  Circle Below (o̥).</pz:metadata>
+    <pz:metadata type="description">VOYAGER COLUMN 10:  Double Underscore (o̳);  Underscore (o̲);  Left Hook (o̦);  Right Cedilla (o̜);  Upadhmaniya (o̮);  Double Tilde 1st half (o͠);  Double Tilde 2nd half (o) ;  High Comma centered (o̓).</pz:metadata>
+    <pz:metadata type="description">VOYAGER PC Keyboard:  Spacing Circumflex (^); Spacing Underscore (_); Spacing Grave (`); Open Curly Bracket ({); Close Curly Bracket (}); Spacing Tilde (~).</pz:metadata>
+    <pz:metadata type="description">Standard PC Keyboard:   1234567890-=   !@#$%^&amp;*()_+   qwertyuiop[]\   QWERTYUIOP{}|   asdfghjkl;'  ASDFGHJKL:"   zxcvbnm,./   ZXCVBNM&lt;&gt;?</pz:metadata>
+    <pz:metadata type="medium">book</pz:metadata>
+    <pz:metadata type="has-fulltext">no</pz:metadata>
+  </pz:record>
+</collection>
diff --git a/etc/xsl/tmarc7.xml b/etc/xsl/tmarc7.xml
new file mode 100644 (file)
index 0000000..2acb7d2
--- /dev/null
@@ -0,0 +1,88 @@
+<collection xmlns="http://www.indexdata.com/turbomarc">
+<r>
+  <l>03114cam a2200349 i 4500</l>
+  <c001>   77123332 </c001>
+  <c003>DLC</c003>
+  <c005>20051218154744.0</c005>
+  <c008>981008b2001    ilu           000 0 eng  </c008>
+  <d035 i1=" " i2=" ">
+    <sa>57779</sa>
+  </d035>
+  <d035 i1=" " i2=" ">
+    <sa>90490</sa>
+  </d035>
+  <d035 i1=" " i2=" ">
+    <sa>93202</sa>
+  </d035>
+  <d040 i1=" " i2=" ">
+    <sa>DLC</sa>
+    <sc>DLC</sc>
+  </d040>
+  <d906 i1=" " i2=" ">
+    <sa>0</sa>
+    <sb>und</sb>
+    <sc>orignew</sc>
+    <sd>u</sd>
+    <se>ncip</se>
+    <sf>19</sf>
+    <sg>y-gencatlg</sg>
+  </d906>
+  <d010 i1=" " i2=" ">
+    <sa>   77123332 </sa>
+  </d010>
+  <d245 i1="0" i2="0">
+    <sa>Voyager Diacritic test -- New input 001 (SBIE).</sa>
+  </d245>
+  <d260 i1=" " i2=" ">
+    <sa>ny :</sa>
+    <sb>ny,</sb>
+    <sc>2001.</sc>
+  </d260>
+  <d300 i1=" " i2=" ">
+    <sa>100 p. ;</sa>
+    <sc>12 cm.</sc>
+  </d300>
+  <d500 i1=" " i2=" ">
+    <sa>New copy imported from file (8/12/99).</sa>
+  </d500>
+  <d500 i1=" " i2=" ">
+    <sa>VOYAGER COLUMN 0  (NEW):  Degree sign (°);  Phono Copyright mark (℗);  Copyright mark (©);  Sharp (♯);  Inverted Question mark (¿);  Inverted Exclamation mark (¡).</sa>
+  </d500>
+  <d500 i1=" " i2=" ">
+    <sa>VOYAGER COLUMN 1:  Script L (ℓ);  Polish L (Ł);  Scandanavian O (Ø);  D with Crossbar (Đ);  Icelandic Thorn (Þ);  AE Digraph (Æ); OE Digraph (Œ);  Miagkii Znak (ʹ);  Dot at Midline (·).</sa>
+  </d500>
+  <d500 i1=" " i2=" ">
+    <sa>VOYAGER COLUMN 2:  Musical Flat (♭);  Patent Mark (®);  Plus or Minus (±);  O Hook (Ơ);  U Hook (Ư);  Alif (ʼ);  alpha α;  Ayn (ʻ);  Polish l (ł).</sa>
+  </d500>
+  <d500 i1=" " i2=" ">
+    <sa>VOYAGER COLUMN 3:  Scandanavian o (ø);  d with crossbar (đ);  Icelandic Thorn (þ);  ae Digraph (æ);  oe Digraph (œ);  Tverdii Znak (ʺ);  Turkish i (ı);  British Pound (£);  eth (ð).</sa>
+  </d500>
+  <d500 i1=" " i2=" ">
+    <sa>VOYAGER COLUMN 4:  Dagger (DO NOT USE);  o Hook (ơ);  u Hook (ư);  Beta β;  Gamma γ;  Superscript 0 (⁰);  Superscript 1 (¹);  Superscript 2 (²);  Superscript 3 (³).</sa>
+  </d500>
+  <d500 i1=" " i2=" ">
+    <sa>VOYAGER COLUMN 5:  Superscript 4 (⁴);  Superscript 5 (⁵);  Superscript 6 (⁶);  Superscript 7 (⁷);  Superscript 8 (⁸);  Superscript 9 (⁹);  Superscript + (⁺);  Superscript - (⁻);  Superscript ( (⁽).</sa>
+  </d500>
+  <d500 i1=" " i2=" ">
+    <sa>VOYAGER COLUMN 6:  Superscript ) (⁾);  Subscript 0 (₀);  Subscript  1 (₁);  Subscript 2 (₂);  Subscript 3 (₃);  Subscript 4 (₄);  Subscript 5 (₅);  Subscript 6 (₆);  Subscript 7 (₇).</sa>
+  </d500>
+  <d500 i1=" " i2=" ">
+    <sa>VOYAGER COLUMN 7:  Subscript 8 (₈);  Subscript 9 (₉);  Subscript + (₊);  Subscript - (₋);  Subscript ( (₍);  Subscript ) (₎);  Pseudo Question Mark (ỏ);  Grave (ò);  Acute (ó).</sa>
+  </d500>
+  <d500 i1=" " i2=" ">
+    <sa>VOYAGER COLUMN 8:  Circumflex (ô);  Tilde (õ);  Macron (ō);  Breve (ŏ);  Superior Dot (ȯ);  Umlaut (ö);  Hacek (ǒ);  Circle Above (o̊);  Ligature left (o͡).</sa>
+  </d500>
+  <d500 i1=" " i2=" ">
+    <sa>VOYAGER COLUMN 9:  Ligature right (o) ;  High Comma off center (o̕);  Double Acute (ő);  Candrabindu (o̐);  Cedilla (o̧);  Right Hook (ǫ);  Dot Below (ọ);  Double Dot Below (o̤);  Circle Below (o̥).</sa>
+  </d500>
+  <d500 i1=" " i2=" ">
+    <sa>VOYAGER COLUMN 10:  Double Underscore (o̳);  Underscore (o̲);  Left Hook (o̦);  Right Cedilla (o̜);  Upadhmaniya (o̮);  Double Tilde 1st half (o͠);  Double Tilde 2nd half (o) ;  High Comma centered (o̓).</sa>
+  </d500>
+  <d500 i1=" " i2=" ">
+    <sa>VOYAGER PC Keyboard:  Spacing Circumflex (^); Spacing Underscore (_); Spacing Grave (`); Open Curly Bracket ({); Close Curly Bracket (}); Spacing Tilde (~).</sa>
+  </d500>
+  <d500 i1=" " i2=" ">
+    <sa>Standard PC Keyboard:   1234567890-=   !@#$%^&amp;*()_+   qwertyuiop[]\   QWERTYUIOP{}|   asdfghjkl;&apos;  ASDFGHJKL:&quot;   zxcvbnm,./   ZXCVBNM&lt;&gt;?</sa>
+  </d500>
+</r>
+</collection>
diff --git a/etc/xsl/tmarc8.res.xml b/etc/xsl/tmarc8.res.xml
new file mode 100644 (file)
index 0000000..609ae7b
--- /dev/null
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<collection xmlns="http://www.indexdata.com/turbomarc" xmlns:pz="http://www.indexdata.com/pazpar2/1.0" xmlns:tmarc="http://www.indexdata.com/turbomarc">
+  <pz:record>
+    <pz:metadata type="id">UCD-002592301</pz:metadata>
+    <pz:metadata type="system-control-nr">99851339eo</pz:metadata>
+    <pz:metadata type="author">Clinton, Atkinson.</pz:metadata>
+    <pz:metadata type="date">1583?</pz:metadata>
+    <pz:metadata type="title">Clinton, Purser &amp; Arnold, to their countreymen wheresoeuer</pz:metadata>
+    <pz:metadata type="title-remainder">Wherein is described by their own hands their vnfeigned penitence for their offences past: their patience in welcoming their death, &amp; their duetiful minds towardes her most excellent Maiestie</pz:metadata>
+    <pz:metadata type="title-medium">[electronic resource] :</pz:metadata>
+    <pz:metadata type="title-complete">Clinton, Purser &amp; Arnold, to their countreymen wheresoeuer Wherein is described by their own hands their vnfeigned penitence for their offences past: their patience in welcoming their death, &amp; their duetiful minds towardes her most excellent Maiestie</pz:metadata>
+    <pz:metadata type="publication-place">London :</pz:metadata>
+    <pz:metadata type="publication-name">Imprinted by Iohn Wolfe and are to be sold [by W. Wright] at the middle shop in the Poultry, ioyning S. Mildreds Church,</pz:metadata>
+    <pz:metadata type="publication-date">[1583?]</pz:metadata>
+    <pz:metadata type="physical-extent">[12] p</pz:metadata>
+    <pz:metadata type="description">In verse</pz:metadata>
+    <pz:metadata type="description">The first poem is signed: Thomas Walton alias Purser</pz:metadata>
+    <pz:metadata type="description">Clinton's full name and bookseller's name from, and publication date conjectured by, STC</pz:metadata>
+    <pz:metadata type="description">Signatures: A⁴ B²</pz:metadata>
+    <pz:metadata type="description">Reproduction of the original in the Bodleian Library</pz:metadata>
+    <pz:metadata type="subject">Electronic texts.</pz:metadata>
+    <pz:metadata type="subject-long">Electronic texts., local</pz:metadata>
+    <pz:metadata type="subject">Pirates</pz:metadata>
+    <pz:metadata type="subject-long">Pirates, England, Early works to 1800.</pz:metadata>
+    <pz:metadata type="electronic-url">http://gateway.proquest.com/openurl?ctx_ver=Z39.88-2003&amp;res_id=xri:eebo&amp;rft_val_fmt=&amp;rft_id=xri:eebo:image:16610</pz:metadata>
+    <pz:metadata type="electronic-text">Get resource</pz:metadata>
+    <pz:metadata type="electronic-note">Restricted to UC campuses</pz:metadata>
+    <pz:metadata type="electronic-url">http://gateway.proquest.com/openurl?ctx_ver=Z39.88-2003&amp;res_id=xri:eebo&amp;rft_val_fmt=&amp;rft_id=xri:eebo:image:16610</pz:metadata>
+    <pz:metadata type="electronic-text">Get resource</pz:metadata>
+    <pz:metadata type="electronic-note">Restricted to UC campuses</pz:metadata>
+    <pz:metadata type="electronic-url">http://gateway.proquest.com/openurl?ctx_ver=Z39.88-2003&amp;res_id=xri:eebo&amp;rft_val_fmt=&amp;rft_id=xri:eebo:image:16610</pz:metadata>
+    <pz:metadata type="electronic-text">Get resource</pz:metadata>
+    <pz:metadata type="electronic-note">Restricted to UC campuses</pz:metadata>
+    <pz:metadata type="electronic-url">http://gateway.proquest.com/openurl?ctx_ver=Z39.88-2003&amp;res_id=xri:eebo&amp;rft_val_fmt=&amp;rft_id=xri:eebo:image:16610</pz:metadata>
+    <pz:metadata type="electronic-text">Get resource</pz:metadata>
+    <pz:metadata type="electronic-note">Restricted to UC campuses</pz:metadata>
+    <pz:metadata type="callnumber">Internet</pz:metadata>
+    <pz:metadata type="medium">book (electronic)</pz:metadata>
+    <pz:metadata type="has-fulltext">no</pz:metadata>
+    <pz:metadata type="iii-id">DVXL</pz:metadata>
+  </pz:record>
+</collection>
diff --git a/etc/xsl/tmarc8.xml b/etc/xsl/tmarc8.xml
new file mode 100644 (file)
index 0000000..b1e7c76
--- /dev/null
@@ -0,0 +1,141 @@
+<collection xmlns="http://www.indexdata.com/turbomarc">
+<r>
+  <l>02647nam^a2200469^^^4500</l>
+  <c001>UCD-002592301</c001>
+  <c005>20061209034435.0</c005>
+  <c006>m        d        </c006>
+  <c007>cr bn |||a|bb|</c007>
+  <c008>920330s1583    enk     s     000 0 eng d</c008>
+  <d035 i1=" " i2=" ">
+    <sa>99851339eo</sa>
+  </d035>
+  <d037 i1=" " i2=" ">
+    <sa>CL0036000039</sa>
+    <sb>ProQuest Information and Learning. 300 N. Zeeb Rd., Ann Arbor, MI 48106</sb>
+  </d037>
+  <d040 i1=" " i2=" ">
+    <sa>Cu-RivES</sa>
+    <sc>Cu-RivES</sc>
+    <sd>CStRLIN</sd>
+    <se>dcrb</se>
+    <sd>WaOLN</sd>
+  </d040>
+  <d100 i1="1" i2=" ">
+    <sa>Clinton, Atkinson.</sa>
+  </d100>
+  <d245 i1="0" i2="0">
+    <sa>Clinton, Purser &amp; Arnold, to their countreymen wheresoeuer</sa>
+    <sh>[electronic resource] :</sh>
+    <sb>Wherein is described by their own hands their vnfeigned penitence for their offences past: their patience in welcoming their death, &amp; their duetiful minds towardes her most excellent Maiestie</sb>
+  </d245>
+  <d246 i1="2" i2=" ">
+    <sa>Clinton, Purser &amp; Arnold, to their countreymen wheresoever</sa>
+  </d246>
+  <d246 i1="2" i2=" ">
+    <sa>Clinton, Purser &amp; Arnold, to their countreymen wheresoever</sa>
+  </d246>
+  <d260 i1=" " i2=" ">
+    <sa>London :</sa>
+    <sb>Imprinted by Iohn Wolfe and are to be sold [by W. Wright] at the middle shop in the Poultry, ioyning S. Mildreds Church,</sb>
+    <sc>[1583?]</sc>
+  </d260>
+  <d300 i1=" " i2=" ">
+    <sa>[12] p</sa>
+  </d300>
+  <d500 i1=" " i2=" ">
+    <sa>In verse</sa>
+  </d500>
+  <d500 i1=" " i2=" ">
+    <sa>The first poem is signed: Thomas Walton alias Purser</sa>
+  </d500>
+  <d500 i1=" " i2=" ">
+    <sa>Clinton&apos;s full name and bookseller&apos;s name from, and publication date conjectured by, STC</sa>
+  </d500>
+  <d500 i1=" " i2=" ">
+    <sa>Signatures: A⁴ B²</sa>
+  </d500>
+  <d500 i1=" " i2=" ">
+    <sa>Reproduction of the original in the Bodleian Library</sa>
+  </d500>
+  <d510 i1="4" i2=" ">
+    <sa>STC (2nd ed.)</sa>
+    <sc>5431</sc>
+  </d510>
+  <d530 i1=" " i2=" ">
+    <sa>Also issued in print and on microform</sa>
+  </d530>
+  <d533 i1=" " i2=" ">
+    <sa>Electronic reproduction.</sa>
+    <sn>Mode of access: World Wide Web.</sn>
+    <sn>Restricted to UC campuses</sn>
+  </d533>
+  <d655 i1=" " i2="7">
+    <sa>Electronic texts.</sa>
+    <s2>local</s2>
+  </d655>
+  <d650 i1=" " i2="0">
+    <sa>Pirates</sa>
+    <sz>England</sz>
+    <sv>Early works to 1800.</sv>
+  </d650>
+  <d700 i1="1" i2=" ">
+    <sa>Walton, Thomas,</sa>
+    <sd>fl. 1583.</sd>
+    <s4>aut</s4>
+  </d700>
+  <d700 i1="1" i2=" ">
+    <sa>Arnold,</sa>
+    <sd>fl. 1583.</sd>
+    <s4>aut</s4>
+  </d700>
+  <d793 i1="0" i2=" ">
+    <sa>Early English books online</sa>
+  </d793>
+  <d852 i1=" " i2=" ">
+    <sa>MER</sa>
+    <sb>kmain</sb>
+  </d852>
+  <d852 i1=" " i2=" ">
+    <sa>SCB</sa>
+    <sb>nnet</sb>
+  </d852>
+  <d856 i1="4" i2="0">
+    <sz>Restricted to UC campuses</sz>
+    <sx>SCP UCSD</sx>
+    <su>http://gateway.proquest.com/openurl?ctx_ver=Z39.88-2003&amp;res_id=xri:eebo&amp;rft_val_fmt=&amp;rft_id=xri:eebo:image:16610</su>
+  </d856>
+  <d856 i1="4" i2="0">
+    <sz>Restricted to UC campuses</sz>
+    <sx>SCP UCSD</sx>
+    <su>http://gateway.proquest.com/openurl?ctx_ver=Z39.88-2003&amp;res_id=xri:eebo&amp;rft_val_fmt=&amp;rft_id=xri:eebo:image:16610</su>
+  </d856>
+  <d852 i1=" " i2=" ">
+    <sa>DVXL</sa>
+    <sb>ELECT-GEN</sb>
+    <sh>Internet</sh>
+  </d852>
+  <d852 i1=" " i2=" ">
+    <sa>LAGE</sa>
+    <sb>in</sb>
+    <s3>Online access</s3>
+  </d852>
+  <d856 i1="4" i2="0">
+    <sz>Restricted to UC campuses</sz>
+    <sx>SCP UCSD</sx>
+    <su>http://gateway.proquest.com/openurl?ctx_ver=Z39.88-2003&amp;res_id=xri:eebo&amp;rft_val_fmt=&amp;rft_id=xri:eebo:image:16610</su>
+  </d856>
+  <d856 i1="4" i2="0">
+    <sz>Restricted to UC campuses</sz>
+    <su>http://gateway.proquest.com/openurl?ctx_ver=Z39.88-2003&amp;res_id=xri:eebo&amp;rft_val_fmt=&amp;rft_id=xri:eebo:image:16610</su>
+    <sx>CDL</sx>
+  </d856>
+  <d830 i1=" " i2="0">
+    <sa>Early English books, 1475-1640 ;</sa>
+    <sv>1406:13.</sv>
+  </d830>
+  <d901 i1=" " i2=" ">
+    <sa>DVXL</sa>
+    <sb>002592301</sb>
+  </d901>
+</r>
+</collection>
diff --git a/etc/xsl/tmarc9.res.xml b/etc/xsl/tmarc9.res.xml
new file mode 100644 (file)
index 0000000..e545673
--- /dev/null
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<collection xmlns="http://www.indexdata.com/turbomarc" xmlns:pz="http://www.indexdata.com/pazpar2/1.0" xmlns:tmarc="http://www.indexdata.com/turbomarc">
+  <pz:record>
+    <pz:metadata type="id">  2005336282</pz:metadata>
+    <pz:metadata type="oclc-number">(OCoLC)170490164</pz:metadata>
+    <pz:metadata type="lccn">  2005336282</pz:metadata>
+    <pz:metadata type="system-control-nr">(OCoLC)170490164</pz:metadata>
+    <pz:metadata type="date">2005-</pz:metadata>
+    <pz:metadata type="title">Qaḍāʼ al-usrah :</pz:metadata>
+    <pz:metadata type="title-remainder">majallah mutakhaṣṣiṣah /</pz:metadata>
+    <pz:metadata type="title-responsibility">Wizārat al-ʻAdl.</pz:metadata>
+    <pz:metadata type="title-complete">Qaḍāʼ al-usrah : majallah mutakhaṣṣiṣah /</pz:metadata>
+    <pz:metadata type="publication-place">al-Rabāṭ :</pz:metadata>
+    <pz:metadata type="publication-name">Jamʻīyat Nashr al-Maʻlūmah al-Qānūnīyah wa-al-Qaḍāʼīyah,</pz:metadata>
+    <pz:metadata type="publication-date">2005-</pz:metadata>
+    <pz:metadata type="physical-extent">v. :</pz:metadata>
+    <pz:metadata type="physical-format">ill. ;</pz:metadata>
+    <pz:metadata type="physical-dimensions">24 cm.</pz:metadata>
+    <pz:metadata type="description">Some issues have also a distinctive title.</pz:metadata>
+    <pz:metadata type="description">Latest issue consulted: al-ʻAdad 3. (Dujanbir 2006).</pz:metadata>
+    <pz:metadata type="subject">Domestic relations (Islamic law)</pz:metadata>
+    <pz:metadata type="subject-long">Domestic relations (Islamic law), Morocco.</pz:metadata>
+    <pz:metadata type="subject">Divorce (Islamic law)</pz:metadata>
+    <pz:metadata type="subject-long">Divorce (Islamic law)</pz:metadata>
+    <pz:metadata type="subject">Marriage law</pz:metadata>
+    <pz:metadata type="subject-long">Marriage law, Morocco.</pz:metadata>
+    <pz:metadata type="subject">Law reports, digests, etc.</pz:metadata>
+    <pz:metadata type="subject-long">Law reports, digests, etc., Morocco.</pz:metadata>
+    <pz:metadata type="medium">journal</pz:metadata>
+    <pz:metadata type="has-fulltext">no</pz:metadata>
+  </pz:record>
+</collection>
diff --git a/etc/xsl/tmarc9.xml b/etc/xsl/tmarc9.xml
new file mode 100644 (file)
index 0000000..7e070cc
--- /dev/null
@@ -0,0 +1,157 @@
+<collection xmlns="http://www.indexdata.com/turbomarc">
+<r>
+  <l>02075cas a22005055a 4500</l>
+  <c001>  2005336282</c001>
+  <c003>DLC</c003>
+  <c005>20070911033614.0</c005>
+  <c008>070910c20059999mr uu p      f0    0ara  </c008>
+  <d010 i1=" " i2=" ">
+    <sa>  2005336282</sa>
+  </d010>
+  <d012 i1=" " i2=" ">
+    <sa>-3-7-0709110002-p-----    </sa>
+  </d012>
+  <d035 i1=" " i2=" ">
+    <sa>(OCoLC)170490164</sa>
+  </d035>
+  <d906 i1=" " i2=" ">
+    <sa>7</sa>
+    <sb>und</sb>
+    <sc>serials</sc>
+    <sd>u</sd>
+    <se>ncip</se>
+    <sf>19</sf>
+    <sg>n-oclcserc</sg>
+  </d906>
+  <d040 i1=" " i2=" ">
+    <sa>DLC</sa>
+    <sc>DLC</sc>
+    <sd>DLC</sd>
+  </d040>
+  <d041 i1="0" i2=" ">
+    <sa>ara</sa>
+    <sa>fre</sa>
+  </d041>
+  <d042 i1=" " i2=" ">
+    <sa>lc</sa>
+  </d042>
+  <d043 i1=" " i2=" ">
+    <sa>f-mr---</sa>
+  </d043>
+  <d050 i1="0" i2="0">
+    <sa>IN PROCESS</sa>
+  </d050>
+  <d066 i1=" " i2=" ">
+    <sc>(3</sc>
+  </d066>
+  <d245 i1="0" i2="0">
+    <s6>880-01</s6>
+    <sa>Qaḍāʼ al-usrah :</sa>
+    <sb>majallah mutakhaṣṣiṣah /</sb>
+    <sc>Wizārat al-ʻAdl.</sc>
+  </d245>
+  <d246 i1="1" i2="3">
+    <sa>Justice de la famille</sa>
+  </d246>
+  <d246 i1="1" i2="3">
+    <s6>880-02</s6>
+    <sa>Majallat Qaḍāʼ al-usrah</sa>
+    <sf>&lt;2006&gt;</sf>
+  </d246>
+  <d260 i1=" " i2=" ">
+    <s6>880-03</s6>
+    <sa>al-Rabāṭ :</sa>
+    <sb>Jamʻīyat Nashr al-Maʻlūmah al-Qānūnīyah wa-al-Qaḍāʼīyah,</sb>
+    <sc>2005-</sc>
+  </d260>
+  <d300 i1=" " i2=" ">
+    <sa>v. :</sa>
+    <sb>ill. ;</sb>
+    <sc>24 cm.</sc>
+  </d300>
+  <d310 i1=" " i2=" ">
+    <sa>Irregular (semiannual)</sa>
+  </d310>
+  <d362 i1="0" i2=" ">
+    <s6>880-04</s6>
+    <sa>al-ʻAdad 1. (Yūlyūz 2005)-</sa>
+  </d362>
+  <d490 i1="0" i2=" ">
+    <s6>880-05</s6>
+    <sa>Manshūrāt Jamʻīyat Nashr al-Maʻlūmah al-Qānūnīyah wa-al-Qaḍāʼīyah</sa>
+  </d490>
+  <d500 i1=" " i2=" ">
+    <sa>Some issues have also a distinctive title.</sa>
+  </d500>
+  <d500 i1=" " i2=" ">
+    <sa>Latest issue consulted: al-ʻAdad 3. (Dujanbir 2006).</sa>
+  </d500>
+  <d546 i1=" " i2=" ">
+    <sa>Chiefly in Arabic; some French.</sa>
+  </d546>
+  <d650 i1=" " i2="0">
+    <sa>Domestic relations (Islamic law)</sa>
+    <sz>Morocco.</sz>
+  </d650>
+  <d650 i1=" " i2="0">
+    <sa>Divorce (Islamic law)</sa>
+  </d650>
+  <d650 i1=" " i2="0">
+    <sa>Marriage law</sa>
+    <sz>Morocco.</sz>
+  </d650>
+  <d650 i1=" " i2="0">
+    <sa>Law reports, digests, etc.</sa>
+    <sz>Morocco.</sz>
+  </d650>
+  <d710 i1="2" i2=" ">
+    <s6>880-06</s6>
+    <sa>Jamʻīyat Nashr al-Maʻlūmah al-Qānūnīyah wa-al-Qaḍāʼīyah.</sa>
+  </d710>
+  <d710 i1="1" i2=" ">
+    <s6>880-07</s6>
+    <sa>Morocco.</sa>
+    <sb>Wizārat al-ʻAdl.</sb>
+  </d710>
+  <d850 i1=" " i2=" ">
+    <sa>DLC</sa>
+  </d850>
+  <d880 i1="0" i2="0">
+    <s6>245-01/(3/r</s6>
+    <sa>قضاء الأسرة :</sa>
+    <sb>مجلة متخصصة /</sb>
+    <sc>وزارة العدل.</sc>
+  </d880>
+  <d880 i1="1" i2="3">
+    <s6>246-02/(3/r</s6>
+    <sa>مجلة قضاء الأسرة</sa>
+    <sf>&lt;2006&gt;</sf>
+  </d880>
+  <d880 i1=" " i2=" ">
+    <s6>260-03/(3/r</s6>
+    <sa>الرباط :</sa>
+    <sb>جمعية نشر المعلومة القانونية والقضائية،</sb>
+    <sc>2005-</sc>
+  </d880>
+  <d880 i1="0" i2=" ">
+    <s6>362-04/(3/r</s6>
+    <sa>العدد 1. (يوليوز 2005)-</sa>
+  </d880>
+  <d880 i1="0" i2=" ">
+    <s6>490-05/(3/r</s6>
+    <sa>منشورات جمعية نشر المعلومة القانونية والقضائية</sa>
+  </d880>
+  <d880 i1="2" i2=" ">
+    <s6>710-06/(3/r</s6>
+    <sa>جمعية نشر المعلومة القانونية والقضائية.</sa>
+  </d880>
+  <d880 i1="1" i2=" ">
+    <s6>710-07/(3/r</s6>
+    <sa>Morocco.</sa>
+    <sb>وزارة العدل.</sb>
+  </d880>
+  <d936 i1=" " i2=" ">
+    <sa>LC Cairo Office [we 45]</sa>
+  </d936>
+</r>
+</collection>
diff --git a/etc/xsl/unimarc.xsl b/etc/xsl/unimarc.xsl
new file mode 100644 (file)
index 0000000..4842e24
--- /dev/null
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet
+    version="1.0"
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:pz="http://www.indexdata.com/pazpar2/1.0"
+    xmlns:marc="http://www.loc.gov/MARC21/slim">
+
+ <xsl:output indent="yes" method="xml" version="1.0" encoding="UTF-8"/>
+
+
+  <xsl:template match="/marc:record">
+    <pz:record>
+
+      <xsl:for-each select="marc:controlfield[@tag='001']">
+        <pz:metadata type="id">
+          <xsl:value-of select="."/>
+        </pz:metadata>
+      </xsl:for-each>
+
+      <!-- -->
+      <xsl:for-each select="marc:datafield[@tag='020']">
+       <xsl:if test="marc:subfield[@code='a'] = 'US'">
+          <pz:metadata type="lccn">
+           <xsl:value-of select="marc:subfield[@code='b']"/>
+         </pz:metadata>
+       </xsl:if>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='010']">
+        <pz:metadata type="isbn">
+         <xsl:value-of select="marc:subfield[@code='a']"/>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag='011']">
+        <pz:metadata type="issn">
+         <xsl:value-of select="marc:subfield[@code='a']"/>
+       </pz:metadata>
+      </xsl:for-each>
+
+
+      <xsl:for-each select="marc:datafield[@tag='200']">
+        <pz:metadata type="title">
+          <xsl:value-of select="marc:subfield[@code='a']"/>
+        </pz:metadata>
+      </xsl:for-each>
+
+
+      <!-- Date of Pulbication -->
+      <xsl:for-each select="marc:datafield[@tag='210']">
+        <pz:metadata type="date">
+         <xsl:value-of select="marc:subfield[@code='d']"/>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <!--  Usmarc 650 maps to unimarc 606 and marc21 653 maps to unimarc 610 -->
+      <xsl:for-each select="marc:datafield[@tag='606' or @tag='610']">
+       <pz:metadata type="subject">
+         <xsl:value-of select="marc:subfield[@code='a']"/>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <xsl:for-each select="marc:datafield[@tag &gt;= 300 and @tag &lt;= 345]
+                            [@tag != '325']">
+        <pz:metadata type="description">
+            <xsl:value-of select="*/text()"/>
+        </pz:metadata>
+      </xsl:for-each>
+
+
+      <!-- Author : primary, alternative and secondary responsibility (equivalent marc21 tags : 100, 700 -->
+      <xsl:for-each select="marc:datafield[@tag='700' or @tag='701' or @tag='702']">
+       <pz:metadata type="author">
+         <xsl:value-of select="marc:subfield[@code='a']"/>
+          <xsl:text>, </xsl:text>
+         <xsl:value-of select="marc:subfield[@code='b']"/>
+       </pz:metadata>
+      </xsl:for-each>
+
+      <!-- Author : marc21 tag 720 maps to unimarc 730
+      <xsl:for-each select="marc:datafield[@tag='730']">
+       <pz:metadata type="author">
+         <xsl:value-of select="marc:subfield[@code='a']"/>
+       </pz:metadata>
+      </xsl:for-each>
+      -->
+
+      <!-- -->
+      <xsl:for-each select="marc:datafield[@tag='856']">
+       <pz:metadata type="url">
+         <xsl:value-of select="marc:subfield[@code='u']"/>
+       </pz:metadata>
+      </xsl:for-each>
+
+    </pz:record>
+  </xsl:template>
+
+</xsl:stylesheet>
index 59c501d..fb6264c 100644 (file)
--- a/js/pz2.js
+++ b/js/pz2.js
@@ -769,7 +769,7 @@ pz2.prototype =
 ** AJAX HELPER CLASS ***********************************************************
 ********************************************************************************
 */
-var pzHttpRequest = function (url, errorHandler, cookieDomain) {
+var pzHttpRequest = function (url, errorHandler, cookieDomain, windowId) {
         this.maxUrlLength = 2048;
         this.request = null;
         this.url = url;
@@ -779,6 +779,7 @@ var pzHttpRequest = function (url, errorHandler, cookieDomain) {
         this.isXDR = false;
         this.domainRegex = /https?:\/\/([^:/]+).*/;
         this.cookieDomain = cookieDomain || null;
+        this.windowId = windowId || window.name;
 
         var xhr = new XMLHttpRequest();
         var domain = this._getDomainFromUrl(url);
@@ -906,9 +907,9 @@ pzHttpRequest.prototype =
         //session cookie, resend it
         var domain = this._getDomainFromUrl(url);
         if (domain && this._isCrossDomain(domain) &&
-            this.getCookie(domain+":SESSID")) {
+            this.getCookie(domain+":"+this.windowId+":SESSID")) {
           //rewrite the URL
-          var sessparam = ';jsessionid=' + this.getCookie(domain+":SESSID");
+          var sessparam = ';jsessionid=' + this.getCookie(domain+":"+this.windowId+":SESSID");
           var q = url.indexOf('?');
           if (q == -1) {
             url += sessparam;            
@@ -1020,7 +1021,7 @@ pzHttpRequest.prototype =
                   var jsessionId = this.request.responseXML
                     .documentElement.getAttribute('jsessionId');
                   if (jsessionId)                  
-                    this.setCookie(domain+":SESSID", jsessionId);
+                    this.setCookie(domain+":"+this.windowId+":SESSID", jsessionId);
                 }
                 this.callback(this.request.responseXML);
             } else {
index c4ee13d..5bf759e 100644 (file)
@@ -13,6 +13,7 @@ Packager: Adam Dickmeiss <adam@indexdata.dk>
 URL: http://www.indexdata.com/pazpar2
 Summary: pazpar2 daemon
 Requires: libyaz5 >= 5.0.0
+Requires: pazpar2-xsl
 
 %description
 Pazpar2 is a high-performance, user interface-independent, data
@@ -25,6 +26,14 @@ Group: Data
 Requires: pazpar2
 
 %post
+for f in /usr/share/pazpar2/xsl/*.xsl; do
+       e=/etc/pazpar2/`basename $f`
+       if test -f $e; then
+               if diff $e $f >/dev/null; then
+                       rm $e
+               fi
+       fi
+done
 if [ $1 = 1 ]; then
        /sbin/chkconfig --add pazpar2
        /sbin/service pazpar2 start > /dev/null 2>&1
@@ -52,6 +61,14 @@ if [ $1 = 0 ]; then
                rm /etc/httpd/conf.d/pazpar2-js.conf
        fi
 fi
+%package -n pazpar2-xsl
+Summary: XSLTs for converting to pz2 format
+Group: Data
+
+%description -n pazpar2-xsl
+This package includes XSLTs for converting from various input XML formats
+to Pazpar2's internal XML format.
+
 %package -n pazpar2-doc
 Summary: pazpar2 documentation
 Group: Data
@@ -81,7 +98,8 @@ cp etc/default.xml ${RPM_BUILD_ROOT}/etc/pazpar2/services-available/
 cp etc/services/*.xml ${RPM_BUILD_ROOT}/etc/pazpar2/services-available/
 cp etc/settings/*.xml ${RPM_BUILD_ROOT}/etc/pazpar2/settings/
 cp -r etc/settings/mkc ${RPM_BUILD_ROOT}/etc/pazpar2/settings
-cp etc/*.xsl ${RPM_BUILD_ROOT}/etc/pazpar2/
+mkdir -p ${RPM_BUILD_ROOT}/usr/share/pazpar2/xsl
+cp etc/xsl/*.xsl ${RPM_BUILD_ROOT}/usr/share/pazpar2/xsl
 mkdir -p ${RPM_BUILD_ROOT}/etc/rc.d/init.d
 install -m755 rpm/pazpar2.init ${RPM_BUILD_ROOT}/etc/rc.d/init.d/pazpar2
 echo "Alias /pazpar2 /usr/share/pazpar2" >${RPM_BUILD_ROOT}/etc/pazpar2/ap2pazpar2-js.cfg
@@ -101,7 +119,6 @@ rm -fr ${RPM_BUILD_ROOT}
 %dir %{_sysconfdir}/pazpar2/services-enabled
 %dir %{_sysconfdir}/pazpar2/services-available
 %config %{_sysconfdir}/pazpar2/*.xml
-%config %{_sysconfdir}/pazpar2/*.xsl
 %config %{_sysconfdir}/pazpar2/settings/*.xml
 %config %{_sysconfdir}/pazpar2/settings/*/*.xml
 %config %{_sysconfdir}/pazpar2/services-available/*.xml
@@ -116,6 +133,10 @@ rm -fr ${RPM_BUILD_ROOT}
 %{_datadir}/pazpar2/js/pz2.js
 %config %{_sysconfdir}/pazpar2/ap2pazpar2-js.cfg
 
+%files -n pazpar2-xsl
+%defattr(-,root,root)
+%{_datadir}/pazpar2/xsl
+
 %files -n pazpar2-doc
 %defattr(-,root,root)
 %{_defaultdocdir}/pazpar2
index 8ad2220..8686ec7 100644 (file)
@@ -868,6 +868,7 @@ int client_start_search(struct client *cl)
     if (cl->same_search == 1 && rc_prep_connection == 2)
     {
         session_log(se, YLOG_LOG, "client %s resuse result", client_get_id(cl));
+        client_report_facets(cl, cl->resultset);
         return client_reingest(cl);
     }
     else if (!rc_prep_connection)
index 630db75..15bfc56 100644 (file)
@@ -330,6 +330,7 @@ static int connection_connect(struct connection *con, iochan_man_t iochan_man)
     struct session_database *sdb = client_get_database(con->client);
     const char *apdulog = session_setting_oneval(sdb, PZ_APDULOG);
     const char *memcached = session_setting_oneval(sdb, PZ_MEMCACHED);
+    const char *redis = session_setting_oneval(sdb, PZ_REDIS);
 
     assert(con);
 
@@ -341,6 +342,8 @@ static int connection_connect(struct connection *con, iochan_man_t iochan_man)
         ZOOM_options_set(zoptions, "charset", charset);
     if (memcached && *memcached)
         ZOOM_options_set(zoptions, "memcached", memcached);
+    if (redis && *redis)
+        ZOOM_options_set(zoptions, "redis", redis);
 
     if (con->zproxy)
     {
index 681503a..2064fee 100644 (file)
@@ -200,11 +200,18 @@ static struct database_criterion *create_database_criterion(NMEM m,
         int subi;
         struct database_criterion *new = nmem_malloc(m, sizeof(*new));
         char *eq;
-        if ((eq = strchr(values[i], '=')))
-            new->type = PAZPAR2_STRING_MATCH;
-        else if ((eq = strchr(values[i], '~')))
-            new->type = PAZPAR2_SUBSTRING_MATCH;
-        else
+        for (eq = values[i]; *eq; eq++)
+            if (*eq == '=')
+            {
+                new->type = PAZPAR2_STRING_MATCH;
+                break;
+            }
+            else if (*eq == '~')
+            {
+                new->type = PAZPAR2_SUBSTRING_MATCH;
+                break;
+            }
+        if (!*eq)
         {
             yaz_log(YLOG_WARN, "Missing equal-sign/tilde in filter");
             return 0;
index 373cf6c..ea15f46 100644 (file)
@@ -36,7 +36,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
 struct normalize_step {
     struct normalize_step *next;
-    xsltStylesheet *stylesheet;  /* created by normalize_record */
+    xsltStylesheet *stylesheet1; /* created by normalize_record */
     xsltStylesheet *stylesheet2; /* external stylesheet (service) */
     struct marcmap *marcmap;
 };
@@ -66,15 +66,16 @@ normalize_record_t normalize_record_create(struct conf_service *service,
 
         if (!xsp_doc)
             no_errors++;
+        else
         {
             *m = nmem_malloc(nt->nmem, sizeof(**m));
             (*m)->marcmap = NULL;
-            (*m)->stylesheet = NULL;
+            (*m)->stylesheet1 = NULL;
             (*m)->stylesheet2 = NULL;
 
 
-            (*m)->stylesheet = xsltParseStylesheetDoc(xsp_doc);
-            if (!(*m)->stylesheet)
+            (*m)->stylesheet1 = xsltParseStylesheetDoc(xsp_doc);
+            if (!(*m)->stylesheet1)
                 no_errors++;
             m = &(*m)->next;
         }
@@ -92,14 +93,14 @@ normalize_record_t normalize_record_create(struct conf_service *service,
 
             *m = nmem_malloc(nt->nmem, sizeof(**m));
             (*m)->marcmap = NULL;
-            (*m)->stylesheet = NULL;
+            (*m)->stylesheet1 = NULL;
 
             (*m)->stylesheet2 = service_xslt_get(service, stylesheets[i]);
             if ((*m)->stylesheet2)
                 ;
             else if (!strcmp(&stylesheets[i][strlen(stylesheets[i])-4], ".xsl"))
             {
-                if (!((*m)->stylesheet =
+                if (!((*m)->stylesheet1 =
                       xsltParseStylesheetFile((xmlChar *) wrbuf_cstr(fname))))
                 {
                     yaz_log(YLOG_FATAL|YLOG_ERRNO, "Unable to load stylesheet: %s",
@@ -143,8 +144,8 @@ void normalize_record_destroy(normalize_record_t nt)
         struct normalize_step *m;
         for (m = nt->steps; m; m = m->next)
         {
-            if (m->stylesheet)
-                xsltFreeStylesheet(m->stylesheet);
+            if (m->stylesheet1)
+                xsltFreeStylesheet(m->stylesheet1);
         }
         nmem_destroy(nt->nmem);
     }
@@ -160,8 +161,8 @@ int normalize_record_transform(normalize_record_t nt, xmlDoc **doc,
        {
            xmlNodePtr root = 0;
            xmlDoc *ndoc;
-           if (m->stylesheet)
-               ndoc = xsltApplyStylesheet(m->stylesheet, *doc, parms);
+           if (m->stylesheet1)
+               ndoc = xsltApplyStylesheet(m->stylesheet1, *doc, parms);
            else if (m->stylesheet2)
                ndoc = xsltApplyStylesheet(m->stylesheet2, *doc, parms);
            else if (m->marcmap)
index 82ce585..c8ae0a8 100644 (file)
@@ -54,6 +54,7 @@ struct conf_config
 
     int no_threads;
     WRBUF confdir;
+    char *path;
     iochan_man_t iochan_man;
 };
 
@@ -255,13 +256,20 @@ int conf_service_sortkey_field_id(struct conf_service *service,
 
 static void conf_dir_path(struct conf_config *config, WRBUF w, const char *src)
 {
-    if (config->confdir && wrbuf_len(config->confdir) > 0 &&
-        !yaz_is_abspath(src))
+    char full_path[1024];
+    if (yaz_filepath_resolve(src, config->path,
+                             wrbuf_len(config->confdir) > 0 ?
+                             wrbuf_cstr(config->confdir) : ".",
+                             full_path))
     {
-        wrbuf_printf(w, "%s/%s", wrbuf_cstr(config->confdir), src);
+        wrbuf_puts(w, full_path);
     }
     else
+    {
+        yaz_log(YLOG_WARN, "File not found: fname=%s path=%s base=%s", src,
+                config->path, wrbuf_cstr(config->confdir));
         wrbuf_puts(w, src);
+    }
 }
 
 void service_destroy(struct conf_service *service)
@@ -1242,6 +1250,15 @@ static int parse_config(struct conf_config *config, xmlNode *root)
                 xmlFree(number);
             }
         }
+        else if (!strcmp((const char *) n->name, "file"))
+        {
+            xmlChar *path = xmlGetProp(n, (xmlChar *) "path");
+            if (path)
+            {
+                config->path = nmem_strdup(config->nmem, (const char *) path);
+                xmlFree(path);
+            }
+        }
         else if (!strcmp((const char *) n->name, "targetprofiles"))
         {
             yaz_log(YLOG_FATAL, "targetprofiles unsupported here. Must be part of service");
@@ -1288,6 +1305,7 @@ struct conf_config *config_create(const char *fname, int verbose)
 
     config->nmem = nmem;
     config->servers = 0;
+    config->path = nmem_strdup(nmem, ".");
     config->no_threads = 0;
     config->iochan_man = 0;
 
index e8d6125..a17d094 100644 (file)
@@ -85,6 +85,7 @@ static char *hard_settings[] = {
     "pz:authentication_mode",
     "pz:native_score",
     "pz:memcached",
+    "pz:redis",
     0
 };
 
index 3f306a0..de43d28 100644 (file)
@@ -58,6 +58,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #define PZ_AUTHENTICATION_MODE  35
 #define PZ_NATIVE_SCORE         36
 #define PZ_MEMCACHED            37
+#define PZ_REDIS                38
 #define PZ_MAX_EOF              39
 
 struct setting
index 607b06d..f33c0b0 100644 (file)
@@ -4,7 +4,7 @@
 solr_tests = test_solr.sh test_termlist_block.sh test_limit_limitmap.sh test_sort.sh
 check_SCRIPTS = test_http.sh test_icu.sh test_post.sh \
  test_settings.sh test_turbomarcxml.sh test_facets.sh \
- test_url.sh test_filter.sh test_tmarc.sh test_sru.sh \
+ test_url.sh test_filter.sh test_sru.sh \
  $(solr_tests)
 
 EXTRA_DIST = run_pazpar2.sh marc21_test.xsl tmarc.xsl solr-pz2.xsl \
@@ -49,5 +49,3 @@ dist-hook:
        cp ${srcdir}/test_*.res $(distdir)
        mkdir $(distdir)/set2
        cp ${srcdir}/set2/*.xml $(distdir)/set2
-       cp ${srcdir}/tmarc?.xml $(distdir)
-       cp ${srcdir}/tmarc?.res.xml $(distdir)
index 5f087c0..bf2924b 100644 (file)
@@ -23,3 +23,5 @@ test_facets_settings_2.xml http://localhost:9763/search.pz2?session=2&command=se
 http://localhost:9763/search.pz2?session=2&command=search&query=9+and+computer
 10 http://localhost:9763/search.pz2?session=2&command=show&block=1
 http://localhost:9763/search.pz2?session=2&command=termlist&name=xtargets%2Cauthor%2Csubject%2Cdate%2Cmedium
+http://localhost:9763/search.pz2?session=2&command=search&query=9+and+computer
+http://localhost:9763/search.pz2?session=2&command=termlist&name=xtargets%2Cauthor%2Csubject%2Cdate%2Cmedium
diff --git a/test/test_facets_26.res b/test/test_facets_26.res
new file mode 100644 (file)
index 0000000..ab63fe6
--- /dev/null
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<search><status>OK</status></search>
\ No newline at end of file
diff --git a/test/test_facets_27.res b/test/test_facets_27.res
new file mode 100644 (file)
index 0000000..c259c84
--- /dev/null
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<termlist><activeclients>0</activeclients>
+<list name="xtargets">
+<term>
+<id>localhost:9999/db1</id>
+<name>db1</name>
+<frequency>9</frequency>
+<state>Client_Idle</state>
+<diagnostic>0</diagnostic>
+</term>
+</list>
+<list name="author">
+<term><name>author0</name><frequency>100</frequency></term>
+<term><name>author1</name><frequency>90</frequency></term>
+<term><name>author2</name><frequency>80</frequency></term>
+<term><name>author3</name><frequency>70</frequency></term>
+<term><name>author4</name><frequency>60</frequency></term>
+<term><name>author5</name><frequency>50</frequency></term>
+<term><name>author6</name><frequency>40</frequency></term>
+<term><name>author7</name><frequency>30</frequency></term>
+<term><name>author8</name><frequency>20</frequency></term>
+<term><name>author9</name><frequency>10</frequency></term>
+</list>
+<list name="subject">
+<term><name>subject0</name><frequency>100</frequency></term>
+<term><name>subject1</name><frequency>90</frequency></term>
+<term><name>subject2</name><frequency>80</frequency></term>
+<term><name>subject3</name><frequency>70</frequency></term>
+<term><name>subject4</name><frequency>60</frequency></term>
+<term><name>subject5</name><frequency>50</frequency></term>
+<term><name>subject6</name><frequency>40</frequency></term>
+<term><name>subject7</name><frequency>30</frequency></term>
+<term><name>subject8</name><frequency>20</frequency></term>
+<term><name>subject9</name><frequency>10</frequency></term>
+</list>
+<list name="date">
+<term><name>date0</name><frequency>100</frequency></term>
+<term><name>date1</name><frequency>90</frequency></term>
+<term><name>date2</name><frequency>80</frequency></term>
+<term><name>date3</name><frequency>70</frequency></term>
+<term><name>date4</name><frequency>60</frequency></term>
+<term><name>date5</name><frequency>50</frequency></term>
+<term><name>date6</name><frequency>40</frequency></term>
+<term><name>date7</name><frequency>30</frequency></term>
+<term><name>date8</name><frequency>20</frequency></term>
+<term><name>date9</name><frequency>10</frequency></term>
+</list>
+<list name="medium"/>
+</termlist>
\ No newline at end of file
index 1fd7ade..9ce9297 100644 (file)
@@ -1,4 +1,3 @@
-<!-- Solr target -->
 <settings target="localhost:9999/db1">
   <set name="pz:maxrecs"  value="2" />
   <set name="pz:facetmap:date"    value="date" />
index 00a4286..04df40a 100644 (file)
@@ -1,4 +1,3 @@
-<!-- Solr target -->
 <settings target="localhost:9999/db1">
   <set name="pz:facetmap:date"    value="date" />
   <set name="pz:facetmap:subject" value="subject" />
index 656062a..1eb610b 100644 (file)
@@ -1,4 +1,3 @@
-<!-- Solr target -->
 <settings target="Target-2">
   <set name="pz:name"  value="LOC-SOLR" />
   <set name="pz:url"   value="ocs-test.indexdata.com/solr/select" />
index 6ca8973..a1e53bd 100644 (file)
@@ -1,4 +1,3 @@
-<!-- Solr target -->
 <settings target="LOC Solr Test">
   <set name="pz:name"  value="LOC Solr Test" />
   <set name="pz:url"   value="ocs-test.indexdata.com/solr/select" />
@@ -9,7 +8,6 @@
   <set name="pz:limitmap:medium"  value="rpn:@attr 1=medium_exact @attr 6=3" />
 
   <!-- no native_score, the default behavior -->
-  
   <set name="full_text_target"  value="=NO" />
   <set name="use_url_proxy"  value="0" />
   <set name="pz:piggyback"   value="1" />
index a003e95..565a56e 100644 (file)
@@ -1,10 +1,9 @@
-<!-- Solr target -->
 <settings target="LOC Solr Test">
   <set name="pz:name"  value="LOC Solr Test" />
   <set name="pz:url"   value="ocs-test.indexdata.com/solr/select" />
 
   <set name="pz:native_score"  value="position" />
-  
+
   <set name="full_text_target"  value="=NO" />
   <set name="use_url_proxy"  value="0" />
   <set name="pz:piggyback"   value="1" />
index 3f51f26..87d2c5c 100644 (file)
@@ -1,10 +1,8 @@
-<!-- Solr target -->
 <settings target="LOC Solr Test">
   <set name="pz:name"  value="LOC Solr Test" />
   <set name="pz:url"   value="ocs-test.indexdata.com/solr/select" />
 
   <set name="pz:native_score"  value="score" />
-  
   <set name="full_text_target"  value="=NO" />
   <set name="use_url_proxy"  value="0" />
   <set name="pz:piggyback"   value="1" />
index edd80df..d09ab81 100644 (file)
@@ -1,10 +1,8 @@
-<!-- Solr target -->
 <settings target="LOC Solr Test">
   <set name="pz:name"  value="LOC Solr Test" />
   <set name="pz:url"   value="ocs-test.indexdata.com/solr/select" />
 
   <set name="pz:native_score"  value="internal" />
-  
   <set name="full_text_target"  value="=NO" />
   <set name="use_url_proxy"  value="0" />
   <set name="pz:piggyback"   value="1" />
index 79a56f6..9372ffc 100644 (file)
@@ -1,4 +1,3 @@
-<!-- Solr target -->
 <settings target="LOC Solr Test">
   <set name="pz:name"  value="LOC Solr Test" />
   <set name="pz:url"   value="ocs-test.indexdata.com/solr" />
index b170c67..ce5107c 100644 (file)
@@ -1,4 +1,3 @@
-<!-- Solr target -->
 <settings target="LOC Solr Test">
   <set name="pz:termlist_term_factor" value="1"/>
 </settings>
\ No newline at end of file
index 579c2bf..f159d33 100644 (file)
@@ -1,4 +1,3 @@
-<!-- Solr target -->
 <settings target="LOC Solr Test">
   <!-- Configure native facets -->
   <set name="pz:termlist_term_count" value="10"/>
index 867c513..b9276ef 100644 (file)
@@ -1,5 +1,4 @@
-<!-- Solr target, settings 4-->
 <settings target="LOC Solr Test">
-  <set name="pz:maxrecs" value="200" /> 
+  <set name="pz:maxrecs" value="200"/>
   <set name="pz:present_chunk" value="0"/>
 </settings>
index 2aa611b..454c802 100644 (file)
@@ -1,5 +1,4 @@
-<!-- Solr target, Settings 5 -->
 <settings target="LOC Solr Test">
-  <set name="pz:maxrecs" value="100" /> 
+  <set name="pz:maxrecs" value="100"/>
   <set name="pz:present_chunk" value=""/>
 </settings>
index 89ab7ff..75f5aa7 100644 (file)
@@ -1,8 +1,7 @@
-<!-- Solr target, Settings 6: sortmaps -->
 <settings target="LOC Solr Test">
   <set name="pz:present_chunk" value="0"/>
-  <set name="pz:sortmap:title"  value="solr:title" /> 
-  <set name="pz:sortmap:date"   value="solr:date_exact" /> 
-  <set name="pz:sortmap:author" value="solr:author_exact" /> 
-  <set name="pz:sortmap:score"  value="solr:score" /> 
+  <set name="pz:sortmap:title"  value="solr:title"/>
+  <set name="pz:sortmap:date"   value="solr:date_exact"/>
+  <set name="pz:sortmap:author" value="solr:author_exact"/>
+  <set name="pz:sortmap:score"  value="solr:score"/>
 </settings>
index 3cb9c71..f22d1dd 100644 (file)
@@ -1,4 +1,3 @@
-<!-- Solr target -->
 <settings target="LOC Solr Test">
   <set name="pz:name"  value="LOC Solr Test" />
   <set name="pz:url"   value="ocs-test.indexdata.com/solr/select" />
index cb730b0..13ac378 100644 (file)
@@ -1,4 +1,3 @@
-<!-- Solr target -->
 <settings target="id_solr">
   <set name="pz:name"  value="LOC (SOLR)" />
   <set name="pz:url"   value="ocs-test.indexdata.com/solr" />
   <set name="pz:cclmap:ti"  value="1=title" />
   <set name="pz:cclmap:isbn"  value="1=isbn" />
   <set name="pz:cclmap:author_phrase" value="1=author_exact 6=3"/>
-<!--
-  <set name="pz:limitmap:author"  value="rpn:@attr 1=author_exact 6=3" />
-  <set name="pz:limitmap:subject" value="rpn:@attr 1=subject_exact" />
-  <set name="pz:limitmap:date"    value="rpn:@attr 1=date @attr 6=3" />
-  <set name="pz:limitmap:medium"  value="rpn:@attr 1=medium_exact @attr 6=3" />
--->
   <set name="full_text_target"  value="=NO" />
-  <!-- Configure native facets -->
-
   <set name="pz:termlist_term_count" value="10"/>
-<!--
-  <set name="pz:facetmap:author"  value="author_exact"  />
-  <set name="pz:facetmap:subject" value="subject_exact" />
-  <set name="pz:facetmap:medium"  value="medium_exact"  />
-  <set name="pz:facetmap:date"  value="date" />
--->
   <set name="use_url_proxy"  value="0"        />
   <set name="pz:piggyback"   value="1"        />
   <set name="pz:preferred"   value="0"        />
diff --git a/test/test_tmarc.sh b/test/test_tmarc.sh
deleted file mode 100755 (executable)
index b73b597..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh
-res=0
-for m in tmarc?.xml; do
-       b=`basename $m .xml`
-       l=$b.log.xml
-       r=$b.res.xml
-       d=$b.dif
-       xsltproc ../etc/tmarc.xsl $m >$l
-       if test -f $r; then
-               if diff $l $r >$d; then
-                       rm $d
-               else
-                       echo "$b: FAIL; check $d"
-                       res=1
-               fi
-       else
-               echo "$b: making $r for the first time"
-               mv $l $r
-               res=1
-       fi
-done
-exit $res
diff --git a/test/tmarc1.res.xml b/test/tmarc1.res.xml
deleted file mode 100644 (file)
index d5c2397..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<collection xmlns="http://www.indexdata.com/turbomarc" xmlns:pz="http://www.indexdata.com/pazpar2/1.0" xmlns:tmarc="http://www.indexdata.com/turbomarc">
-  <pz:record>
-    <pz:metadata type="author">Sloman</pz:metadata>
-    <pz:metadata type="date">2002</pz:metadata>
-    <pz:metadata type="title">On the road with Bob Dylan</pz:metadata>
-    <pz:metadata type="title-complete">On the road with Bob Dylan</pz:metadata>
-    <pz:metadata type="edition">Revised edition</pz:metadata>
-    <pz:metadata type="publication-place">New York</pz:metadata>
-    <pz:metadata type="publication-name">Three Rivers Press</pz:metadata>
-    <pz:metadata type="publication-date">2002</pz:metadata>
-    <pz:metadata type="physical-extent">xv, 464 sider, tavler</pz:metadata>
-    <pz:metadata type="description">Tidligere: 1. udgave. New York, Bantam, 1978</pz:metadata>
-    <pz:metadata type="medium">book</pz:metadata>
-    <pz:metadata type="has-fulltext">no</pz:metadata>
-  </pz:record>
-</collection>
diff --git a/test/tmarc1.xml b/test/tmarc1.xml
deleted file mode 100644 (file)
index dab3674..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-<collection xmlns="http://www.indexdata.com/turbomarc">
-<r>
-<!-- Length implementation at offset 22 should hold a digit. Assuming 0 -->
-  <l>00988nam0a32003011  450 </l>
-  <d001 i1="0" i2="0" i3="0">
-    <sa>9 181 423 4</sa>
-    <sb>710100</sb>
-    <sf>a</sf>
-  </d001>
-  <d004 i1="0" i2="0" i3="0">
-    <sr>n</sr>
-    <sa>e</sa>
-  </d004>
-  <d008 i1="0" i2="0" i3="0">
-    <st>m</st>
-    <su>u</su>
-    <sa>2002</sa>
-    <sb>us</sb>
-    <sl>eng</sl>
-    <sv>0</sv>
-  </d008>
-  <d009 i1="0" i2="0" i3="0">
-    <sa>a</sa>
-    <sg>xx</sg>
-  </d009>
-  <d021 i1="0" i2="0" i3="0">
-    <sa>1-4000-4596-7</sa>
-    <sd>$14,00</sd>
-  </d021>
-  <d032 i1="0" i2="0" i3="0">
-    <s code="&amp;">DBC200439</s>
-  </d032>
-  <d100 i1="0" i2="0" i3="0">
-    <s0></s0>
-    <sa>Sloman</sa>
-    <sh>Larry</sh>
-  </d100>
-  <d245 i1="0" i2="0" i3="0">
-    <sa>On the road with Bob Dylan</sa>
-    <se>Larry &quot;Ratso&quot; Sloman</se>
-  </d245>
-  <d250 i1="0" i2="0" i3="0">
-    <sa>Revised edition</sa>
-    <sb>Three Rivers Press</sb>
-  </d250>
-  <d260 i1="0" i2="0" i3="0">
-    <sa>New York</sa>
-    <sb>Three Rivers Press</sb>
-    <sc>2002</sc>
-  </d260>
-  <d300 i1="0" i2="0" i3="0">
-    <sa>xv, 464 sider, tavler</sa>
-  </d300>
-  <d504 i1="0" i2="0" i3="0">
-    <sa>Larry &quot;Ratso&quot; Slomans meget personlige beretning om Bob Dylans koncertturne i USA i 1975: &quot;The Rolling Thunder revue&quot;</sa>
-  </d504>
-  <d512 i1="0" i2="0" i3="0">
-    <sa>På omslaget: With a new introduction by Kinky Friedman</sa>
-  </d512>
-  <d520 i1="0" i2="0" i3="0">
-    <sa>Tidligere: 1. udgave. New York, Bantam, 1978</sa>
-  </d520>
-  <d652 i1="0" i2="0" i3="0">
-    <s0></s0>
-    <sm>99.4</sm>
-    <sa>Dylan</sa>
-    <sh>Bob</sh>
-  </d652>
-  <d652 i1="0" i2="0" i3="0">
-    <sp>78.9064</sp>
-    <sv>5</sv>
-  </d652>
-  <d666 i1="0" i2="0" i3="0">
-    <sf>folkemusik</sf>
-  </d666>
-  <d666 i1="0" i2="0" i3="0">
-    <sf>folkemusikere</sf>
-  </d666>
-  <d666 i1="0" i2="0" i3="0">
-    <sf>rockmusik</sf>
-  </d666>
-  <d666 i1="0" i2="0" i3="0">
-    <sf>rockmusikere</sf>
-  </d666>
-  <d666 i1="0" i2="0" i3="0">
-    <sf>rockkoncerter</sf>
-  </d666>
-  <d666 i1="0" i2="0" i3="0">
-    <se>USA</se>
-  </d666>
-  <d666 i1="0" i2="0" i3="0">
-    <si>1970-1979</si>
-  </d666>
-</r>
-</collection>
diff --git a/test/tmarc2.res.xml b/test/tmarc2.res.xml
deleted file mode 100644 (file)
index bce5221..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<collection xmlns="http://www.indexdata.com/turbomarc" xmlns:pz="http://www.indexdata.com/pazpar2/1.0" xmlns:tmarc="http://www.indexdata.com/turbomarc">
-  <pz:record>
-    <pz:metadata type="author">Mimms</pz:metadata>
-    <pz:metadata type="date">1995</pz:metadata>
-    <pz:metadata type="title">Cry baby</pz:metadata>
-    <pz:metadata type="title">Warm and soulful</pz:metadata>
-    <pz:metadata type="title-complete">Cry baby</pz:metadata>
-    <pz:metadata type="publication-place">Bury St. Edmunds</pz:metadata>
-    <pz:metadata type="publication-name">BGO</pz:metadata>
-    <pz:metadata type="publication-date">1995</pz:metadata>
-    <pz:metadata type="medium">book</pz:metadata>
-    <pz:metadata type="has-fulltext">no</pz:metadata>
-  </pz:record>
-</collection>
diff --git a/test/tmarc2.xml b/test/tmarc2.xml
deleted file mode 100644 (file)
index 8f28780..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-<collection xmlns="http://www.indexdata.com/turbomarc">
-<r>
-<!-- Length implementation at offset 22 should hold a digit. Assuming 0 -->
-  <l>01116nam0a32002171  450 </l>
-  <d001 i1="0" i2="0" i3="0">
-    <sa>9 182 502 3</sa>
-    <sb>710100</sb>
-    <sf>a</sf>
-  </d001>
-  <d004 i1="0" i2="0" i3="0">
-    <sr>c</sr>
-    <sa>e</sa>
-  </d004>
-  <d008 i1="0" i2="0" i3="0">
-    <st>s</st>
-    <su>f</su>
-    <sa>1995</sa>
-    <sb>gb</sb>
-    <sl>eng</sl>
-    <sv>0</sv>
-  </d008>
-  <d009 i1="0" i2="0" i3="0">
-    <sa>s</sa>
-    <sg>xc</sg>
-  </d009>
-  <d039 i1="0" i2="0" i3="0">
-    <sa>bef</sa>
-  </d039>
-  <d100 i1="0" i2="0" i3="0">
-    <sa>Mimms</sa>
-    <sh>Garnet</sh>
-  </d100>
-  <d245 i1="0" i2="0" i3="0">
-    <sa>Cry baby</sa>
-    <sa>Warm and soulful</sa>
-    <se>Garnet Mimms ... [et al.]</se>
-  </d245>
-  <d260 i1="0" i2="0" i3="0">
-    <sa>Bury St. Edmunds</sa>
-    <sb>BGO</sb>
-    <sc>1995</sc>
-  </d260>
-  <d300 i1="0" i2="0" i3="0">
-    <sn>1 cd</sn>
-  </d300>
-  <d512 i1="0" i2="0" i3="0">
-    <sa>Indspilninger publiceret 1963 (Cry baby) og 1965 (Warm and soulful)</sa>
-  </d512>
-  <d531 i1="0" i2="0" i3="0">
-    <sa>Indhold:</sa>
-  </d531>
-  <d538 i1="0" i2="0" i3="0">
-    <sf>BGO</sf>
-    <sg>BGOCD268</sg>
-  </d538>
-  <d652 i1="0" i2="0" i3="0">
-    <sm>78.794</sm>
-    <sv>4</sv>
-  </d652>
-  <d666 i1="0" i2="0" i3="0">
-    <sm>soul</sm>
-    <sm>rhythm &amp; blues</sm>
-    <sn>vokal</sn>
-    <sp>1960-1969</sp>
-    <sl>USA</sl>
-  </d666>
-  <d795 i1="0" i2="0" i3="0">
-    <s code="å">11</s>
-    <sa>Cry baby</sa>
-    <sa>Nobody but you</sa>
-    <sa>Until you were gone</sa>
-    <sa>Anytime you want me</sa>
-    <sa>So close</sa>
-    <sa>For your precious love</sa>
-    <sa>Baby don&apos;t you weep</sa>
-    <sa>A ¤quiet place</sa>
-    <sa>Cry to me</sa>
-    <sa>Don&apos;t change your heart</sa>
-    <sa>Wanting you</sa>
-    <sa>The ¤truth hurts</sa>
-    <sa>I&apos;ll take good care of you</sa>
-    <sa>Looking for you</sa>
-    <sa>It won&apos;t hurt (half as much)</sa>
-    <sa>It was easier to hurt her</sa>
-    <sa>Thinkin&apos;</sa>
-    <sa>Prove it to me</sa>
-    <sa>More than a miracle</sa>
-    <sa>As long as I have you</sa>
-    <sa>One girl</sa>
-    <sa>There goes my baby</sa>
-    <sa>It&apos;s just a matter of time</sa>
-    <sa>A ¤little bit of soap</sa>
-    <sa>Look away</sa>
-    <sa>I&apos;ll make it up to you</sa>
-  </d795>
-  <d795 i1="0" i2="0" i3="0">
-    <s code="å">40</s>
-    <sy>0</sy>
-    <sa>1 girl</sa>
-  </d795>
-</r>
-</collection>
diff --git a/test/tmarc3.res.xml b/test/tmarc3.res.xml
deleted file mode 100644 (file)
index ddd115f..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<collection xmlns="http://www.indexdata.com/turbomarc" xmlns:pz="http://www.indexdata.com/pazpar2/1.0" xmlns:tmarc="http://www.indexdata.com/turbomarc">
-  <pz:record>
-    <pz:metadata type="title">Byfornyelse ved Ibsen-Ringen</pz:metadata>
-    <pz:metadata type="title-complete">Byfornyelse ved Ibsen-Ringen</pz:metadata>
-    <pz:metadata type="physical-format">farvefoto</pz:metadata>
-    <pz:metadata type="physical-format">plan</pz:metadata>
-    <pz:metadata type="physical-format">snit</pz:metadata>
-    <pz:metadata type="subject-long">byfornyelse</pz:metadata>
-    <pz:metadata type="subject-long">sanering</pz:metadata>
-    <pz:metadata type="subject">Telje Torp Aasen Arkitektkontor</pz:metadata>
-    <pz:metadata type="subject-long">Telje Torp Aasen Arkitektkontor, Kristian Augustsgate 7B</pz:metadata>
-    <pz:metadata type="subject">Eng, Dagfin</pz:metadata>
-    <pz:metadata type="subject-long">Eng, Dagfin</pz:metadata>
-    <pz:metadata type="subject-long">anlund, Tom, Kristian Augustsgate, Pilestredet 19</pz:metadata>
-    <pz:metadata type="medium">web</pz:metadata>
-    <pz:metadata type="has-fulltext">no</pz:metadata>
-  </pz:record>
-</collection>
diff --git a/test/tmarc3.xml b/test/tmarc3.xml
deleted file mode 100644 (file)
index 84f8bbe..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-<collection xmlns="http://www.indexdata.com/turbomarc">
-<r>
-<!-- Length implementation at offset 22 should hold a digit. Assuming 0 -->
-  <l>00914naa a2200337   450 </l>
-  <d001 i1=" " i2=" ">
-    <sa>a00001508</sa>
-    <sf>a</sf>
-  </d001>
-  <d004 i1=" " i2=" ">
-    <sa>i</sa>
-    <sr>n</sr>
-  </d004>
-  <d008 i1=" " i2=" ">
-    <sa>1991</sa>
-    <sb>xx</sb>
-    <sl>nor</sl>
-    <st>a</st>
-    <sv>9</sv>
-  </d008>
-  <d009 i1=" " i2=" ">
-    <sa>a</sa>
-    <sg>xx</sg>
-  </d009>
-  <d041 i1=" " i2=" ">
-    <sa>nor</sa>
-  </d041>
-  <d041 i1=" " i2=" ">
-    <sd>eng</sd>
-  </d041>
-  <d097 i1="0" i2="0">
-    <sa>06</sa>
-  </d097>
-  <d245 i1=" " i2=" ">
-    <sa>Byfornyelse ved Ibsen-Ringen</sa>
-  </d245>
-  <d300 i1=" " i2=" ">
-    <sb>farvefoto</sb>
-    <sb>plan</sb>
-    <sb>snit</sb>
-  </d300>
-  <d557 i1=" " i2=" ">
-    <sa>Byggekunst</sa>
-    <sj>1991</sj>
-    <sv>1/2</sv>
-    <sk>41-45</sk>
-  </d557>
-  <d630 i1=" " i2=" ">
-    <sf>byfornyelse</sf>
-  </d630>
-  <d630 i1=" " i2=" ">
-    <sf>sanering</sf>
-  </d630>
-  <d633 i1=" " i2=" ">
-    <sf>Norge</sf>
-  </d633>
-  <d633 i1=" " i2=" ">
-    <sf>Oslo</sf>
-  </d633>
-  <d648 i1=" " i2=" ">
-    <sa>Telje Torp Aasen Arkitektkontor</sa>
-    <sc>Kristian Augustsgate 7B</sc>
-  </d648>
-  <d648 i1=" " i2=" ">
-    <sa>Eng, Dagfin</sa>
-  </d648>
-  <d648 i1=" " i2=" ">
-    <sr>anlund, Tom</sr>
-    <sc>Kristian Augustsgate</sc>
-    <sc>Pilestredet 19</sc>
-  </d648>
-  <dJ01 i1=" " i2=" ">
-    <sa>a</sa>
-  </dJ01>
-  <dBAS i1=" " i2=" ">
-    <s0></s0>
-  </dBAS>
-  <dLKR i1=" " i2=" ">
-    <sa>ITM</sa>
-    <sl>ARK50</sl>
-    <sb>0000145</sb>
-    <sy>1991</sy>
-    <si>1/2</si>
-    <sk>41-45</sk>
-  </dLKR>
-  <dCAT i1=" " i2=" ">
-    <sa></sa>
-    <sb></sb>
-    <sc>20020111</sc>
-    <sl>ARK01</sl>
-    <sh>2002</sh>
-  </dCAT>
-  <dCAT i1=" " i2=" ">
-    <sa></sa>
-    <sb></sb>
-    <sc>20020111</sc>
-    <sl>ARK01</sl>
-    <sh>2116</sh>
-  </dCAT>
-  <dCAT i1=" " i2=" ">
-    <sa></sa>
-    <sb></sb>
-    <sc>20021002</sc>
-    <sl>ARK01</sl>
-    <sh>1000</sh>
-  </dCAT>
-  <dCAT i1=" " i2=" ">
-    <sa>ICLLOAD</sa>
-    <sb>00</sb>
-    <sc>20021122</sc>
-    <sl>ARK01</sl>
-    <sh>1948</sh>
-  </dCAT>
-  <dCAT i1=" " i2=" ">
-    <sc>20030618</sc>
-    <sl>ARK01</sl>
-    <sh>1330</sh>
-  </dCAT>
-  <dUID i1=" " i2=" ">
-    <sa>a00001508</sa>
-  </dUID>
-</r>
-</collection>
diff --git a/test/tmarc4.res.xml b/test/tmarc4.res.xml
deleted file mode 100644 (file)
index 966fc24..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<collection xmlns="http://www.indexdata.com/turbomarc" xmlns:pz="http://www.indexdata.com/pazpar2/1.0" xmlns:tmarc="http://www.indexdata.com/turbomarc">
-  <pz:record>
-    <pz:metadata type="medium">other</pz:metadata>
-    <pz:metadata type="has-fulltext">no</pz:metadata>
-  </pz:record>
-</collection>
diff --git a/test/tmarc4.xml b/test/tmarc4.xml
deleted file mode 100644 (file)
index dadbd7b..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<collection xmlns="http://www.indexdata.com/turbomarc">
-<r>
-<!-- Indicator length at offset 10 should hold a digit. Assuming 2 -->
-<!-- Identifier length at offset 11 should hold a digit. Assuming 2 -->
-<!-- Base address at offsets 12..16 should hold a number. Assuming 0 -->
-<!-- Length implementation at offset 22 should hold a digit. Assuming 0 -->
-  <l>009140091a22a  22003370 </l>
-<!-- Directory offset 24: Bad value for data length and/or length starting ( 45  00100170) -->
-<!-- Base address not at end of directory, base 0, end 25 -->
-</r>
-</collection>
diff --git a/test/tmarc5.res.xml b/test/tmarc5.res.xml
deleted file mode 100644 (file)
index 5fa0c5b..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<collection xmlns="http://www.indexdata.com/turbomarc" xmlns:pz="http://www.indexdata.com/pazpar2/1.0" xmlns:tmarc="http://www.indexdata.com/turbomarc">
-  <pz:record>
-    <pz:metadata type="id">000277485</pz:metadata>
-    <pz:metadata type="author">Μαρούδης, Κωνσταντίνος Ιω</pz:metadata>
-    <pz:metadata type="date">1894</pz:metadata>
-    <pz:metadata type="title">Ελληνικόν κρυπτογραφικόν λεξικόν /</pz:metadata>
-    <pz:metadata type="title-responsibility">Κωνστ. Ι. Μαρούδης.</pz:metadata>
-    <pz:metadata type="title-complete">Ελληνικόν κρυπτογραφικόν λεξικόν /</pz:metadata>
-    <pz:metadata type="publication-place">Αθήνα,</pz:metadata>
-    <pz:metadata type="publication-date">1894.</pz:metadata>
-    <pz:metadata type="physical-extent">248 σελ.</pz:metadata>
-    <pz:metadata type="subject">Greek language, Modern</pz:metadata>
-    <pz:metadata type="subject-long">Greek language, Modern, Dialects, Dictionaries</pz:metadata>
-    <pz:metadata type="subject">Cryptography.</pz:metadata>
-    <pz:metadata type="subject-long">Cryptography.</pz:metadata>
-    <pz:metadata type="medium">book</pz:metadata>
-    <pz:metadata type="has-fulltext">no</pz:metadata>
-  </pz:record>
-</collection>
diff --git a/test/tmarc5.xml b/test/tmarc5.xml
deleted file mode 100644 (file)
index 89343ab..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<collection xmlns="http://www.indexdata.com/turbomarc">
-<r>
-  <l>00492nam a22001455a 4500</l>
-  <c001>000277485</c001>
-  <c005>20051026111436.0</c005>
-  <c008>050413s1894    gr            000 0 gre d</c008>
-  <d100 i1="1" i2=" ">
-    <sa>Μαρούδης, Κωνσταντίνος Ιω</sa>
-  </d100>
-  <d245 i1="1" i2="0">
-    <sa>Ελληνικόν κρυπτογραφικόν λεξικόν /</sa>
-    <sc>Κωνστ. Ι. Μαρούδης.</sc>
-  </d245>
-  <d250 i1=" " i2=" ">
-    <s code="η"> εκδ.</s>
-  </d250>
-  <d260 i1=" " i2=" ">
-    <sa>Αθήνα,</sa>
-    <sc>1894.</sc>
-  </d260>
-  <d300 i1=" " i2=" ">
-    <sa>248 σελ.</sa>
-  </d300>
-  <d650 i1=" " i2="0">
-    <sa>Greek language, Modern</sa>
-    <sx>Dialects</sx>
-    <sv>Dictionaries</sv>
-  </d650>
-  <d650 i1=" " i2="0">
-    <sa>Cryptography.</sa>
-  </d650>
-</r>
-</collection>
diff --git a/test/tmarc6.res.xml b/test/tmarc6.res.xml
deleted file mode 100644 (file)
index 5665ab0..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<collection xmlns="http://www.indexdata.com/turbomarc" xmlns:pz="http://www.indexdata.com/pazpar2/1.0" xmlns:tmarc="http://www.indexdata.com/turbomarc">
-  <pz:record>
-    <pz:metadata type="id">   11224466 </pz:metadata>
-    <pz:metadata type="lccn">   11224466 </pz:metadata>
-    <pz:metadata type="author">Jack Collins</pz:metadata>
-    <pz:metadata type="title">How to program a computer</pz:metadata>
-    <pz:metadata type="title-complete">How to program a computer</pz:metadata>
-    <pz:metadata type="publication-place">Penguin</pz:metadata>
-    <pz:metadata type="physical-extent">p. cm.</pz:metadata>
-    <pz:metadata type="medium">book</pz:metadata>
-    <pz:metadata type="has-fulltext">no</pz:metadata>
-  </pz:record>
-</collection>
diff --git a/test/tmarc6.xml b/test/tmarc6.xml
deleted file mode 100644 (file)
index 70d23e7..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<collection xmlns="http://www.indexdata.com/turbomarc">
-<r>
-  <l>00366nam a22001698a 4500</l>
-  <c001>   11224466 </c001>
-  <c003>DLC</c003>
-  <c005>00000000000000.0</c005>
-  <c008>910710c19910701nju           00010 eng  </c008>
-  <d010 i1=" " i2=" ">
-    <sa>   11224466 </sa>
-  </d010>
-  <d040 i1=" " i2=" ">
-    <sa>DLC</sa>
-    <sc>DLC</sc>
-  </d040>
-  <d050 i1="0" i2="0">
-    <sa>123-xyz</sa>
-  </d050>
-  <d100 i1="1" i2="0">
-    <sa>Jack Collins</sa>
-  </d100>
-  <d245 i1="1" i2="0">
-    <sa>How to program a computer</sa>
-  </d245>
-  <d260 i1="1" i2=" ">
-    <sa>Penguin</sa>
-  </d260>
-  <d263 i1=" " i2=" ">
-    <sa>8710</sa>
-  </d263>
-  <d300 i1=" " i2=" ">
-    <sa>p. cm.</sa>
-  </d300>
-</r>
-</collection>
diff --git a/test/tmarc7.res.xml b/test/tmarc7.res.xml
deleted file mode 100644 (file)
index dc96c3a..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<collection xmlns="http://www.indexdata.com/turbomarc" xmlns:pz="http://www.indexdata.com/pazpar2/1.0" xmlns:tmarc="http://www.indexdata.com/turbomarc">
-  <pz:record>
-    <pz:metadata type="id">   77123332 </pz:metadata>
-    <pz:metadata type="lccn">   77123332 </pz:metadata>
-    <pz:metadata type="system-control-nr">57779</pz:metadata>
-    <pz:metadata type="system-control-nr">90490</pz:metadata>
-    <pz:metadata type="system-control-nr">93202</pz:metadata>
-    <pz:metadata type="date">2001</pz:metadata>
-    <pz:metadata type="title">Voyager Diacritic test -- New input 001 (SBIE).</pz:metadata>
-    <pz:metadata type="title-complete">Voyager Diacritic test -- New input 001 (SBIE).</pz:metadata>
-    <pz:metadata type="publication-place">ny :</pz:metadata>
-    <pz:metadata type="publication-name">ny,</pz:metadata>
-    <pz:metadata type="publication-date">2001.</pz:metadata>
-    <pz:metadata type="physical-extent">100 p. ;</pz:metadata>
-    <pz:metadata type="physical-dimensions">12 cm.</pz:metadata>
-    <pz:metadata type="description">New copy imported from file (8/12/99).</pz:metadata>
-    <pz:metadata type="description">VOYAGER COLUMN 0  (NEW):  Degree sign (°);  Phono Copyright mark (℗);  Copyright mark (©);  Sharp (♯);  Inverted Question mark (¿);  Inverted Exclamation mark (¡).</pz:metadata>
-    <pz:metadata type="description">VOYAGER COLUMN 1:  Script L (ℓ);  Polish L (Ł);  Scandanavian O (Ø);  D with Crossbar (Đ);  Icelandic Thorn (Þ);  AE Digraph (Æ); OE Digraph (Œ);  Miagkii Znak (ʹ);  Dot at Midline (·).</pz:metadata>
-    <pz:metadata type="description">VOYAGER COLUMN 2:  Musical Flat (♭);  Patent Mark (®);  Plus or Minus (±);  O Hook (Ơ);  U Hook (Ư);  Alif (ʼ);  alpha α;  Ayn (ʻ);  Polish l (ł).</pz:metadata>
-    <pz:metadata type="description">VOYAGER COLUMN 3:  Scandanavian o (ø);  d with crossbar (đ);  Icelandic Thorn (þ);  ae Digraph (æ);  oe Digraph (œ);  Tverdii Znak (ʺ);  Turkish i (ı);  British Pound (£);  eth (ð).</pz:metadata>
-    <pz:metadata type="description">VOYAGER COLUMN 4:  Dagger (DO NOT USE);  o Hook (ơ);  u Hook (ư);  Beta β;  Gamma γ;  Superscript 0 (⁰);  Superscript 1 (¹);  Superscript 2 (²);  Superscript 3 (³).</pz:metadata>
-    <pz:metadata type="description">VOYAGER COLUMN 5:  Superscript 4 (⁴);  Superscript 5 (⁵);  Superscript 6 (⁶);  Superscript 7 (⁷);  Superscript 8 (⁸);  Superscript 9 (⁹);  Superscript + (⁺);  Superscript - (⁻);  Superscript ( (⁽).</pz:metadata>
-    <pz:metadata type="description">VOYAGER COLUMN 6:  Superscript ) (⁾);  Subscript 0 (₀);  Subscript  1 (₁);  Subscript 2 (₂);  Subscript 3 (₃);  Subscript 4 (₄);  Subscript 5 (₅);  Subscript 6 (₆);  Subscript 7 (₇).</pz:metadata>
-    <pz:metadata type="description">VOYAGER COLUMN 7:  Subscript 8 (₈);  Subscript 9 (₉);  Subscript + (₊);  Subscript - (₋);  Subscript ( (₍);  Subscript ) (₎);  Pseudo Question Mark (ỏ);  Grave (ò);  Acute (ó).</pz:metadata>
-    <pz:metadata type="description">VOYAGER COLUMN 8:  Circumflex (ô);  Tilde (õ);  Macron (ō);  Breve (ŏ);  Superior Dot (ȯ);  Umlaut (ö);  Hacek (ǒ);  Circle Above (o̊);  Ligature left (o͡).</pz:metadata>
-    <pz:metadata type="description">VOYAGER COLUMN 9:  Ligature right (o) ;  High Comma off center (o̕);  Double Acute (ő);  Candrabindu (o̐);  Cedilla (o̧);  Right Hook (ǫ);  Dot Below (ọ);  Double Dot Below (o̤);  Circle Below (o̥).</pz:metadata>
-    <pz:metadata type="description">VOYAGER COLUMN 10:  Double Underscore (o̳);  Underscore (o̲);  Left Hook (o̦);  Right Cedilla (o̜);  Upadhmaniya (o̮);  Double Tilde 1st half (o͠);  Double Tilde 2nd half (o) ;  High Comma centered (o̓).</pz:metadata>
-    <pz:metadata type="description">VOYAGER PC Keyboard:  Spacing Circumflex (^); Spacing Underscore (_); Spacing Grave (`); Open Curly Bracket ({); Close Curly Bracket (}); Spacing Tilde (~).</pz:metadata>
-    <pz:metadata type="description">Standard PC Keyboard:   1234567890-=   !@#$%^&amp;*()_+   qwertyuiop[]\   QWERTYUIOP{}|   asdfghjkl;'  ASDFGHJKL:"   zxcvbnm,./   ZXCVBNM&lt;&gt;?</pz:metadata>
-    <pz:metadata type="medium">book</pz:metadata>
-    <pz:metadata type="has-fulltext">no</pz:metadata>
-  </pz:record>
-</collection>
diff --git a/test/tmarc7.xml b/test/tmarc7.xml
deleted file mode 100644 (file)
index 2acb7d2..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-<collection xmlns="http://www.indexdata.com/turbomarc">
-<r>
-  <l>03114cam a2200349 i 4500</l>
-  <c001>   77123332 </c001>
-  <c003>DLC</c003>
-  <c005>20051218154744.0</c005>
-  <c008>981008b2001    ilu           000 0 eng  </c008>
-  <d035 i1=" " i2=" ">
-    <sa>57779</sa>
-  </d035>
-  <d035 i1=" " i2=" ">
-    <sa>90490</sa>
-  </d035>
-  <d035 i1=" " i2=" ">
-    <sa>93202</sa>
-  </d035>
-  <d040 i1=" " i2=" ">
-    <sa>DLC</sa>
-    <sc>DLC</sc>
-  </d040>
-  <d906 i1=" " i2=" ">
-    <sa>0</sa>
-    <sb>und</sb>
-    <sc>orignew</sc>
-    <sd>u</sd>
-    <se>ncip</se>
-    <sf>19</sf>
-    <sg>y-gencatlg</sg>
-  </d906>
-  <d010 i1=" " i2=" ">
-    <sa>   77123332 </sa>
-  </d010>
-  <d245 i1="0" i2="0">
-    <sa>Voyager Diacritic test -- New input 001 (SBIE).</sa>
-  </d245>
-  <d260 i1=" " i2=" ">
-    <sa>ny :</sa>
-    <sb>ny,</sb>
-    <sc>2001.</sc>
-  </d260>
-  <d300 i1=" " i2=" ">
-    <sa>100 p. ;</sa>
-    <sc>12 cm.</sc>
-  </d300>
-  <d500 i1=" " i2=" ">
-    <sa>New copy imported from file (8/12/99).</sa>
-  </d500>
-  <d500 i1=" " i2=" ">
-    <sa>VOYAGER COLUMN 0  (NEW):  Degree sign (°);  Phono Copyright mark (℗);  Copyright mark (©);  Sharp (♯);  Inverted Question mark (¿);  Inverted Exclamation mark (¡).</sa>
-  </d500>
-  <d500 i1=" " i2=" ">
-    <sa>VOYAGER COLUMN 1:  Script L (ℓ);  Polish L (Ł);  Scandanavian O (Ø);  D with Crossbar (Đ);  Icelandic Thorn (Þ);  AE Digraph (Æ); OE Digraph (Œ);  Miagkii Znak (ʹ);  Dot at Midline (·).</sa>
-  </d500>
-  <d500 i1=" " i2=" ">
-    <sa>VOYAGER COLUMN 2:  Musical Flat (♭);  Patent Mark (®);  Plus or Minus (±);  O Hook (Ơ);  U Hook (Ư);  Alif (ʼ);  alpha α;  Ayn (ʻ);  Polish l (ł).</sa>
-  </d500>
-  <d500 i1=" " i2=" ">
-    <sa>VOYAGER COLUMN 3:  Scandanavian o (ø);  d with crossbar (đ);  Icelandic Thorn (þ);  ae Digraph (æ);  oe Digraph (œ);  Tverdii Znak (ʺ);  Turkish i (ı);  British Pound (£);  eth (ð).</sa>
-  </d500>
-  <d500 i1=" " i2=" ">
-    <sa>VOYAGER COLUMN 4:  Dagger (DO NOT USE);  o Hook (ơ);  u Hook (ư);  Beta β;  Gamma γ;  Superscript 0 (⁰);  Superscript 1 (¹);  Superscript 2 (²);  Superscript 3 (³).</sa>
-  </d500>
-  <d500 i1=" " i2=" ">
-    <sa>VOYAGER COLUMN 5:  Superscript 4 (⁴);  Superscript 5 (⁵);  Superscript 6 (⁶);  Superscript 7 (⁷);  Superscript 8 (⁸);  Superscript 9 (⁹);  Superscript + (⁺);  Superscript - (⁻);  Superscript ( (⁽).</sa>
-  </d500>
-  <d500 i1=" " i2=" ">
-    <sa>VOYAGER COLUMN 6:  Superscript ) (⁾);  Subscript 0 (₀);  Subscript  1 (₁);  Subscript 2 (₂);  Subscript 3 (₃);  Subscript 4 (₄);  Subscript 5 (₅);  Subscript 6 (₆);  Subscript 7 (₇).</sa>
-  </d500>
-  <d500 i1=" " i2=" ">
-    <sa>VOYAGER COLUMN 7:  Subscript 8 (₈);  Subscript 9 (₉);  Subscript + (₊);  Subscript - (₋);  Subscript ( (₍);  Subscript ) (₎);  Pseudo Question Mark (ỏ);  Grave (ò);  Acute (ó).</sa>
-  </d500>
-  <d500 i1=" " i2=" ">
-    <sa>VOYAGER COLUMN 8:  Circumflex (ô);  Tilde (õ);  Macron (ō);  Breve (ŏ);  Superior Dot (ȯ);  Umlaut (ö);  Hacek (ǒ);  Circle Above (o̊);  Ligature left (o͡).</sa>
-  </d500>
-  <d500 i1=" " i2=" ">
-    <sa>VOYAGER COLUMN 9:  Ligature right (o) ;  High Comma off center (o̕);  Double Acute (ő);  Candrabindu (o̐);  Cedilla (o̧);  Right Hook (ǫ);  Dot Below (ọ);  Double Dot Below (o̤);  Circle Below (o̥).</sa>
-  </d500>
-  <d500 i1=" " i2=" ">
-    <sa>VOYAGER COLUMN 10:  Double Underscore (o̳);  Underscore (o̲);  Left Hook (o̦);  Right Cedilla (o̜);  Upadhmaniya (o̮);  Double Tilde 1st half (o͠);  Double Tilde 2nd half (o) ;  High Comma centered (o̓).</sa>
-  </d500>
-  <d500 i1=" " i2=" ">
-    <sa>VOYAGER PC Keyboard:  Spacing Circumflex (^); Spacing Underscore (_); Spacing Grave (`); Open Curly Bracket ({); Close Curly Bracket (}); Spacing Tilde (~).</sa>
-  </d500>
-  <d500 i1=" " i2=" ">
-    <sa>Standard PC Keyboard:   1234567890-=   !@#$%^&amp;*()_+   qwertyuiop[]\   QWERTYUIOP{}|   asdfghjkl;&apos;  ASDFGHJKL:&quot;   zxcvbnm,./   ZXCVBNM&lt;&gt;?</sa>
-  </d500>
-</r>
-</collection>
diff --git a/test/tmarc8.res.xml b/test/tmarc8.res.xml
deleted file mode 100644 (file)
index 609ae7b..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<collection xmlns="http://www.indexdata.com/turbomarc" xmlns:pz="http://www.indexdata.com/pazpar2/1.0" xmlns:tmarc="http://www.indexdata.com/turbomarc">
-  <pz:record>
-    <pz:metadata type="id">UCD-002592301</pz:metadata>
-    <pz:metadata type="system-control-nr">99851339eo</pz:metadata>
-    <pz:metadata type="author">Clinton, Atkinson.</pz:metadata>
-    <pz:metadata type="date">1583?</pz:metadata>
-    <pz:metadata type="title">Clinton, Purser &amp; Arnold, to their countreymen wheresoeuer</pz:metadata>
-    <pz:metadata type="title-remainder">Wherein is described by their own hands their vnfeigned penitence for their offences past: their patience in welcoming their death, &amp; their duetiful minds towardes her most excellent Maiestie</pz:metadata>
-    <pz:metadata type="title-medium">[electronic resource] :</pz:metadata>
-    <pz:metadata type="title-complete">Clinton, Purser &amp; Arnold, to their countreymen wheresoeuer Wherein is described by their own hands their vnfeigned penitence for their offences past: their patience in welcoming their death, &amp; their duetiful minds towardes her most excellent Maiestie</pz:metadata>
-    <pz:metadata type="publication-place">London :</pz:metadata>
-    <pz:metadata type="publication-name">Imprinted by Iohn Wolfe and are to be sold [by W. Wright] at the middle shop in the Poultry, ioyning S. Mildreds Church,</pz:metadata>
-    <pz:metadata type="publication-date">[1583?]</pz:metadata>
-    <pz:metadata type="physical-extent">[12] p</pz:metadata>
-    <pz:metadata type="description">In verse</pz:metadata>
-    <pz:metadata type="description">The first poem is signed: Thomas Walton alias Purser</pz:metadata>
-    <pz:metadata type="description">Clinton's full name and bookseller's name from, and publication date conjectured by, STC</pz:metadata>
-    <pz:metadata type="description">Signatures: A⁴ B²</pz:metadata>
-    <pz:metadata type="description">Reproduction of the original in the Bodleian Library</pz:metadata>
-    <pz:metadata type="subject">Electronic texts.</pz:metadata>
-    <pz:metadata type="subject-long">Electronic texts., local</pz:metadata>
-    <pz:metadata type="subject">Pirates</pz:metadata>
-    <pz:metadata type="subject-long">Pirates, England, Early works to 1800.</pz:metadata>
-    <pz:metadata type="electronic-url">http://gateway.proquest.com/openurl?ctx_ver=Z39.88-2003&amp;res_id=xri:eebo&amp;rft_val_fmt=&amp;rft_id=xri:eebo:image:16610</pz:metadata>
-    <pz:metadata type="electronic-text">Get resource</pz:metadata>
-    <pz:metadata type="electronic-note">Restricted to UC campuses</pz:metadata>
-    <pz:metadata type="electronic-url">http://gateway.proquest.com/openurl?ctx_ver=Z39.88-2003&amp;res_id=xri:eebo&amp;rft_val_fmt=&amp;rft_id=xri:eebo:image:16610</pz:metadata>
-    <pz:metadata type="electronic-text">Get resource</pz:metadata>
-    <pz:metadata type="electronic-note">Restricted to UC campuses</pz:metadata>
-    <pz:metadata type="electronic-url">http://gateway.proquest.com/openurl?ctx_ver=Z39.88-2003&amp;res_id=xri:eebo&amp;rft_val_fmt=&amp;rft_id=xri:eebo:image:16610</pz:metadata>
-    <pz:metadata type="electronic-text">Get resource</pz:metadata>
-    <pz:metadata type="electronic-note">Restricted to UC campuses</pz:metadata>
-    <pz:metadata type="electronic-url">http://gateway.proquest.com/openurl?ctx_ver=Z39.88-2003&amp;res_id=xri:eebo&amp;rft_val_fmt=&amp;rft_id=xri:eebo:image:16610</pz:metadata>
-    <pz:metadata type="electronic-text">Get resource</pz:metadata>
-    <pz:metadata type="electronic-note">Restricted to UC campuses</pz:metadata>
-    <pz:metadata type="callnumber">Internet</pz:metadata>
-    <pz:metadata type="medium">book (electronic)</pz:metadata>
-    <pz:metadata type="has-fulltext">no</pz:metadata>
-    <pz:metadata type="iii-id">DVXL</pz:metadata>
-  </pz:record>
-</collection>
diff --git a/test/tmarc8.xml b/test/tmarc8.xml
deleted file mode 100644 (file)
index b1e7c76..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-<collection xmlns="http://www.indexdata.com/turbomarc">
-<r>
-  <l>02647nam^a2200469^^^4500</l>
-  <c001>UCD-002592301</c001>
-  <c005>20061209034435.0</c005>
-  <c006>m        d        </c006>
-  <c007>cr bn |||a|bb|</c007>
-  <c008>920330s1583    enk     s     000 0 eng d</c008>
-  <d035 i1=" " i2=" ">
-    <sa>99851339eo</sa>
-  </d035>
-  <d037 i1=" " i2=" ">
-    <sa>CL0036000039</sa>
-    <sb>ProQuest Information and Learning. 300 N. Zeeb Rd., Ann Arbor, MI 48106</sb>
-  </d037>
-  <d040 i1=" " i2=" ">
-    <sa>Cu-RivES</sa>
-    <sc>Cu-RivES</sc>
-    <sd>CStRLIN</sd>
-    <se>dcrb</se>
-    <sd>WaOLN</sd>
-  </d040>
-  <d100 i1="1" i2=" ">
-    <sa>Clinton, Atkinson.</sa>
-  </d100>
-  <d245 i1="0" i2="0">
-    <sa>Clinton, Purser &amp; Arnold, to their countreymen wheresoeuer</sa>
-    <sh>[electronic resource] :</sh>
-    <sb>Wherein is described by their own hands their vnfeigned penitence for their offences past: their patience in welcoming their death, &amp; their duetiful minds towardes her most excellent Maiestie</sb>
-  </d245>
-  <d246 i1="2" i2=" ">
-    <sa>Clinton, Purser &amp; Arnold, to their countreymen wheresoever</sa>
-  </d246>
-  <d246 i1="2" i2=" ">
-    <sa>Clinton, Purser &amp; Arnold, to their countreymen wheresoever</sa>
-  </d246>
-  <d260 i1=" " i2=" ">
-    <sa>London :</sa>
-    <sb>Imprinted by Iohn Wolfe and are to be sold [by W. Wright] at the middle shop in the Poultry, ioyning S. Mildreds Church,</sb>
-    <sc>[1583?]</sc>
-  </d260>
-  <d300 i1=" " i2=" ">
-    <sa>[12] p</sa>
-  </d300>
-  <d500 i1=" " i2=" ">
-    <sa>In verse</sa>
-  </d500>
-  <d500 i1=" " i2=" ">
-    <sa>The first poem is signed: Thomas Walton alias Purser</sa>
-  </d500>
-  <d500 i1=" " i2=" ">
-    <sa>Clinton&apos;s full name and bookseller&apos;s name from, and publication date conjectured by, STC</sa>
-  </d500>
-  <d500 i1=" " i2=" ">
-    <sa>Signatures: A⁴ B²</sa>
-  </d500>
-  <d500 i1=" " i2=" ">
-    <sa>Reproduction of the original in the Bodleian Library</sa>
-  </d500>
-  <d510 i1="4" i2=" ">
-    <sa>STC (2nd ed.)</sa>
-    <sc>5431</sc>
-  </d510>
-  <d530 i1=" " i2=" ">
-    <sa>Also issued in print and on microform</sa>
-  </d530>
-  <d533 i1=" " i2=" ">
-    <sa>Electronic reproduction.</sa>
-    <sn>Mode of access: World Wide Web.</sn>
-    <sn>Restricted to UC campuses</sn>
-  </d533>
-  <d655 i1=" " i2="7">
-    <sa>Electronic texts.</sa>
-    <s2>local</s2>
-  </d655>
-  <d650 i1=" " i2="0">
-    <sa>Pirates</sa>
-    <sz>England</sz>
-    <sv>Early works to 1800.</sv>
-  </d650>
-  <d700 i1="1" i2=" ">
-    <sa>Walton, Thomas,</sa>
-    <sd>fl. 1583.</sd>
-    <s4>aut</s4>
-  </d700>
-  <d700 i1="1" i2=" ">
-    <sa>Arnold,</sa>
-    <sd>fl. 1583.</sd>
-    <s4>aut</s4>
-  </d700>
-  <d793 i1="0" i2=" ">
-    <sa>Early English books online</sa>
-  </d793>
-  <d852 i1=" " i2=" ">
-    <sa>MER</sa>
-    <sb>kmain</sb>
-  </d852>
-  <d852 i1=" " i2=" ">
-    <sa>SCB</sa>
-    <sb>nnet</sb>
-  </d852>
-  <d856 i1="4" i2="0">
-    <sz>Restricted to UC campuses</sz>
-    <sx>SCP UCSD</sx>
-    <su>http://gateway.proquest.com/openurl?ctx_ver=Z39.88-2003&amp;res_id=xri:eebo&amp;rft_val_fmt=&amp;rft_id=xri:eebo:image:16610</su>
-  </d856>
-  <d856 i1="4" i2="0">
-    <sz>Restricted to UC campuses</sz>
-    <sx>SCP UCSD</sx>
-    <su>http://gateway.proquest.com/openurl?ctx_ver=Z39.88-2003&amp;res_id=xri:eebo&amp;rft_val_fmt=&amp;rft_id=xri:eebo:image:16610</su>
-  </d856>
-  <d852 i1=" " i2=" ">
-    <sa>DVXL</sa>
-    <sb>ELECT-GEN</sb>
-    <sh>Internet</sh>
-  </d852>
-  <d852 i1=" " i2=" ">
-    <sa>LAGE</sa>
-    <sb>in</sb>
-    <s3>Online access</s3>
-  </d852>
-  <d856 i1="4" i2="0">
-    <sz>Restricted to UC campuses</sz>
-    <sx>SCP UCSD</sx>
-    <su>http://gateway.proquest.com/openurl?ctx_ver=Z39.88-2003&amp;res_id=xri:eebo&amp;rft_val_fmt=&amp;rft_id=xri:eebo:image:16610</su>
-  </d856>
-  <d856 i1="4" i2="0">
-    <sz>Restricted to UC campuses</sz>
-    <su>http://gateway.proquest.com/openurl?ctx_ver=Z39.88-2003&amp;res_id=xri:eebo&amp;rft_val_fmt=&amp;rft_id=xri:eebo:image:16610</su>
-    <sx>CDL</sx>
-  </d856>
-  <d830 i1=" " i2="0">
-    <sa>Early English books, 1475-1640 ;</sa>
-    <sv>1406:13.</sv>
-  </d830>
-  <d901 i1=" " i2=" ">
-    <sa>DVXL</sa>
-    <sb>002592301</sb>
-  </d901>
-</r>
-</collection>
diff --git a/test/tmarc9.res.xml b/test/tmarc9.res.xml
deleted file mode 100644 (file)
index e545673..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<collection xmlns="http://www.indexdata.com/turbomarc" xmlns:pz="http://www.indexdata.com/pazpar2/1.0" xmlns:tmarc="http://www.indexdata.com/turbomarc">
-  <pz:record>
-    <pz:metadata type="id">  2005336282</pz:metadata>
-    <pz:metadata type="oclc-number">(OCoLC)170490164</pz:metadata>
-    <pz:metadata type="lccn">  2005336282</pz:metadata>
-    <pz:metadata type="system-control-nr">(OCoLC)170490164</pz:metadata>
-    <pz:metadata type="date">2005-</pz:metadata>
-    <pz:metadata type="title">Qaḍāʼ al-usrah :</pz:metadata>
-    <pz:metadata type="title-remainder">majallah mutakhaṣṣiṣah /</pz:metadata>
-    <pz:metadata type="title-responsibility">Wizārat al-ʻAdl.</pz:metadata>
-    <pz:metadata type="title-complete">Qaḍāʼ al-usrah : majallah mutakhaṣṣiṣah /</pz:metadata>
-    <pz:metadata type="publication-place">al-Rabāṭ :</pz:metadata>
-    <pz:metadata type="publication-name">Jamʻīyat Nashr al-Maʻlūmah al-Qānūnīyah wa-al-Qaḍāʼīyah,</pz:metadata>
-    <pz:metadata type="publication-date">2005-</pz:metadata>
-    <pz:metadata type="physical-extent">v. :</pz:metadata>
-    <pz:metadata type="physical-format">ill. ;</pz:metadata>
-    <pz:metadata type="physical-dimensions">24 cm.</pz:metadata>
-    <pz:metadata type="description">Some issues have also a distinctive title.</pz:metadata>
-    <pz:metadata type="description">Latest issue consulted: al-ʻAdad 3. (Dujanbir 2006).</pz:metadata>
-    <pz:metadata type="subject">Domestic relations (Islamic law)</pz:metadata>
-    <pz:metadata type="subject-long">Domestic relations (Islamic law), Morocco.</pz:metadata>
-    <pz:metadata type="subject">Divorce (Islamic law)</pz:metadata>
-    <pz:metadata type="subject-long">Divorce (Islamic law)</pz:metadata>
-    <pz:metadata type="subject">Marriage law</pz:metadata>
-    <pz:metadata type="subject-long">Marriage law, Morocco.</pz:metadata>
-    <pz:metadata type="subject">Law reports, digests, etc.</pz:metadata>
-    <pz:metadata type="subject-long">Law reports, digests, etc., Morocco.</pz:metadata>
-    <pz:metadata type="medium">journal</pz:metadata>
-    <pz:metadata type="has-fulltext">no</pz:metadata>
-  </pz:record>
-</collection>
diff --git a/test/tmarc9.xml b/test/tmarc9.xml
deleted file mode 100644 (file)
index 7e070cc..0000000
+++ /dev/null
@@ -1,157 +0,0 @@
-<collection xmlns="http://www.indexdata.com/turbomarc">
-<r>
-  <l>02075cas a22005055a 4500</l>
-  <c001>  2005336282</c001>
-  <c003>DLC</c003>
-  <c005>20070911033614.0</c005>
-  <c008>070910c20059999mr uu p      f0    0ara  </c008>
-  <d010 i1=" " i2=" ">
-    <sa>  2005336282</sa>
-  </d010>
-  <d012 i1=" " i2=" ">
-    <sa>-3-7-0709110002-p-----    </sa>
-  </d012>
-  <d035 i1=" " i2=" ">
-    <sa>(OCoLC)170490164</sa>
-  </d035>
-  <d906 i1=" " i2=" ">
-    <sa>7</sa>
-    <sb>und</sb>
-    <sc>serials</sc>
-    <sd>u</sd>
-    <se>ncip</se>
-    <sf>19</sf>
-    <sg>n-oclcserc</sg>
-  </d906>
-  <d040 i1=" " i2=" ">
-    <sa>DLC</sa>
-    <sc>DLC</sc>
-    <sd>DLC</sd>
-  </d040>
-  <d041 i1="0" i2=" ">
-    <sa>ara</sa>
-    <sa>fre</sa>
-  </d041>
-  <d042 i1=" " i2=" ">
-    <sa>lc</sa>
-  </d042>
-  <d043 i1=" " i2=" ">
-    <sa>f-mr---</sa>
-  </d043>
-  <d050 i1="0" i2="0">
-    <sa>IN PROCESS</sa>
-  </d050>
-  <d066 i1=" " i2=" ">
-    <sc>(3</sc>
-  </d066>
-  <d245 i1="0" i2="0">
-    <s6>880-01</s6>
-    <sa>Qaḍāʼ al-usrah :</sa>
-    <sb>majallah mutakhaṣṣiṣah /</sb>
-    <sc>Wizārat al-ʻAdl.</sc>
-  </d245>
-  <d246 i1="1" i2="3">
-    <sa>Justice de la famille</sa>
-  </d246>
-  <d246 i1="1" i2="3">
-    <s6>880-02</s6>
-    <sa>Majallat Qaḍāʼ al-usrah</sa>
-    <sf>&lt;2006&gt;</sf>
-  </d246>
-  <d260 i1=" " i2=" ">
-    <s6>880-03</s6>
-    <sa>al-Rabāṭ :</sa>
-    <sb>Jamʻīyat Nashr al-Maʻlūmah al-Qānūnīyah wa-al-Qaḍāʼīyah,</sb>
-    <sc>2005-</sc>
-  </d260>
-  <d300 i1=" " i2=" ">
-    <sa>v. :</sa>
-    <sb>ill. ;</sb>
-    <sc>24 cm.</sc>
-  </d300>
-  <d310 i1=" " i2=" ">
-    <sa>Irregular (semiannual)</sa>
-  </d310>
-  <d362 i1="0" i2=" ">
-    <s6>880-04</s6>
-    <sa>al-ʻAdad 1. (Yūlyūz 2005)-</sa>
-  </d362>
-  <d490 i1="0" i2=" ">
-    <s6>880-05</s6>
-    <sa>Manshūrāt Jamʻīyat Nashr al-Maʻlūmah al-Qānūnīyah wa-al-Qaḍāʼīyah</sa>
-  </d490>
-  <d500 i1=" " i2=" ">
-    <sa>Some issues have also a distinctive title.</sa>
-  </d500>
-  <d500 i1=" " i2=" ">
-    <sa>Latest issue consulted: al-ʻAdad 3. (Dujanbir 2006).</sa>
-  </d500>
-  <d546 i1=" " i2=" ">
-    <sa>Chiefly in Arabic; some French.</sa>
-  </d546>
-  <d650 i1=" " i2="0">
-    <sa>Domestic relations (Islamic law)</sa>
-    <sz>Morocco.</sz>
-  </d650>
-  <d650 i1=" " i2="0">
-    <sa>Divorce (Islamic law)</sa>
-  </d650>
-  <d650 i1=" " i2="0">
-    <sa>Marriage law</sa>
-    <sz>Morocco.</sz>
-  </d650>
-  <d650 i1=" " i2="0">
-    <sa>Law reports, digests, etc.</sa>
-    <sz>Morocco.</sz>
-  </d650>
-  <d710 i1="2" i2=" ">
-    <s6>880-06</s6>
-    <sa>Jamʻīyat Nashr al-Maʻlūmah al-Qānūnīyah wa-al-Qaḍāʼīyah.</sa>
-  </d710>
-  <d710 i1="1" i2=" ">
-    <s6>880-07</s6>
-    <sa>Morocco.</sa>
-    <sb>Wizārat al-ʻAdl.</sb>
-  </d710>
-  <d850 i1=" " i2=" ">
-    <sa>DLC</sa>
-  </d850>
-  <d880 i1="0" i2="0">
-    <s6>245-01/(3/r</s6>
-    <sa>قضاء الأسرة :</sa>
-    <sb>مجلة متخصصة /</sb>
-    <sc>وزارة العدل.</sc>
-  </d880>
-  <d880 i1="1" i2="3">
-    <s6>246-02/(3/r</s6>
-    <sa>مجلة قضاء الأسرة</sa>
-    <sf>&lt;2006&gt;</sf>
-  </d880>
-  <d880 i1=" " i2=" ">
-    <s6>260-03/(3/r</s6>
-    <sa>الرباط :</sa>
-    <sb>جمعية نشر المعلومة القانونية والقضائية،</sb>
-    <sc>2005-</sc>
-  </d880>
-  <d880 i1="0" i2=" ">
-    <s6>362-04/(3/r</s6>
-    <sa>العدد 1. (يوليوز 2005)-</sa>
-  </d880>
-  <d880 i1="0" i2=" ">
-    <s6>490-05/(3/r</s6>
-    <sa>منشورات جمعية نشر المعلومة القانونية والقضائية</sa>
-  </d880>
-  <d880 i1="2" i2=" ">
-    <s6>710-06/(3/r</s6>
-    <sa>جمعية نشر المعلومة القانونية والقضائية.</sa>
-  </d880>
-  <d880 i1="1" i2=" ">
-    <s6>710-07/(3/r</s6>
-    <sa>Morocco.</sa>
-    <sb>وزارة العدل.</sb>
-  </d880>
-  <d936 i1=" " i2=" ">
-    <sa>LC Cairo Office [we 45]</sa>
-  </d936>
-</r>
-</collection>
index dbbaf5e..6460a66 100644 (file)
@@ -5,7 +5,7 @@
 DEBUG=0   # 0 for release, 1 for debug
 USE_MANIFEST = 1 # Can be enabled Visual Studio 2005/2008
 PACKAGE_NAME=pazpar2
-PACKAGE_VERSION=1.6.40
+PACKAGE_VERSION=1.7.0
 
 # YAZ
 YAZ_DIR=..\..\yaz