source: trunk/Distribution/XSL/common/autoidx-ng.xsl@ 2

Last change on this file since 2 was 2, checked in by jkacer, 18 years ago

Added all DocBook Framework stuff:

  • DocBook DTD
  • Transformation software FOP 0.20.5 and Saxon 6
  • XSL styles
  • Rexx scripts

Also added some WarpIN-related stuff for creation of WarpIN installation packages.
This state corresponds to version 1.0.0 from November 2005, just slightly modified to carry versioning information (Rexx scripts).

File size: 4.7 KB
Line 
1<?xml version="1.0"?>
2<!DOCTYPE xsl:stylesheet [
3<!ENTITY primary 'normalize-space(concat(primary/@sortas, primary[not(@sortas)]))'>
4]>
5<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
6 version="1.0"
7 xmlns:func="http://exslt.org/functions"
8 xmlns:exslt="http://exslt.org/common"
9 xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0"
10 extension-element-prefixes="func exslt"
11 exclude-result-prefixes="func exslt i l"
12 xmlns:i="urn:cz-kosek:functions:index">
13
14<!-- ********************************************************************
15 $Id: autoidx-ng.xsl,v 1.1 2003/12/31 16:50:15 kosek Exp $
16 ********************************************************************
17
18 This file is part of the DocBook XSL Stylesheet distribution.
19 See ../README or http://docbook.sf.net/ for copyright
20 and other information.
21
22 ******************************************************************** -->
23
24<!-- Returns index group code for given term -->
25<func:function name="i:group-index">
26 <xsl:param name="term"/>
27
28 <xsl:variable name="letters-rtf">
29 <xsl:variable name="lang">
30 <xsl:call-template name="l10n.language"/>
31 </xsl:variable>
32
33 <xsl:variable name="local.l10n.letters"
34 select="($local.l10n.xml//l:i18n/l:l10n[@language=$lang]/l:letters)[1]"/>
35
36 <xsl:variable name="l10n.letters"
37 select="($l10n.xml/l:i18n/l:l10n[@language=$lang]/l:letters)[1]"/>
38
39 <xsl:choose>
40 <xsl:when test="count($local.l10n.letters) &gt; 0">
41 <xsl:copy-of select="$local.l10n.letters"/>
42 </xsl:when>
43 <xsl:when test="count($l10n.letters) &gt; 0">
44 <xsl:copy-of select="$l10n.letters"/>
45 </xsl:when>
46 <xsl:otherwise>
47 <xsl:message>
48 <xsl:text>No "</xsl:text>
49 <xsl:value-of select="$lang"/>
50 <xsl:text>" localization of index grouping letters exists</xsl:text>
51 <xsl:choose>
52 <xsl:when test="$lang = 'en'">
53 <xsl:text>.</xsl:text>
54 </xsl:when>
55 <xsl:otherwise>
56 <xsl:text>; using "en".</xsl:text>
57 </xsl:otherwise>
58 </xsl:choose>
59 </xsl:message>
60
61 <xsl:copy-of select="($l10n.xml/l:i18n/l:l10n[@language='en']/l:letters)[1]"/>
62 </xsl:otherwise>
63 </xsl:choose>
64 </xsl:variable>
65
66 <xsl:variable name="letters" select="exslt:node-set($letters-rtf)/*"/>
67
68 <xsl:variable name="long-letter-index" select="$letters/l:l[. = substring($term,1,2)]/@i"/>
69 <xsl:variable name="short-letter-index" select="$letters/l:l[. = substring($term,1,1)]/@i"/>
70 <xsl:variable name="letter-index">
71 <xsl:choose>
72 <xsl:when test="$long-letter-index">
73 <xsl:value-of select="$long-letter-index"/>
74 </xsl:when>
75 <xsl:when test="$short-letter-index">
76 <xsl:value-of select="$short-letter-index"/>
77 </xsl:when>
78 <xsl:otherwise>0</xsl:otherwise>
79 </xsl:choose>
80 </xsl:variable>
81 <func:result select="number($letter-index)"/>
82</func:function>
83
84<!-- Return index group letter for given group code -->
85<func:function name="i:group-letter">
86 <xsl:param name="index"/>
87
88 <xsl:variable name="letters-rtf">
89 <xsl:variable name="lang">
90 <xsl:call-template name="l10n.language"/>
91 </xsl:variable>
92
93 <xsl:variable name="local.l10n.letters"
94 select="($local.l10n.xml//l:i18n/l:l10n[@language=$lang]/l:letters)[1]"/>
95
96 <xsl:variable name="l10n.letters"
97 select="($l10n.xml/l:i18n/l:l10n[@language=$lang]/l:letters)[1]"/>
98
99 <xsl:choose>
100 <xsl:when test="count($local.l10n.letters) &gt; 0">
101 <xsl:copy-of select="$local.l10n.letters"/>
102 </xsl:when>
103 <xsl:when test="count($l10n.letters) &gt; 0">
104 <xsl:copy-of select="$l10n.letters"/>
105 </xsl:when>
106 <xsl:otherwise>
107 <xsl:message>
108 <xsl:text>No "</xsl:text>
109 <xsl:value-of select="$lang"/>
110 <xsl:text>" localization of index grouping letters exists</xsl:text>
111 <xsl:choose>
112 <xsl:when test="$lang = 'en'">
113 <xsl:text>.</xsl:text>
114 </xsl:when>
115 <xsl:otherwise>
116 <xsl:text>; using "en".</xsl:text>
117 </xsl:otherwise>
118 </xsl:choose>
119 </xsl:message>
120
121 <xsl:copy-of select="($l10n.xml/l:i18n/l:l10n[@language='en']/l:letters)[1]"/>
122 </xsl:otherwise>
123 </xsl:choose>
124 </xsl:variable>
125
126 <xsl:variable name="letters" select="exslt:node-set($letters-rtf)/*"/>
127
128 <func:result select="$letters/l:l[@i=$index][1]"/>
129</func:function>
130
131<xsl:key name="group-code"
132 match="indexterm"
133 use="i:group-index(&primary;)"/>
134
135</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.