Support for zeerex:index
[irspy-moved-to-github.git] / zebra / zeerex2index.xsl
index 17bf469..76618cf 100644 (file)
@@ -1,20 +1,24 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- $Id: zeerex2index.xsl,v 1.9 2007-02-28 17:51:31 mike Exp $ -->
+<!-- $Id: zeerex2index.xsl,v 1.15 2009-04-16 15:28:26 mike Exp $ -->
 <!-- See the ZeeRex profile at http://srw.cheshire3.org/profiles/ZeeRex/ -->
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                 xmlns:z="http://indexdata.dk/zebra/xslt/1"
                 xmlns:e="http://explain.z3950.org/dtd/2.0/"
+                xmlns:i="http://indexdata.com/irspy/1.0"
                 version="1.0">
+ <xsl:variable name="lcletters">abcdefghijklmnopqrstuvwxyz</xsl:variable>
+ <xsl:variable name="ucletters">ABCDEFGHIJKLMNOPQRSTUVWXYZ</xsl:variable>
  <xsl:output indent="yes" method="xml" version="1.0" encoding="UTF-8"/>
  <!-- Disable all default text node output -->
  <xsl:template match="text()"/>
  <!-- Match on ZeeRex XML record -->
  <xsl:template match="//e:explain">
-  <z:record id="{concat(
-               e:serverInfo/e:host, ':',
-               e:serverInfo/e:port, '/',
-               e:serverInfo/e:database)}"
-           type="update">
+  <xsl:variable name="id"><xsl:value-of select="concat(
+       e:serverInfo/@protocol, ':',
+       e:serverInfo/e:host, ':',
+       e:serverInfo/e:port, '/',
+       e:serverInfo/e:database)"/></xsl:variable>
+  <z:record id="{$id}" type="update">
 
    <!-- Well, not quite _anywhere_.  Only textual fields are indexed -->
    <z:index name="cql:anywhere" type="w">
     <xsl:value-of select="@authoritative"/>
    </z:index>
 
-   <z:index name="rec:id" type="0">
-    <xsl:value-of select="concat(
-                         e:serverInfo/e:host, ':',
-                         e:serverInfo/e:port, '/',
-                         e:serverInfo/e:database)"/>
+   <z:index name="rec:id" type="u">
+    <xsl:value-of select="$id"/>
    </z:index>
 
    <!-- serverInfo -->
     <xsl:value-of select="e:metaInfo/e:dateModified"/>
    </z:index>
 
-   <!-- ### indexInfo -->
+   <!-- indexInfo -->
+   <xsl:for-each select="e:indexInfo/e:index/e:map/e:attr">
+    <z:index name="zeerex:index" type="w">
+     <xsl:value-of select="."/>
+    </z:index>
+   </xsl:for-each>
 
    <!-- recordInfo -->
    <z:index name="zeerex:recordSyntax" type="0">
    </xsl:for-each>
    <!-- Many more could be added as required -->
 
+   <!-- extensions -->
+   <z:index name="zeerex:libType" type="0">
+    <xsl:value-of select="i:status/i:libraryType"/>
+   </z:index>
+   <z:index name="zeerex:country" type="0">
+    <xsl:value-of select="i:status/i:country"/>
+   </z:index>
+
   </z:record>
  </xsl:template>
 </xsl:stylesheet>