3 $Id: irspy2zeerex.xsl,v 1.13 2006-12-11 11:01:14 sondberg Exp $
5 This stylesheet is used by IRSpy to map the internal mixed Zeerex/IRSpy
6 record format into the Zeerex record which we store.
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"
17 <xsl:output indent="yes"
22 <xsl:strip-space elements="*"/>
24 <xsl:variable name="old_indexes" select="/*/explain:indexInfo/explain:index"/>
25 <xsl:variable name="use_attr_names" select="document('use-attr-names.xml')"/>
28 <xsl:template match="/*">
30 <xsl:call-template name="insert-zeerexBase"/>
31 <xsl:call-template name="insert-indexInfo"/>
32 <xsl:call-template name="insert-recordInfo"/>
33 <xsl:call-template name="insert-configInfo"/>
34 <xsl:call-template name="insert-irspySection"/>
39 <xsl:template name="insert-zeerexBase">
40 <xsl:copy-of select="explain:serverInfo"/>
41 <xsl:copy-of select="explain:databaseInfo"/>
43 <dateModified><xsl:value-of
44 select="/*/irspy:status/*[last()]"/></dateModified>
49 <xsl:template name="insert-indexInfo">
53 <!-- Check that search was actually probed -->
54 <xsl:when test="/*/irspy:status/irspy:search">
55 <xsl:for-each select="/*/irspy:status/irspy:search">
56 <xsl:variable name="set" select="@set"/>
57 <xsl:variable name="ap" select="@ap"/>
58 <xsl:variable name="old"
59 select="$old_indexes[explain:map/explain:attr/@set = $set and
60 explain:map/explain:attr/text() = $ap]"/>
62 <xsl:when test="$old">
63 <xsl:call-template name="insert-index-section">
64 <xsl:with-param name="title" select="$old/explain:title"/>
68 <xsl:call-template name="insert-index-section"/>
74 <!-- If not, insert what we already had... -->
76 <xsl:copy-of select="explain:indexInfo/*"/>
83 <xsl:template name="insert-recordInfo">
87 <!-- Did we actually probe record syntaxes? -->
88 <xsl:when test="/*/irspy:status/irspy:record">
89 <xsl:for-each select="/*/irspy:status/irspy:record_fetch[@ok = 1]">
90 <recordSyntax name="{@syntax}">
91 <elementSet name="F"/> <!-- FIXME: This should be probed too -->
96 <!-- If not, use the existing test report... -->
98 <xsl:copy-of select="explain:recordInfo/*"/>
105 <xsl:template name="insert-configInfo">
108 <xsl:when test="/*/irspy:status/irspy:init_opt">
109 <xsl:for-each select="/*/irspy:status/irspy:init_opt">
110 <supports type="z3950_{@option}">1</supports>
114 <xsl:copy-of select="explain:configInfo/*"/>
122 Here we list the bits and pieces of the irspy:status element which we
123 want to keep in the persistent version of the zeerex record.
124 Simply add "| irspy:xxx" to the select attribute.
126 <xsl:template name="insert-irspySection">
128 <xsl:for-each select="*/irspy:probe |
130 */irspy:named_resultset |
132 <xsl:copy-of select="."/>
138 <xsl:template match="node() | @*">
140 <xsl:apply-templates select="@* | node()"/>
145 <xsl:template name="insert-index-section">
146 <xsl:param name="update" select="."/>
147 <xsl:param name="title">
148 <xsl:call-template name="insert-index-title">
149 <xsl:with-param name="update" select="$update"/>
154 <xsl:attribute name="search">
156 <xsl:when test="$update/@ok = 1">true</xsl:when>
157 <xsl:otherwise>false</xsl:otherwise>
160 <title primary="true" lang="en">
161 <xsl:value-of select="$title"/>
164 <attr type="1" set="{$update/@set}">
165 <xsl:value-of select="$update/@ap"/>
172 <xsl:template name="insert-index-title">
173 <xsl:param name="update"/>
174 <xsl:variable name="name"
175 select="$use_attr_names/*/map[@attr = $update/@ap and
176 @set = $update/@set]/@name"/>
179 <xsl:when test="string-length($name) > 0"><xsl:value-of
180 select="$name"/></xsl:when>
181 <xsl:otherwise><xsl:value-of select="$update/@ap"/></xsl:otherwise>
186 <xsl:template match="*"/>