+ <xsl:template name="insert-configInfo">
+ <configInfo>
+ <xsl:choose>
+ <xsl:when test="/*/irspy:status/irspy:init_opt">
+ <xsl:for-each select="/*/irspy:status/irspy:init_opt">
+ <supports type="z3950_{@option}">1</supports>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="explain:configInfo/*"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </configInfo>
+ </xsl:template>
+
+
+ <!--
+ Here we list the bits and pieces of the irspy:status element which we
+ want to keep in the persistent version of the zeerex record.
+ -->
+ <xsl:template name="insert-irspySection">
+ <irspy:status>
+ <xsl:copy-of select="*/irspy:libraryType"/>
+ <xsl:copy-of select="*/irspy:country"/>
+ <xsl:copy-of select="*/irspy:probe"/>
+
+ <xsl:call-template name="insert-latest-nodes">
+ <xsl:with-param name="nodes" select="*/irspy:boolean"/>
+ <xsl:with-param name="what" select="'boolean'"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="insert-latest-nodes">
+ <xsl:with-param name="nodes" select="*/irspy:named_resultset"/>
+ <xsl:with-param name="what" select="'named_resultset'"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="insert-latest-nodes">
+ <xsl:with-param name="nodes" select="*/irspy:explain"/>
+ <xsl:with-param name="what" select="'explain'"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="insert-latest-nodes">
+ <xsl:with-param name="nodes" select="*/irspy:serverImplementationId"/>
+ <xsl:with-param name="what" select="'serverImplementationId'"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="insert-latest-nodes">
+ <xsl:with-param name="nodes" select="*/irspy:serverImplementationName"/>
+ <xsl:with-param name="what" select="'serverImplementationName'"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="insert-latest-nodes">
+ <xsl:with-param name="nodes"
+ select="*/irspy:serverImplementationVersion"/>
+ <xsl:with-param name="what" select="'serverImplementationVersion'"/>
+ </xsl:call-template>
+ </irspy:status>
+ </xsl:template>
+
+
+ <!--
+ NB: This template assumes that the irspy:probe nodes come in ascending
+ order. If this is not the case, this template has to do some kind of
+ sorting which makes the whole thing more complicated.
+
+ Dec 12, 2006: Anders
+ -->
+ <xsl:template name="insert-latest-nodes">
+ <xsl:param name="nodes"/>
+ <xsl:param name="what" select="'unspecified'"/>
+ <xsl:param name="i" select="count(*/irspy:probe[@ok='1'])"/>
+ <xsl:variable name="date"
+ select="*/irspy:probe[@ok='1'][$i]"/>
+ <xsl:variable name="latest"
+ select="$nodes[irspy:strcmp(text(), $date) >= 0]"/>
+
+ <xsl:choose>
+ <xsl:when test="$latest">
+ <xsl:copy-of select="$latest"/>
+ </xsl:when>
+ <xsl:when test="$i > 0">
+ <xsl:call-template name="insert-latest-nodes">
+ <xsl:with-param name="what" select="$what"/>
+ <xsl:with-param name="nodes" select="$nodes"/>
+ <xsl:with-param name="i" select="$i - 1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <irspy:missing what="{$what}" when="{$ping_date}"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+
+ <xsl:template match="node() | @*">
+ <xsl:copy>
+ <xsl:apply-templates select="@* | node()"/>
+ </xsl:copy>
+ </xsl:template>
+
+