source: scripts/xml-stats/format.xsl@ 2250

Last change on this file since 2250 was 2250, checked in by Александър Шопов, 15 years ago

Скриптове за отпечатване на статистика

File size: 7.8 KB
Line 
1<?xml version="1.0" encoding="UTF-8" ?>
2<xsl:stylesheet version="1.0"
3xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
4xmlns:math="http://exslt.org/math"
5xmlns:dyn="http://exslt.org/dynamic"
6xmlns:str="http://exslt.org/strings"
7
8extension-element-prefixes="math dyn str">
9
10<xsl:variable name="nl">
11<xsl:text>
12</xsl:text>
13</xsl:variable>
14<xsl:variable name="dot" select="' • '"/>
15<xsl:variable name="po-prefix" select="'po-'"/>
16<xsl:variable name="true-false-replace" select="'truefals'"/>
17
18
19<xsl:output encoding="UTF-8" method="text"/>
20<xsl:variable name="maxNameLength" select="dyn:max(//domain, 'string-length(concat(../@id,translate(boolean(substring-after(@id,$po-prefix)),$true-false-replace,$dot),substring-after(@id,$po-prefix)))')" />
21<xsl:variable name="maxTranslatedLength" select="string-length(dyn:sum(//domain/translated,'.'))" />
22<xsl:variable name="maxFuzzzyLength" select="string-length(dyn:sum(//domain/fuzzy,'.'))" />
23<xsl:variable name="maxUntranslatedLength" select="string-length(dyn:sum(//domain/untranslated,'.'))" />
24<xsl:variable name="maxAllLength" select="string-length(dyn:sum(//domain/translated,'.')+dyn:sum(//domain/fuzzy,'.')+dyn:sum(//domain/untranslated,'.'))" />
25<xsl:variable name="maxTodoLength" select="string-length(dyn:sum(//domain/fuzzy,'.')+dyn:sum(//domain/untranslated,'.'))" />
26
27
28
29<xsl:template match="/">
30<!--
31<xsl:value-of select="$maxNameLength"/>@maxNameLength
32<xsl:value-of select="$maxTranslatedLength" />@maxTranslatedLength
33<xsl:value-of select="$maxFuzzzyLength"/>@maxFuzzzyLength
34<xsl:value-of select="$maxUntranslatedLength"/>@maxUntranslatedLength
35<xsl:value-of select="$maxAllLength"/>@maxAllLength
36<xsl:value-of select="$maxTodoLength"/>@maxTodoLength
37-->
38
39<xsl:call-template name="draw-heading"/>
40
41
42
43
44
45<xsl:call-template name="draw-separator"/>
46
47<xsl:for-each select="//domain">
48<xsl:sort order="descending" select="fuzzy + untranslated" data-type="number"/>
49<xsl:sort order="descending" select="untranslated" data-type="number"/>
50<xsl:sort order="descending" select="translated + fuzzy + untranslated" data-type="number"/>
51<xsl:sort order="ascending" select="../@id"/>
52
53
54
55
56
57<xsl:call-template name="draw-line">
58<xsl:with-param name="name" select="concat(../@id,translate(boolean(substring-after(@id,$po-prefix)),$true-false-replace,$dot),substring-after(@id,$po-prefix))"/>
59<xsl:with-param name="nameLength" select="$maxNameLength"/>
60<xsl:with-param name="translated" select="translated"/>
61<xsl:with-param name="translatedLength" select="$maxTranslatedLength"/>
62<xsl:with-param name="fuzzy" select="fuzzy"/>
63<xsl:with-param name="fuzzyLength" select="$maxFuzzzyLength"/>
64<xsl:with-param name="untranslated" select="untranslated"/>
65<xsl:with-param name="untranslatedLength" select="$maxUntranslatedLength"/>
66<xsl:with-param name="all" select="translated+fuzzy+untranslated"/>
67<xsl:with-param name="allLength" select="$maxAllLength"/>
68<xsl:with-param name="todo" select="fuzzy+untranslated"/>
69<xsl:with-param name="todoLength" select="$maxTodoLength"/>
70<xsl:with-param name="separator" select="'|'"/>
71<xsl:with-param name="pad" select="' '"/>
72</xsl:call-template>
73
74
75</xsl:for-each>
76
77<xsl:call-template name="draw-separator"/>
78
79<xsl:call-template name="draw-footer"/>
80
81
82
83</xsl:template>
84
85<xsl:template name="draw-line">
86<xsl:param name="name"/>
87<xsl:param name="nameLength"/>
88<xsl:param name="translated"/>
89<xsl:param name="translatedLength"/>
90<xsl:param name="fuzzy"/>
91<xsl:param name="fuzzyLength"/>
92<xsl:param name="untranslated"/>
93<xsl:param name="untranslatedLength"/>
94<xsl:param name="all"/>
95<xsl:param name="allLength"/>
96<xsl:param name="todo"/>
97<xsl:param name="todoLength"/>
98<xsl:param name="separator"/>
99<xsl:param name="pad"/>
100
101<!--
102<xsl:value-of select="$name"/>#name
103<xsl:value-of select="$nameLength"/>#nameLength
104<xsl:value-of select="$translated"/>#translated
105<xsl:value-of select="$translatedLength"/>#translatedLength
106<xsl:value-of select="$fuzzy"/>#fuzzy
107<xsl:value-of select="$fuzzyLength"/>#fuzzyLength
108<xsl:value-of select="$untranslated"/>#untranslated
109<xsl:value-of select="$untranslatedLength"/>#untranslatedLength
110<xsl:value-of select="$all"/>#all
111<xsl:value-of select="$allLength"/>#allLength
112<xsl:value-of select="$todo"/>#todo
113<xsl:value-of select="$todoLength"/>#todoLength
114<xsl:value-of select="$separator"/>#separator
115<xsl:value-of select="$pad"/>#pad
116-->
117
118
119<xsl:value-of select="str:align($name,str:padding($nameLength+2,$pad),'left')"/>
120<xsl:value-of select="$separator"/>
121<xsl:value-of select="str:align($todo,str:padding($todoLength+2,$pad),'right')"/>
122<xsl:value-of select="$separator"/>
123<xsl:value-of select="str:align($untranslated,str:padding($untranslatedLength+2,$pad),'right')"/>
124<xsl:value-of select="$separator"/>
125<xsl:value-of select="str:align($fuzzy,str:padding($fuzzyLength+2,$pad),'right')"/>
126<xsl:value-of select="$separator"/>
127<xsl:value-of select="str:align($translated,str:padding($translatedLength+2,$pad),'right')"/>
128<xsl:value-of select="$separator"/>
129<xsl:value-of select="str:align($all,str:padding($allLength+2,$pad),'right')"/>
130<xsl:value-of select="$nl"/>
131
132
133</xsl:template>
134<xsl:template name="draw-separator">
135<xsl:call-template name="draw-line">
136<xsl:with-param name="name" select="''"/>
137<xsl:with-param name="nameLength" select="$maxNameLength"/>
138<xsl:with-param name="translated" select="''"/>
139<xsl:with-param name="translatedLength" select="$maxTranslatedLength"/>
140<xsl:with-param name="fuzzy" select="''"/>
141<xsl:with-param name="fuzzyLength" select="$maxFuzzzyLength"/>
142<xsl:with-param name="untranslated" select="''"/>
143<xsl:with-param name="untranslatedLength" select="$maxUntranslatedLength"/>
144<xsl:with-param name="all" select="''"/>
145<xsl:with-param name="allLength" select="$maxAllLength"/>
146<xsl:with-param name="todo" select="''"/>
147<xsl:with-param name="todoLength" select="$maxTodoLength"/>
148<xsl:with-param name="separator" select="'+'"/>
149<xsl:with-param name="pad" select="'-'"/>
150</xsl:call-template>
151</xsl:template>
152
153<xsl:template name="draw-heading">
154<xsl:call-template name="draw-line">
155<xsl:with-param name="name" select="'Име'"/>
156<xsl:with-param name="nameLength" select="$maxNameLength"/>
157<xsl:with-param name="translated" select="'Преведени'"/>
158<xsl:with-param name="translatedLength" select="$maxTranslatedLength"/>
159<xsl:with-param name="fuzzy" select="'Мъгляви'"/>
160<xsl:with-param name="fuzzyLength" select="$maxFuzzzyLength"/>
161<xsl:with-param name="untranslated" select="'Непреведени'"/>
162<xsl:with-param name="untranslatedLength" select="$maxUntranslatedLength"/>
163<xsl:with-param name="all" select="'Всичко'"/>
164<xsl:with-param name="allLength" select="$maxAllLength"/>
165<xsl:with-param name="todo" select="'Работа'"/>
166<xsl:with-param name="todoLength" select="$maxTodoLength"/>
167<xsl:with-param name="separator" select="'|'"/>
168<xsl:with-param name="pad" select="' '"/>
169</xsl:call-template>
170</xsl:template>
171
172
173<xsl:template name="draw-footer">
174<xsl:call-template name="draw-line">
175<xsl:with-param name="name" select="'Общо'"/>
176<xsl:with-param name="nameLength" select="$maxNameLength"/>
177<xsl:with-param name="translated" select="dyn:sum(//domain/translated,'.')"/>
178<xsl:with-param name="translatedLength" select="$maxTranslatedLength"/>
179<xsl:with-param name="fuzzy" select="dyn:sum(//domain/fuzzy,'.')"/>
180<xsl:with-param name="fuzzyLength" select="$maxFuzzzyLength"/>
181<xsl:with-param name="untranslated" select="dyn:sum(//domain/untranslated,'.')"/>
182<xsl:with-param name="untranslatedLength" select="$maxUntranslatedLength"/>
183<xsl:with-param name="all" select="dyn:sum(//domain/translated,'.')+dyn:sum(//domain/fuzzy,'.')+dyn:sum(//domain/untranslated,'.')"/>
184<xsl:with-param name="allLength" select="$maxAllLength"/>
185<xsl:with-param name="todo" select="dyn:sum(//domain/fuzzy,'.')+dyn:sum(//domain/untranslated,'.')"/>
186<xsl:with-param name="todoLength" select="$maxTodoLength"/>
187<xsl:with-param name="separator" select="'|'"/>
188<xsl:with-param name="pad" select="' '"/>
189</xsl:call-template>
190</xsl:template>
191
192</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.