source: SMC/trunk/SMC/src/xsl/smc_stats.xsl @ 2437

Last change on this file since 2437 was 2437, checked in by vronk, 11 years ago

renamed folder scripts to xsl
(to distinguish better from web "scripts": js, css)

File size: 16.2 KB
Line 
1<?xml version="1.0" encoding="utf-8"?>
2<xsl:stylesheet
3  version="2.0"
4  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
5  xmlns:xs="http://www.w3.org/2001/XMLSchema"
6  xmlns:my="myFunctions"
7  xmlns:dcif="http://www.isocat.org/ns/dcif"
8  xmlns:dcterms="http://purl.org/dc/terms/"
9  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
10  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"   
11  xmlns:owl="http://www.w3.org/2002/07/owl#"
12  xmlns:dcr="http://www.isocat.org/ns/dcr.rdf#"
13  xmlns:skos="http://www.w3.org/2004/02/skos/core#"
14  xmlns:dcam="http://purl.org/dc/dcam/"
15  exclude-result-prefixes=""
16>
17<!--
18<purpose> statistics about the smc-data
19relies on the data prepared in smc_commons.xsl
20currently the main map is produced in a separate step and loaded from static-xml (map_file)</purpose>
21<params>
22main input file is expected dcr-cmd-map.xml
23</params>
24<history>
25        <change on="2011-10-27" type="created" by="vr">from complist2terms_201109.xsl (via smc_init.xsl)</change>       
26</history>
27-->
28 
29<!--<xsl:import href="cmd_commons.xsl"/>-->
30   
31
32<xsl:import href="smc_commons.xsl"/>
33
34        <xsl:output method="html" indent="yes" />
35       
36  <xsl:param name="title" select="'SMC Stats'" />
37   
38    <!--
39 <xsl:param name="map_file" select="'../../../../SMC/output/map_full.xml'" /> 
40 <xsl:variable name="map" select="document($dcr-cmd-map_file)" />
41    -->
42   
43<!--<xsl:template name="continue-root">-->
44        <xsl:template match="/">
45        <xsl:call-template name="summary-overall"></xsl:call-template>
46                <xsl:call-template name="summary-concepts"></xsl:call-template>
47                <xsl:call-template name="summary-terms"></xsl:call-template>   
48        <xsl:call-template name="summary-cmd"></xsl:call-template>
49                <xsl:call-template name="ambigue-elems"></xsl:call-template>
50   
51 </xsl:template>                       
52       
53       
54<xsl:template name="summary-overall">
55                <table>
56                <tbody>
57                        <tr><td>dcr-terms</td><td ><xsl:value-of select="document-uri($dcr-terms)"/></td></tr>
58                    <tr><td>creation date</td><td align="right"><xsl:value-of select="current-date()"/></td></tr>
59                    <tr><td>available Concepts</td><td align="right"><xsl:value-of select="count($dcr-terms//Concept)"/></td></tr>
60                        <tr><td>used Concept</td><td align="right"><xsl:value-of select="count($dcr-cmd-map//Concept)"/></td></tr>                 
61                    <tr><td>blind Concepts (not in isocat)</td><td align="right"><xsl:value-of select="count(//Concept[not(Term[@set='isocat'])])"/></td></tr>
62                        <tr><td>unused Concepts</td><td align="right"><xsl:value-of select="count($dcr-terms//Concept except $dcr-terms//Concept[@id=$dcr-cmd-map//Concept/@id])"/></td></tr>
63                        <tr><td>Term</td><td align="right"><xsl:value-of select="count($dcr-cmd-map//Term)"/></td></tr>
64                        <!--
65                    <tr><td>profileDescription</td><td align="right"><xsl:value-of select="count(//profileDescription)"/></td></tr>                     
66                        <tr><td>componentDescription</td><td align="right"><xsl:value-of select="count(//componentDescription)"/></td></tr>                     
67                        <tr><td>CMD_ComponentSpec</td><td align="right"><xsl:value-of select="count(//CMD_ComponentSpec)"/></td></tr>
68                        <tr><td>profiles</td><td align="right"><xsl:value-of select="count(//CMD_ComponentSpec[@isProfile='true'])"/></td></tr>
69                        <tr><td>CMD_Component</td><td align="right"><xsl:value-of select="count(//CMD_Component)"/></td></tr>                   
70                        <tr><td>distinct CMD_Component</td><td align="right"><xsl:value-of select="count(distinct-values(//CMD_Component/@name))"/></td></tr>                   
71                        <tr><td>CMD_Element</td><td align="right"><xsl:value-of select="count(//CMD_Element)"/></td></tr>                                               
72                        <tr><td>distinct CMD_Element</td><td align="right"><xsl:value-of select="count(distinct-values(//CMD_Element/@name))"/></td></tr>                                               
73                        <tr><td>CMD_Elements without ConceptLink</td><td align="right"><xsl:value-of select="count(distinct-values(//CMD_Element[@ConceptLink='' or not(@ConceptLink)]/@name))"/></td></tr>                                             
74                        <tr><td>conceptlinks</td><td align="right"><xsl:value-of select="count(//@ConceptLink)"/></td></tr>                                             
75                        <tr><td>conceptlinks (without lang-codes ISO639)</td><td align="right"><xsl:value-of select="count($concepts_nolang)"/></td></tr>                                               
76                        <tr><td>distinct conceptlinks (without lang-codes)</td><td align="right"><xsl:value-of select="count(distinct-values($concepts_nolang))"/></td></tr>                                           
77                        <tr><td>distinct CMD_Elem-conceptlinks</td><td align="right"><xsl:value-of select="count(distinct-values($concepts_nolang[parent::CMD_Element]))"/></td></tr> -->                                               
78                        <!-- <tr><td>datcats in isocat-profile:Metadata#5</td><td align="right"><xsl:value-of select="count($isocat//dcif:dataCategory)"/></td></tr> -->                                               
79                        <!--
80                        <tr><td>elem matrix</td><td align="right"><xsl:value-of select="count($term_matrix/Term)"/></td></tr>                                           
81                        <tr><td>distinct profile-elem</td><td align="right"><xsl:value-of select="count(distinct-values($term_matrix/Term/concat(@profile,@elem)))"/></td></tr>
82                        <tr><td>distinct profile-datcat</td><td align="right"><xsl:value-of select="count(distinct-values($term_matrix/Term/concat(@profile,@datcat)))"/></td></tr>
83                        <tr><td>distinct parent-elem</td><td align="right"><xsl:value-of select="count(distinct-values($term_matrix/Term/concat(@parent,@elem)))"/></td></tr>
84                        <tr><td>distinct profile-parent-elem</td><td align="right"><xsl:value-of select="count(distinct-values($term_matrix/Term/concat(@profile,@parent,@elem)))"/></td></tr>
85                        -->
86                </tbody>
87</table>
88       
89</xsl:template>                 
90
91<xsl:template name="summary-terms">
92    <table>
93        <caption>Term types</caption>
94        <tbody>         
95           <xsl:for-each-group select="$dcr-cmd-map//Term" group-by="concat(@set,@type)">
96               <tr><td><xsl:value-of select="concat(@set,'-', @type)"></xsl:value-of></td><td align="right"><xsl:value-of select="count(current-group())"/></td></tr>       
97           </xsl:for-each-group>           
98        </tbody>
99     </table>
100</xsl:template>
101
102<xsl:template name="summary-concepts">
103       
104    <table>
105        <caption>Data Categories Sets</caption>
106        <tbody>
107            <xsl:for-each select="$dcr-terms//Termset" >
108                <tr><td><xsl:value-of select="@set"></xsl:value-of></td>
109                        <td align="right"><xsl:value-of select="count(Concept)"></xsl:value-of></td>
110                    </tr>       
111            </xsl:for-each>           
112        </tbody>
113    </table>
114</xsl:template>
115
116   
117<xsl:template name="summary-cmd">
118        <xsl:variable name="count_elems" select="count($cmd-terms//Term[@type='CMD_Element'])" ></xsl:variable>
119        <xsl:variable name="count_distinct_datcats" select="count(distinct-values($cmd-terms//Term[@type='CMD_Element']/@datcat[not(.='')]))" ></xsl:variable>
120        <xsl:variable name="count_distinct_components" select="count(distinct-values($cmd-terms//Term[@type='CMD_Component'][not(@parent='')]/@id))" ></xsl:variable>
121        <xsl:variable name="count_standalone_components" select="count(distinct-values($cmd-terms//Term[@type='CMD_Component'][not(@parent='')]/@id[not(contains(.,'#'))]))" ></xsl:variable>
122        <xsl:variable name="count_distinct_elems" select="count(distinct-values($cmd-terms//Term[@type='CMD_Element']/@id))" ></xsl:variable>
123        <xsl:variable name="count_components_datcat" select="count(distinct-values($cmd-terms//Term[@type='CMD_Component'][@datcat[not(.='')]]/@id))" ></xsl:variable> 
124       
125        <table>
126                <tbody>
127                        <tr><td>distinct components</td><td align="right"><xsl:value-of select="$count_distinct_components"/></td></tr>
128                        <tr><td>distinct standalone components</td><td align="right"><xsl:value-of select="$count_standalone_components"/></td></tr>
129                        <tr><td>distinct elements</td><td align="right"><xsl:value-of select="$count_distinct_elems"/></td></tr>       
130                        <tr><td>elements with datcats </td><td align="right"><xsl:value-of select="format-number(count($cmd-terms//Term[@type='CMD_Element'][not(@datcat='')]) div $count_elems, '0.00 %')"/></td></tr>
131                        <tr><td>components with datcats</td><td align="right"><xsl:value-of select="$count_components_datcat"/></td></tr>
132                </tbody>
133        </table>
134       
135        <xsl:variable name="cmd-overall">                               
136                <tr><td>Overall</td>                                                                   
137                        <td align="right">
138                                <xsl:value-of select="$count_distinct_components"/>/
139                                <xsl:value-of select="count($cmd-terms//Term[@type='CMD_Component'])"/>
140                        </td>
141                        <td align="right">              <xsl:value-of select="$count_distinct_elems"/>/
142                                <xsl:value-of select="$count_elems"/></td>
143                        <td align="right"><xsl:value-of select="$count_distinct_datcats"/></td>
144                        <td align="right"><xsl:value-of select="count($cmd-terms//Term[@type='CMD_Element']/@datcat[not(.='')])"/></td>
145                        <td align="right"><xsl:value-of select="count($cmd-terms//Term[@type='CMD_Element'][@datcat=''])"/></td>                       
146                        <td align="right"><xsl:value-of select="format-number(count($cmd-terms//Term[@type='CMD_Element'][@datcat='']) div $count_elems, '0.00 %')"/></td>
147                </tr>           
148        </xsl:variable>
149       
150       
151        <table>
152                <caption>Profiles |<xsl:value-of select="count($cmd-terms//Termset)" />|</caption>
153            <thead><tr><th>name</th><th>|comp|</th><th>|elems|</th><th colspan="2">|distinct datcat|</th><th colspan="2">|elems w/o datcat|</th></tr></thead>
154                <tbody>         
155                        <xsl:copy-of select="$cmd-overall" />
156                    <xsl:for-each select="$cmd-terms//Termset" >                         
157                                        <xsl:sort select="name" order="ascending"/>
158                        <xsl:variable name="count_elems" select="count(./Term[@type='CMD_Element'])" ></xsl:variable>
159                        <xsl:variable name="count_distinct_datcats" select="count(distinct-values(./Term[@type='CMD_Element']/@datcat[not(.='')]))" ></xsl:variable>
160                                                <tr><td><xsl:value-of select="@name"/></td>                                                                     
161                                                    <td align="right"><xsl:value-of select="count(./Term[@type='CMD_Component'])"/></td>
162                                                        <td align="right"><xsl:value-of select="$count_elems"/></td>
163                                                    <td align="right"><xsl:value-of select="$count_distinct_datcats"/></td>
164                                                    <td align="right"><xsl:value-of select="count(./Term[@type='CMD_Element']/@datcat[not(.='')])"/></td>
165                                                    <td align="right"><xsl:value-of select="count(./Term[@type='CMD_Element'][@datcat=''])"/></td>                     
166                                                    <td align="right"><xsl:value-of select="format-number(count(./Term[@type='CMD_Element'][@datcat='']) div $count_elems, '0.00 %')"/></td>
167                                                </tr>
168                                       
169                                </xsl:for-each>
170                </tbody>
171        </table>
172
173        <table>
174                <caption>Components with DatCats</caption>
175                <thead><tr><th>comp-name</th><th colspan="3">datcat</th><th>count</th><th>profiles</th></tr></thead>
176                <tbody>                 
177                        <xsl:for-each-group select="$cmd-terms//Term[@type='CMD_Component'][@datcat[not(.='')]]" group-by="@id">                               
178                                        <xsl:sort select="parent::Termset/@name" />                             
179                                <tr>                                   
180<!--                                    <td><xsl:value-of select="@id"/></td>-->
181                                        <td><xsl:value-of select="@name"/></td>
182                                        <td><xsl:value-of select="my:shortURL(@datcat)"/></td>
183                                        <td><xsl:value-of select="$dcr-terms//Concept[@id=current()/@datcat]/Term[@type='mnemonic']" /></td>
184                                        <td><xsl:value-of select="$dcr-terms//Concept[@id=current()/@datcat]/@datcat-type" /></td>                                     
185                                        <td><xsl:value-of select="count(current-group())"/></td>
186                                        <td><xsl:value-of select="count(current-group()/parent::Termset)"/> (<xsl:value-of select="parent::Termset/@name"/>)</td>
187                                </tr>
188                        </xsl:for-each-group>
189                </tbody>
190        </table>
191</xsl:template>
192       
193<xsl:template name="ambigue-elems">     
194        <table>
195                <caption>Ambigue elements</caption>
196                <thead><tr><th>comp-name</th><th colspan="3">datcat</th><th>count</th><th>profiles</th></tr></thead>
197                <tbody>                 
198                        <xsl:for-each-group select="$cmd-terms//Term" group-by="lower-case(@name)">                             
199<!--                            <xsl:sort select="lower-case(@name)" />                         -->
200                                <xsl:sort select="count(distinct-values(current-group()/@datcat))" order="descending" data-type="number"></xsl:sort>
201                                <tr>                                   
202                                        <!--                                    <td><xsl:value-of select="@id"/></td>-->
203                                        <td><xsl:value-of select="@name"/></td>
204                                        <td><xsl:value-of select="count(distinct-values(current-group()/@datcat))"/></td>                                       
205                                        <td><xsl:value-of select="count(distinct-values(current-group()/@id))"/></td>
206                                </tr>
207                        </xsl:for-each-group>
208                </tbody>
209        </table>
210</xsl:template>
211       
212        <!--
213<xsl:template name="list-terms">
214       
215        <div id="term-list" >
216                <span class="box_heading" >Elements</span> <span class="note">|<xsl:value-of select="count($term_matrix/Term)" />/<xsl:value-of select="count(distinct-values($term_matrix/Term/@elem))" />|</span>
217               
218                        <ul>
219                                <xsl:for-each-group select="$term_matrix/Term" group-by="lower-case(@elem)">
220                                        <xsl:sort select="lower-case(@elem)" order="ascending"/>                                       
221                                                <li><span class="term_detail_caller" ><a href="{@elem}" ><xsl:value-of select="@elem"/></a></span>
222                                                       
223                                                                        <span class="note" >
224                                                                                |<xsl:value-of select="count(distinct-values(current-group()/@datcat))"/>/
225                                                                                        <xsl:value-of select="count(distinct-values(current-group()/@profile))"/>/
226                                                                                        <xsl:value-of select="count(current-group())"/>|
227                                                                                        <!-\- <xsl:value-of select="count(distinct-values(current-group()//node()[not(name()='CMD_Element')]/@ConceptLink))"/> -\->
228                                                                        </span>
229                                                                        <span class="cmd cmd_filter"><xsl:text> </xsl:text></span><span class="cmd cmd_detail" ><xsl:text> </xsl:text></span><span class="cmd cmd_columns" ><xsl:text> </xsl:text></span>
230                                                                <div class="term_detail" >
231                                                                        <div class="box_heading"><xsl:value-of select="@elem"/></div>
232                                                                                <ul>
233                                                                                        <xsl:for-each-group select="current-group()" group-by="@datcat">
234                                                                                                <li><xsl:value-of select="my:shortURL(@datcat)"/>
235                                                                                                        <ul>
236                                                                                                                <xsl:for-each-group select="current-group()" group-by="@profile" >
237                                                                                                                        <li><xsl:value-of select="@profile" />
238                                                                                                                                        <ul>
239                                                                                                                                                <xsl:for-each select="current-group()/@comppath" >
240                                                                                                                                                                <li><span class="cmd cmd_filter"><xsl:text> </xsl:text></span> <span class="cmd cmd_detail"><xsl:text> </xsl:text></span> <span class="cmd cmd_columns"><xsl:text> </xsl:text></span>
241                                                                                                                                                                        <a href="{.}" ><xsl:value-of select="." /></a></li>
242                                                                                                                                                </xsl:for-each>
243                                                                                                                                        </ul>
244                                                                                                                        </li>
245                                                                                                                </xsl:for-each-group>
246                                                                                                        </ul>
247                                                                                                </li>                                           
248                                                                                        </xsl:for-each-group>
249                                                                                </ul>
250                                                                </div>                                                 
251                                               
252                                                </li>
253                                </xsl:for-each-group>
254                        </ul>   
255        </div>
256</xsl:template>-->
257        <!--
258<xsl:template name="list-datcats">
259       
260        <table>
261                <caption>DatCats |<xsl:value-of select="count(distinct-values($term_matrix/Term/@datcat))" />| <span class="note">* Click on numbers to see detail </span></caption>
262                                <thead><tr><th rowspan="2">id</th><th rowspan="2">name</th>
263                                        <th colspan="3" >count </th><th rowspan="2">elems</th></tr>
264                                        <tr><th>profile*</th><th >all*</th><th>elems</th> </tr>         </thead>
265                <tbody>         
266                                <xsl:for-each-group select="$term_matrix/Term" group-by="@datcat">
267                                        <xsl:sort select="lower-case(@datcat)" order="ascending"/>                                     
268                                                <tr><td valign="top"><xsl:value-of select="my:shortURL(@datcat)"/></td>
269                                                <td valign="top"><xsl:value-of select="my:rewriteURL(@datcat)"/></td>
270                                                <td valign="top" align="right">
271                                                        <span class="term_detail_caller" ><xsl:value-of select="count(distinct-values(current-group()/@profile))"/></span>
272                                                        <div class="term_detail" >
273                                                                        <div class="box_heading"><xsl:value-of select="my:rewriteURL(@datcat)"/></div>
274                                                                        <ul>
275                                                                                <xsl:for-each select="distinct-values(current-group()/@profile)" >
276                                                                                        <li><xsl:value-of select="." /></li>
277                                                                                </xsl:for-each>
278                                                                        </ul>
279                                                                </div>                                                 
280                                                </td>
281                                                <td valign="top" align="right">
282                                                        <span class="term_detail_caller" ><xsl:value-of select="count(current-group())"/></span>
283                                                        <div class="term_detail" >
284                                                                        <div class="box_heading"><xsl:value-of select="my:rewriteURL(@datcat)"/></div>
285                                                                        <ul>
286                                                                                <xsl:for-each-group select="current-group()" group-by="@profile" >
287                                                                                        <li><xsl:value-of select="@profile" />
288                                                                                                        <ul>
289                                                                                                                <xsl:for-each select="current-group()/@comppath" >
290                                                                                                                                <li><xsl:value-of select="." /></li>
291                                                                                                                </xsl:for-each>
292                                                                                                        </ul>
293                                                                                        </li>
294                                                                                </xsl:for-each-group>
295                                                                        </ul>
296                                                                </div>                                                 
297                                                </td>
298                                                <td valign="top" align="right"><xsl:value-of select="count(distinct-values(current-group()/@elem))"/></td>                                             
299                                                       
300                                                <td width="40%">                                               
301                                                                <xsl:for-each select="distinct-values(current-group()/@elem)">
302                                                                        <xsl:sort select="." />
303                                                                        <xsl:value-of select="."/>,
304                                                                </xsl:for-each>
305                                                </td>                                                                                           
306                                                </tr>                                   
307                                </xsl:for-each-group>
308                </tbody>
309        </table>
310        </xsl:template>-->
311
312</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.