indexInfo is now updated with information from the irspy:status section.
[irspy-moved-to-github.git] / xsl / irspy2zeerex.xsl
1 <?xml version="1.0"?>
2 <!--
3     $Id: irspy2zeerex.xsl,v 1.2 2006-10-27 11:43:17 sondberg Exp $
4
5     This stylesheet is used by IRSpy to map the internal mixed Zeerex/IRSpy
6     record format into the Zeerex record which we store.
7
8 -->
9 <xsl:stylesheet
10     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
11     xmlns:irspy="http://indexdata.com/irspy/1.0"
12     xmlns="http://explain.z3950.org/dtd/2.0/"
13     xmlns:explain="http://explain.z3950.org/dtd/2.0/"
14     exclude-result-prefixes="irspy explain"
15     version="1.0">
16
17   <xsl:output indent="yes"
18       method="xml"
19       version="1.0"
20       encoding="UTF-8"/>
21
22   <xsl:preserve-space elements="*"/>
23
24   <xsl:variable name="old_indexes" select="/*/explain:indexInfo/explain:index"/>
25   <xsl:variable name="old_syntaxes" select="/*/explain:recordInfo"/>
26
27
28   <xsl:template match="node() | @*">
29     <xsl:copy>
30       <xsl:apply-templates select="@* | node()"/>
31     </xsl:copy>
32   </xsl:template>
33
34
35   <xsl:template match="explain:indexInfo">
36     <indexInfo>
37       <xsl:for-each select="/*/irspy:status/irspy:search">
38         <xsl:variable name="set" select="@set"/>
39         <xsl:variable name="ap" select="@ap"/>
40         <xsl:variable name="old"
41          select="$old_indexes[explain:map/explain:attr/@set = $set and
42                               explain:map/explain:attr/text() = $ap]"/>
43         <xsl:choose>
44           <xsl:when test="$old">
45             <xsl:call-template name="insert-index-section">
46               <xsl:with-param name="title" select="$old/explain:title"/>
47             </xsl:call-template>
48           </xsl:when>
49           <xsl:otherwise>
50             <xsl:call-template name="insert-index-section"/>
51           </xsl:otherwise>
52         </xsl:choose>
53       </xsl:for-each>
54     </indexInfo>
55   </xsl:template>
56
57
58   <xsl:template match="explain:recordInfo">
59   </xsl:template>
60
61
62   <xsl:template name="insert-index-section">
63     <xsl:param name="update" select="."/>
64     <xsl:param name="title">
65       <xsl:call-template name="insert-index-title">
66         <xsl:with-param name="update" select="$update"/>
67       </xsl:call-template>
68     </xsl:param>
69
70     <index>
71       <xsl:attribute name="search">
72         <xsl:choose>
73           <xsl:when test="$update/@ok = 1">true</xsl:when>
74           <xsl:otherwise>false</xsl:otherwise>
75         </xsl:choose>
76       </xsl:attribute>
77       <title primary="true" lang="en">
78         <xsl:value-of select="$title"/>
79       </title>
80       <map primary="true">
81         <attr type="1" set="{$update/@set}">
82           <xsl:value-of select="$update/@ap"/>
83         </attr>
84       </map>
85     </index>
86   </xsl:template>
87
88
89   <xsl:template name="insert-index-title">
90     <xsl:param name="update"/>
91     <xsl:value-of select="$update/@ap"/>
92   </xsl:template>
93
94
95
96   <xsl:template match="explain:dateModified">
97     <dateModified><xsl:value-of
98                     select="/*/irspy:status/*[last()]"/></dateModified>
99   </xsl:template>
100
101
102 </xsl:stylesheet>