Reformat; Update copyright year
[idzebra-moved-to-github.git] / examples / marcxml / MARC21slim2INDEX.xsl
index 82d6846..cee454d 100644 (file)
@@ -1,9 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- xsltproc MARC21slim2INDEX.xsl collection-2.xml -->
-
-<!-- 
-$Id: MARC21slim2INDEX.xsl,v 1.5 2006-06-09 20:46:38 marc Exp $
-   Copyright (C) 1995-2006
+<!--
+   Copyright (C) 1995-2013
    Index Data ApS
 
 This file is part of the Zebra server.
@@ -24,13 +21,12 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 02111-1307, USA.
 -->
 
-<xsl:stylesheet 
-    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
-    xmlns:z="http://indexdata.dk/zebra/xslt/1" 
-    xmlns:marc="http://www.loc.gov/MARC21/slim" 
+<xsl:stylesheet
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:z="http://indexdata.com/zebra-2.0"
+    xmlns:marc="http://www.loc.gov/MARC21/slim"
     version="1.0">
 
-  <!-- <xsl:include href="MARC21slimUtils.xsl"/> -->
   <xsl:output indent="yes" method="xml" version="1.0" encoding="UTF-8"/>
 
   <!-- disable all default text node output -->
@@ -49,13 +45,20 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 
 
   <!-- match on marcxml record -->
-  <xsl:template match="marc:record">                
+  <xsl:template match="marc:record">
     <xsl:variable name="leader" select="marc:leader"/>
+    <xsl:variable name="leader5" select="substring($leader,6,1)"/>
+    <xsl:variable name="type">
+      <xsl:choose>
+         <xsl:when test="$leader5='d'">delete</xsl:when>
+         <xsl:otherwise>update</xsl:otherwise>
+      </xsl:choose>
+    </xsl:variable>
     <xsl:variable name="leader6" select="substring($leader,7,1)"/>
     <xsl:variable name="leader7" select="substring($leader,8,1)"/>
-    <xsl:variable name="controlField001" 
+    <xsl:variable name="controlField001"
                   select="normalize-space(marc:controlfield[@tag='001'])"/>
-    <xsl:variable name="controlField008" 
+    <xsl:variable name="controlField008"
                   select="normalize-space(marc:controlfield[@tag='008'])"/>
 
      <xsl:variable name="typeOf008">
@@ -64,7 +67,7 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
            <xsl:choose>
              <xsl:when test="$leader7='a' or $leader7='c' or $leader7='d'
                              or $leader7='m'">BK</xsl:when>
-             <xsl:when test="$leader7='b' or $leader7='i' 
+             <xsl:when test="$leader7='b' or $leader7='i'
                              or $leader7='s'">SE</xsl:when>
            </xsl:choose>
          </xsl:when>
@@ -72,14 +75,14 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
          <xsl:when test="$leader6='p'">MM</xsl:when>
          <xsl:when test="$leader6='m'">CF</xsl:when>
          <xsl:when test="$leader6='e' or $leader6='f'">MP</xsl:when>
-         <xsl:when test="$leader6='g' or $leader6='k' or $leader6='o' 
+         <xsl:when test="$leader6='g' or $leader6='k' or $leader6='o'
                          or $leader6='r'">VM</xsl:when>
-         <xsl:when test="$leader6='c' or $leader6='d' or $leader6='i' 
+         <xsl:when test="$leader6='c' or $leader6='d' or $leader6='i'
                          or $leader6='j'">MU</xsl:when>
        </xsl:choose>
      </xsl:variable>
 
-     <z:record id="{$controlField001}" type="update">
+     <z:record z:id="{$controlField001}" type="{$type}">
 
 
        <!-- <xsl:attribute name="id"></xsl:attribute> -->
@@ -151,7 +154,7 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
        <!-- att 54              Code-language -->
        <!-- att 55              Code-geographic -->
        <!-- att 56              Code-institution -->
-       <!-- att 57              Name-and-title -->      
+       <!-- att 57              Name-and-title -->
        <!-- att 58              Name-geographic -->
        <!-- att 59              Place-publication -->
        <!-- att 60              CODEN -->
@@ -214,12 +217,12 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
    -->
    <xsl:template name="Abstract">
      <xsl:for-each select="marc:datafield[@tag='520']">
-       <z:index name="Abstract" type="w">
+       <z:index name="Abstract:w">
          <xsl:value-of select="."/>
        </z:index>
      </xsl:for-each>
    </xsl:template>
-   
+
    <!--
        Any                  1016  The record is selected if there
                                   exists a Use attribute that the
@@ -287,12 +290,12 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
                           | marc:datafield[@tag='800']
                           | marc:datafield[@tag='810']
                           | marc:datafield[@tag='811']">
-      <z:index name="Author" type="w">
+      <z:index name="Author:w">
         <xsl:value-of select="."/>
       </z:index>
     </xsl:for-each>
     <xsl:for-each select="marc:datafield[@tag='100']">
-      <z:index name="Author" type="p">
+      <z:index name="Author:p">
         <xsl:value-of select="marc:subfield[@code='a']"/>
         <xsl:text> </xsl:text>
         <xsl:value-of select="marc:subfield[@code='d']"/>
@@ -316,14 +319,14 @@ title                      or a conference or meeting      111/2XX, subfields
   <xsl:template name="Author-title">
     <xsl:if test="marc:datafield[@tag='100']
                   and marc:datafield[@tag='245']">
-      <z:index name="Author-title" type="p">
-        <xsl:value-of 
+      <z:index name="Author-title:p">
+        <xsl:value-of
             select="marc:datafield[@tag='100']/marc:subfield[@code='a']"/>
         <xsl:text> </xsl:text>
-        <xsl:value-of 
+        <xsl:value-of
             select="marc:datafield[@tag='100']/marc:subfield[@code='d']"/>
         <xsl:text> </xsl:text>
-        <xsl:value-of 
+        <xsl:value-of
             select="marc:datafield[@tag='245']/marc:subfield[@code='a']"/>
       </z:index>
     </xsl:if>
@@ -342,7 +345,7 @@ corporate                  of persons that is identified
    -->
   <xsl:template name="Author-name-corporate">
     <xsl:for-each select="marc:datafield[@tag='110']">
-      <z:index name="Author-name-corporate" type="w">
+      <z:index name="Author-name-corporate:w">
         <xsl:value-of select="."/>
       </z:index>
     </xsl:for-each>
@@ -362,7 +365,7 @@ conference                 representatives of various
    -->
   <xsl:template name="Author-name-conference">
     <xsl:for-each select="marc:datafield[@tag='111']">
-      <z:index name="Author-name-conference" type="w">
+      <z:index name="Author-name-conference:w">
         <xsl:value-of select="."/>
       </z:index>
     </xsl:for-each>
@@ -382,13 +385,13 @@ Author-name-personal 1004  A person's real name,           100, 400, 700, 800
   <xsl:template name="Author-name-personal">
     <xsl:for-each select="marc:datafield[@tag='100']">
       <xsl:for-each select="marc:subfield[@code='a']">
-        <z:index name="Author-name-personal" type="w">
+        <z:index name="Author-name-personal:w">
           <xsl:value-of select="."/>
         </z:index>
       </xsl:for-each>
     </xsl:for-each>
     <xsl:for-each select="marc:datafield[@tag='100']">
-      <z:index name="Author-name-personal" type="p">
+      <z:index name="Author-name-personal:p">
         <xsl:value-of select="marc:subfield[@code='a']"/>
         <xsl:text> </xsl:text>
         <xsl:value-of select="marc:subfield[@code='d']"/>
@@ -667,7 +670,7 @@ Identifier-ISBN         7  International Standard Book     020
    -->
   <xsl:template name="ISBN">
     <xsl:for-each select="marc:datafield[@tag='020']/marc:subfield[@code='a']">
-      <z:index name="ISBN" type="n">
+      <z:index name="ISBN:n">
         <xsl:value-of select="."/>
       </z:index>
     </xsl:for-each>
@@ -684,7 +687,7 @@ Identifier-ISSN         8  International Standard Serial   022, 4XX$x,
    -->
   <xsl:template name="ISSN">
     <xsl:for-each select="marc:datafield[@tag='022']">
-      <z:index name="ISSN" type="n">
+      <z:index name="ISSN:n">
         <xsl:value-of select="."/>
       </z:index>
     </xsl:for-each>
@@ -887,7 +890,7 @@ Subject                21  The primary topic on which a    600, 610, 611, 630,
                           |marc:datafield[@tag='655']
                           |marc:datafield[@tag='656']
                           |marc:datafield[@tag='657']">
-      <z:index name="Subject-heading" type="w">
+      <z:index name="Subject-heading:w">
         <xsl:value-of select="."/>
       </z:index>
     </xsl:for-each>
@@ -895,7 +898,7 @@ Subject                21  The primary topic on which a    600, 610, 611, 630,
                           |marc:datafield[@tag='650']
                           |marc:datafield[@tag='651']
                           |marc:datafield[@tag='653']">
-      <z:index name="Subject-heading" type="w">
+      <z:index name="Subject-heading:w">
         <xsl:value-of select="."/>
       </z:index>
     </xsl:for-each>
@@ -1023,7 +1026,7 @@ Title                   4  A word, phrase, character,      130, 21X-24X, 440,
    -->
   <xsl:template name="Title">
     <xsl:for-each select="marc:datafield[@tag='245']/marc:subfield[@code='a']">
-      <z:index name="Title" type="w">
+      <z:index name="Title:w">
         <xsl:value-of select="."/>
       </z:index>
     </xsl:for-each>