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

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

Затваряне на етикет

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