source: SMC/trunk/SMC/src/xsl/smc2stats_datasets.xsl @ 3436

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

prefixed dataset-elements to ds-namespace, renamed some keys

File size: 26.8 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:ds="http://aac.ac.at/corpus_shell/dataset"
7  xmlns:my="myFunctions"   
8  exclude-result-prefixes="xs my"
9 
10>
11<!--
12<purpose> statistics about the smc-data, generates a dataset/dataseries/value table-like xml-structure,
13that can be transformed to html (or chart-data etc.) in separate next step
14relies on the data prepared in smc_commons.xsl
15currently the main map is produced in a separate step and loaded from static-xml (map_file)</purpose>
16<params>
17main input file is expected dcr-cmd-map.xml
18</params>
19<history>
20        <change on="2011-10-27" type="created" by="vr">from complist2terms_201109.xsl (via smc_init.xsl)</change>       
21        <change on="2013-01-04" type="created" by="vr">from smc_stats.xsl </change>
22</history>
23-->
24 
25
26<xsl:import href="smc_commons.xsl"/>
27
28        <xsl:output method="xml" indent="yes" />
29       
30  <xsl:param name="title" select="'SMC Stats'" />
31   
32    <!--
33 <xsl:param name="map_file" select="'../../../../SMC/output/map_full.xml'" /> 
34 <xsl:variable name="map" select="document($dcr-cmd-map_file)" />
35    -->
36 
37        <xsl:variable name="count_elems" select="count($cmd-terms//Term[@type='CMD_Element'])" ></xsl:variable>
38        <xsl:variable name="count_distinct_datcats" select="count(distinct-values($cmd-terms//Term[@type='CMD_Element']/@datcat[not(.='')]))" ></xsl:variable>
39        <xsl:variable name="count_distinct_components" select="count(distinct-values($cmd-terms//Term[@type='CMD_Component'][not(@parent='')]/@id))" ></xsl:variable>
40        <xsl:variable name="count_standalone_components" select="count(distinct-values($cmd-terms//Term[@type='CMD_Component'][not(@parent='')]/@id[not(contains(.,'#'))]))" ></xsl:variable>
41        <xsl:variable name="count_distinct_elems" select="count(distinct-values($cmd-terms//Term[@type='CMD_Element']/@id))" ></xsl:variable>
42        <xsl:variable name="count_components_datcat" select="count(distinct-values($cmd-terms//Term[@type='CMD_Component'][@datcat[not(.='')]]/@id))" ></xsl:variable> 
43
44        <xsl:variable name="all_profiles" select="$cmd-terms//Termset" />
45        <xsl:variable name="all_datcats" select="$dcr-terms//Concept" />
46 
47<!--<xsl:template name="continue-root">-->     
48        <xsl:template match="/">
49                <multiresult>
50                <xsl:call-template name="summary-overall"></xsl:call-template>
51                        <xsl:call-template name="summary-profiles"></xsl:call-template>
52                        <xsl:call-template name="summary-components"></xsl:call-template>
53                        <xsl:call-template name="summary-datcats"></xsl:call-template>
54                        <xsl:call-template name="ambigue-terms"></xsl:call-template>
55                </multiresult>
56<!--            <xsl:call-template name="summary-concepts"></xsl:call-template>
57                <xsl:call-template name="summary-terms"></xsl:call-template>   
58        <xsl:call-template name="summary-cmd"></xsl:call-template>
59                <xsl:call-template name="ambigue-elems"></xsl:call-template>
60-->   
61 </xsl:template>                       
62       
63       
64<xsl:template name="summary-overall">
65               
66        <ds:dataset key="summary" label="Summary">
67                <ds:labels>
68                        <ds:label key="creation-date">created</ds:label>
69                        <ds:label key="profiles">Profiles</ds:label>
70                        <ds:label key="components">Components</ds:label>
71                        <ds:label key="distinct-components">distinct Components</ds:label>
72                        <ds:label key="elements">Elements</ds:label>
73                        <ds:label key="distinct-elements">distinct Elements</ds:label>
74                       
75                        <ds:label key="distinct-datcats">distinct DatCats</ds:label>
76                        <ds:label key="elems-with-datcats">Elements with DatCats</ds:label>
77                        <ds:label key="elems-without-datcats">Elements without DatCats</ds:label>
78                        <ds:label key="elems-without-datcats-ratio" >ratio of elements without DatCats</ds:label>
79                        <ds:label key="available-concepts">available Concepts</ds:label>
80                        <ds:label key="used-concepts">used Concept</ds:label>
81                        <ds:label key="blind-concepts">blind Concepts (not in public ISOcat)</ds:label>
82                        <ds:label key="unused-concepts">Concepts not used in CMD</ds:label>                     
83                </ds:labels>
84                <ds:dataseries key="overall" label="Overall">
85                        <ds:value key="creation-date"><xsl:value-of select="current-date()"/></ds:value>
86                        <ds:value key="profiles"><xsl:value-of select="count($cmd-terms//Termset)"/></ds:value>
87                        <ds:value key="components"><xsl:value-of select="count($cmd-terms//Term[@type='CMD_Component'])"/></ds:value>
88                        <ds:value key="distinct-components"><xsl:value-of select="$count_distinct_components"/></ds:value>
89                        <ds:value key="elements"><xsl:value-of select="$count_elems"/></ds:value>
90                        <ds:value key="distinct-elements"><xsl:value-of select="$count_distinct_elems"/></ds:value>
91                        <ds:value key="elems-with-datcats"><xsl:value-of select="count(distinct-values($cmd-terms//Term[@type='CMD_Element'][@datcat[not(.='')]]/@id))"/></ds:value>
92                        <ds:value key="elems-without-datcats"><xsl:value-of select="count(distinct-values($cmd-terms//Term[@type='CMD_Element'][@datcat='']/@id))"/></ds:value>
93                        <!--<xsl:variable name="elems-without-datcats-ratio" select="count($cmd-terms//Term[@type='CMD_Element'][@datcat='']) div $count_elems"></xsl:variable>
94                        <ds:value key="elems-without-datcats-ratio" formatted="{format-number($elems-without-datcats-ratio, '0.00 %')}">
95                                <xsl:value-of select="$elems-without-datcats-ratio"/></ds:value>-->
96                        <xsl:variable name="elems-distinct-without-datcats-ratio" select="count(distinct-values($cmd-terms//Term[@type='CMD_Element'][@datcat='']/@id)) div $count_distinct_elems"></xsl:variable>
97                        <ds:value key="elems-without-datcats-ratio" formatted="{format-number($elems-distinct-without-datcats-ratio, '0.00 %')}">
98                                <xsl:value-of select="$elems-distinct-without-datcats-ratio"/></ds:value>
99                        <ds:value key="distinct-datcats"><xsl:value-of select="$count_distinct_datcats"/></ds:value>
100                        <ds:value key="used-concepts"><xsl:value-of select="count($dcr-cmd-map//Concept)"/></ds:value>
101                        <ds:value key="blind-concepts"><xsl:value-of select="count(//Concept[not(Term[@set='isocat'])])"/></ds:value>
102                        <ds:value key="available-concepts"><xsl:value-of select="count($dcr-terms//Concept)"/></ds:value>
103                        <ds:value key="unused-concepts"><xsl:value-of select="count($dcr-terms//Concept except $dcr-terms//Concept[@id=$dcr-cmd-map//Concept/@id])"/></ds:value>
104                </ds:dataseries>       
105               
106        </ds:dataset>
107                        <!--
108                    <tr><td>profileDescription</td><td align="right"><xsl:value-of select="count(//profileDescription)"/></td></tr>                     
109                        <tr><td>componentDescription</td><td align="right"><xsl:value-of select="count(//componentDescription)"/></td></tr>                     
110                        <tr><td>CMD_ComponentSpec</td><td align="right"><xsl:value-of select="count(//CMD_ComponentSpec)"/></td></tr>
111                        <tr><td>profiles</td><td align="right"><xsl:value-of select="count(//CMD_ComponentSpec[@isProfile='true'])"/></td></tr>
112                        <tr><td>CMD_Component</td><td align="right"><xsl:value-of select="count(//CMD_Component)"/></td></tr>                   
113                        <tr><td>distinct CMD_Component</td><td align="right"><xsl:value-of select="count(distinct-values(//CMD_Component/@name))"/></td></tr>                   
114                        <tr><td>CMD_Element</td><td align="right"><xsl:value-of select="count(//CMD_Element)"/></td></tr>                                               
115                        <tr><td>distinct CMD_Element</td><td align="right"><xsl:value-of select="count(distinct-values(//CMD_Element/@name))"/></td></tr>                                               
116                        <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>                                             
117                        <tr><td>conceptlinks</td><td align="right"><xsl:value-of select="count(//@ConceptLink)"/></td></tr>                                             
118                        <tr><td>conceptlinks (without lang-codes ISO639)</td><td align="right"><xsl:value-of select="count($concepts_nolang)"/></td></tr>                                               
119                        <tr><td>distinct conceptlinks (without lang-codes)</td><td align="right"><xsl:value-of select="count(distinct-values($concepts_nolang))"/></td></tr>                                           
120                        <tr><td>distinct CMD_Elem-conceptlinks</td><td align="right"><xsl:value-of select="count(distinct-values($concepts_nolang[parent::CMD_Element]))"/></td></tr> -->                                               
121                        <!-- <tr><td>datcats in isocat-profile:Metadata#5</td><td align="right"><xsl:value-of select="count($isocat//dcif:dataCategory)"/></td></tr> -->                                               
122                        <!--
123                        <tr><td>elem matrix</td><td align="right"><xsl:value-of select="count($term_matrix/Term)"/></td></tr>                                           
124                        <tr><td>distinct profile-elem</td><td align="right"><xsl:value-of select="count(distinct-values($term_matrix/Term/concat(@profile,@elem)))"/></td></tr>
125                        <tr><td>distinct profile-datcat</td><td align="right"><xsl:value-of select="count(distinct-values($term_matrix/Term/concat(@profile,@datcat)))"/></td></tr>
126                        <tr><td>distinct parent-elem</td><td align="right"><xsl:value-of select="count(distinct-values($term_matrix/Term/concat(@parent,@elem)))"/></td></tr>
127                        <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>
128                        -->
129       
130</xsl:template>                 
131
132<xsl:template name="summary-terms">
133    <table>
134        <caption>Term types</caption>
135        <tbody>         
136           <xsl:for-each-group select="$dcr-cmd-map//Term" group-by="concat(@set,@type)">
137               <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>       
138           </xsl:for-each-group>           
139        </tbody>
140     </table>
141</xsl:template>
142
143       
144<xsl:template name="summary-profiles">
145       
146        <ds:dataset key="profile" label="Profiles" count="{count($cmd-terms//Termset)}">
147                <ds:labels>
148                        <ds:label key="components">Components</ds:label>
149                        <ds:label key="distinct-components">distinct Components</ds:label>
150                        <ds:label key="elements">Elements</ds:label>
151                        <ds:label key="distinct-elements">distinct Elements</ds:label>
152                        <ds:label key="distinct-datcats"></ds:label>
153                        <ds:label key="elems-with-datcats"></ds:label>
154                        <ds:label key="elems-without-datcats"></ds:label>
155                        <ds:label key="elems-without-datcats-ratio" >ratio of elements without DatCats</ds:label>
156                </ds:labels>
157                               
158            <xsl:for-each select="$cmd-terms//Termset" >                         
159                        <xsl:sort select="@name" order="ascending"/>
160                <xsl:variable name="profile_id" select="xs:string(@id)" ></xsl:variable>
161                <xsl:variable name="count_elems" select="count(./Term[@type='CMD_Element'])" ></xsl:variable>
162                <xsl:variable name="count_distinct_datcats" select="count(distinct-values(./Term[@type='CMD_Element']/@datcat[not(.='')]))" ></xsl:variable>
163                                       
164                <ds:dataseries key="{@id}" label="{@name}" >
165<!--                    <ds:value key="distinct-components"><xsl:value-of select="$count_distinct_components"/></ds:value>-->
166                        <xsl:call-template name="list">
167                                <xsl:with-param name="key">components</xsl:with-param>
168<!--                             exclude the profile as component-->
169                                <xsl:with-param name="data" select="./Term[@type='CMD_Component'][not(xs:string(@id)=$profile_id)]"></xsl:with-param>
170                        </xsl:call-template>
171<!--                    <ds:value key="components"><xsl:value-of select="count(./Term[@type='CMD_Component'])"/></ds:value>-->
172                        <ds:value key="distinct-components"><xsl:value-of select="count(distinct-values(.//Term[@type='CMD_Component'][not(@parent='')]/@id))" /></ds:value>
173                        <xsl:call-template name="list">
174                                <xsl:with-param name="key">elements</xsl:with-param>
175                                <xsl:with-param name="data" select="./Term[@type='CMD_Element']"></xsl:with-param>
176                        </xsl:call-template>
177                        <ds:value key="distinct-elements"><xsl:value-of select="count(distinct-values(.//Term[@type='CMD_Element'][not(@parent='')]/@id))" /></ds:value>
178<!--                    <ds:value key="elements"><xsl:value-of select="$count_elems"/></ds:value>-->
179                        <xsl:call-template name="list">
180                                <xsl:with-param name="key">distinct-datcats</xsl:with-param>
181                                <xsl:with-param name="type">datcat</xsl:with-param>
182                                <xsl:with-param name="data" select="distinct-values(./Term[@type='CMD_Element']/@datcat[not(.='')])"></xsl:with-param>
183                        </xsl:call-template>
184                       
185<!--                    <ds:value key=""><xsl:value-of select="$count_distinct_datcats"/></ds:value>-->
186                        <ds:value key="elems-with-datcats"><xsl:value-of select="count(./Term[@type='CMD_Element']/@datcat[not(.='')])"/></ds:value>
187                        <ds:value key="elems-without-datcats"><xsl:value-of select="count(./Term[@type='CMD_Element'][@datcat=''])"/></ds:value>
188                        <xsl:variable name="elems-without-datcats-ratio" select="if($count_elems &gt; 0) then count(./Term[@type='CMD_Element'][@datcat='']) div $count_elems else 0"></xsl:variable>
189                        <ds:value key="elems-without-datcats-ratio" formatted="{format-number($elems-without-datcats-ratio, '0.00 %')}">
190                        <xsl:value-of select="$elems-without-datcats-ratio"/></ds:value>
191                </ds:dataseries>
192                </xsl:for-each>
193        </ds:dataset>
194</xsl:template>
195
196<xsl:template name="summary-components">
197               
198        <ds:dataset key="component" label="Components" count="{count($cmd-terms//Term[@type='CMD_Component'])}">
199                        <ds:labels>
200                                <ds:label key="used">used in total</ds:label>
201                                <ds:label key="profiles">used in Profiles</ds:label>
202                                <ds:label key="components">has Components</ds:label>
203                                <ds:label key="distinct-elems">has Elements</ds:label>
204                                <ds:label key="elems-with-datcats">Elements with DatCats</ds:label>
205                                <ds:label key="distinct-datcats">uses DatCats</ds:label>
206                                <ds:label key="elems-without-datcats">Elements without DatCats</ds:label>
207                                <ds:label key="elems-without-datcats-ratio" >ratio of elements without DatCats</ds:label>
208                        </ds:labels>
209                       
210                <xsl:for-each-group select="$cmd-terms-nested//Term[@type='CMD_Component']" group-by="@id">                       
211                                <xsl:sort select="@name" order="ascending"/>
212                        <xsl:variable name="count_usage" select="count(current-group())" ></xsl:variable>
213                        <xsl:variable name="count_using_profiles" select="count(distinct-values(current-group()/ancestor::Termset/@id))" ></xsl:variable>
214                        <xsl:variable name="count_distinct_elems" select="count(distinct-values(current-group()//Term[@type='CMD_Element']/@id))" ></xsl:variable>
215<!--                    <xsl:variable name="count_distinct_elem_datcats" select="count(distinct-values(current-group()//Term[@type='CMD_Element']/@datcat[not(.='')]))" ></xsl:variable>-->
216                                                <xsl:variable name="count_distinct_datcats" select="count(distinct-values(current-group()//Term/@datcat[not(.='')]))" ></xsl:variable>
217                               
218                                <ds:dataseries key="{@id}" label="{@name}" >
219                                        <!--                    <ds:value key="distinct-components"><xsl:value-of select="$count_distinct_components"/></ds:value>-->
220                                        <ds:value key="used"><xsl:value-of select="$count_usage"/></ds:value>
221                                        <ds:value key="profiles"><xsl:value-of select="$count_using_profiles"/></ds:value>
222                                        <ds:value key="components"><xsl:value-of select="count(distinct-values(current-group()//Term[@type='CMD_Component']/@id))"/></ds:value>
223                                        <!--                    <ds:value key="distinct-elements"><xsl:value-of select="$count_distinct_elems"/></ds:value>-->
224                                        <ds:value key="distinct-elems"><xsl:value-of select="$count_distinct_elems"/></ds:value>
225                                        <ds:value key="elems-with-datcats"><xsl:value-of select="count(distinct-values(current-group()//Term[@type='CMD_Element'][@datcat[not(.='')]]/@id))"/></ds:value>
226                                        <ds:value key="distinct-datcats"><xsl:value-of select="$count_distinct_datcats"/></ds:value>
227                                        <xsl:variable name="elems-without-datcats" select="count(distinct-values(current-group()//Term[@type='CMD_Element'][@datcat='']/@id))" />
228                                        <ds:value key="elems-without-datcats"><xsl:value-of select="$elems-without-datcats"/></ds:value>
229                                        <xsl:variable name="elems-without-datcats-ratio" select="if ($count_distinct_elems &gt; 0) then $elems-without-datcats div $count_distinct_elems else 0"></xsl:variable>
230                                        <ds:value key="elems-without-datcats-ratio" formatted="{format-number($elems-without-datcats-ratio, '0.00 %')}">
231                                                <xsl:value-of select="$elems-without-datcats-ratio"/></ds:value>
232                                </ds:dataseries>
233                        </xsl:for-each-group>
234                </ds:dataset>
235        </xsl:template>
236       
237
238<xsl:template name="summary-datcats">
239       
240        <ds:dataset key="datcat" label="Data Categories" count="{count($dcr-cmd-map//Concept)}">
241                <ds:labels>
242                        <ds:label key="def">Definition</ds:label>
243                        <ds:label key="used-in-profiles">used in Profiles</ds:label>
244                        <ds:label key="referenced-by-elements">referenced by Elements</ds:label>
245                </ds:labels>
246               
247               
248                <!--<Term set="cmd" type="full-path" schema="clarin.eu:cr1:p_1297242111880"
249                        id="#applicationType">AnnotationTool.applicationType</Term>-->
250                <xsl:for-each select="$dcr-cmd-map//Concept" >                   
251                        <xsl:sort select="lower-case(Term[@type='label'][1])" order="ascending"/>
252                       
253                        <xsl:variable name="def" select="$dcr-terms//Concept[@id=current()/@id]/info[1]" ></xsl:variable>
254                        <xsl:variable name="count_elems" select="count(Term[@type='full-path'])" ></xsl:variable>
255                        <xsl:variable name="profiles" select="distinct-values(Term[@type='full-path']/@schema)" ></xsl:variable>
256                       
257                        <ds:dataseries key="{@id}" label="{Term[@type='label'][1]}" >
258                                <!--                    <ds:value key="distinct-components"><xsl:value-of select="$count_distinct_components"/></ds:value>-->
259                               
260                                <ds:value key="def"><xsl:value-of select="$def"/></ds:value>
261                                <xsl:call-template name="list">
262                                        <xsl:with-param name="key" >used-in-profiles</xsl:with-param>
263                                        <xsl:with-param name="type" >profile</xsl:with-param>
264                                        <xsl:with-param name="data" select="$profiles" />
265                                </xsl:call-template>
266                               
267                                <ds:value key="referenced-by-elements"><xsl:value-of select="$count_elems"/></ds:value>
268                        </ds:dataseries>
269                </xsl:for-each>
270        </ds:dataset>
271        <!--
272                <table>
273                       
274                        <thead><tr><th rowspan="2">id</th><th rowspan="2">name</th>
275                                <th colspan="3" >count </th><th rowspan="2">elems</th></tr>
276                                <tr><th>profile*</th><th >all*</th><th>elems</th> </tr>         </thead>
277                        <tbody>         
278                                <xsl:for-each-group select="$term_matrix/Term" group-by="@datcat">
279                                        <xsl:sort select="lower-case(@datcat)" order="ascending"/>                                     
280                                        <tr><td valign="top"><xsl:value-of select="my:shortURL(@datcat)"/></td>
281                                                <td valign="top"><xsl:value-of select="my:rewriteURL(@datcat)"/></td>
282                                                <td valign="top" align="right">
283                                                        <span class="term_detail_caller" ><xsl:value-of select="count(distinct-values(current-group()/@profile))"/></span>
284                                                        <div class="term_detail" >
285                                                                <div class="box_heading"><xsl:value-of select="my:rewriteURL(@datcat)"/></div>
286                                                                <ul>
287                                                                        <xsl:for-each select="distinct-values(current-group()/@profile)" >
288                                                                                <li><xsl:value-of select="." /></li>
289                                                                        </xsl:for-each>
290                                                                </ul>
291                                                        </div>                                                 
292                                                </td>
293                                                <td valign="top" align="right">
294                                                        <span class="term_detail_caller" ><xsl:value-of select="count(current-group())"/></span>
295                                                        <div class="term_detail" >
296                                                                <div class="box_heading"><xsl:value-of select="my:rewriteURL(@datcat)"/></div>
297                                                                <ul>
298                                                                        <xsl:for-each-group select="current-group()" group-by="@profile" >
299                                                                                <li><xsl:value-of select="@profile" />
300                                                                                        <ul>
301                                                                                                <xsl:for-each select="current-group()/@comppath" >
302                                                                                                        <li><xsl:value-of select="." /></li>
303                                                                                                </xsl:for-each>
304                                                                                        </ul>
305                                                                                </li>
306                                                                        </xsl:for-each-group>
307                                                                </ul>
308                                                        </div>                                                 
309                                                </td>
310                                                <td valign="top" align="right"><xsl:value-of select="count(distinct-values(current-group()/@elem))"/></td>                                             
311                                               
312                                                <td width="40%">                                               
313                                                        <xsl:for-each select="distinct-values(current-group()/@elem)">
314                                                                <xsl:sort select="." />
315                                                                <xsl:value-of select="."/>,
316                                                        </xsl:for-each>
317                                                </td>                                                                                           
318                                        </tr>                                   
319                                </xsl:for-each-group>
320                        </tbody>
321                </table>-->
322        </xsl:template>
323       
324
325<!--
326        <table>
327                <caption>Components with DatCats</caption>
328                <thead><tr><th>comp-name</th><th colspan="3">datcat</th><th>count</th><th>profiles</th></tr></thead>
329                <tbody>                 
330                        <xsl:for-each-group select="$cmd-terms//Term[@type='CMD_Component'][@datcat[not(.='')]]" group-by="@id">                               
331                                        <xsl:sort select="parent::Termset/@name" />                             
332                                <tr>                                   
333<!-\-                                   <td><xsl:value-of select="@id"/></td>-\->
334                                        <td><xsl:value-of select="@name"/></td>
335                                        <td><xsl:value-of select="my:shortURL(@datcat)"/></td>
336                                        <td><xsl:value-of select="$dcr-terms//Concept[@id=current()/@datcat]/Term[@type='mnemonic']" /></td>
337                                        <td><xsl:value-of select="$dcr-terms//Concept[@id=current()/@datcat]/@datcat-type" /></td>                                     
338                                        <td><xsl:value-of select="count(current-group())"/></td>
339                                        <td><xsl:value-of select="count(current-group()/parent::Termset)"/> (<xsl:value-of select="parent::Termset/@name"/>)</td>
340                                </tr>
341                        </xsl:for-each-group>
342                </tbody>
343        </table>-->
344
345       
346<xsl:template name="ambigue-terms">     
347        <ds:dataset key="ambigue-terms" label="Ambigue terms" >
348                <ds:label key="term">Term</ds:label>
349                <ds:label key="usage">usage</ds:label>
350                <ds:label key="datcat">distinct DatCats</ds:label>
351                <ds:label key="profiles">used in Profiles</ds:label>
352                        <xsl:for-each-group select="$cmd-terms//Term" group-by="lower-case(@name)">
353                                <!--                            <xsl:sort select="lower-case(@name)" />                         -->
354                                <xsl:sort select="count(distinct-values(current-group()/@datcat))" order="descending" data-type="number"></xsl:sort>
355                                <xsl:if test="count(distinct-values(current-group()/@id)) &gt; 1"  >
356                                        <ds:dataseries key="{@name}" label="{@name}">
357<!--                                            <ds:value key="term"><xsl:value-of select="@name"></xsl:value-of></ds:value>-->
358                                                <xsl:call-template name="list">
359                                                                <xsl:with-param name="key">usage</xsl:with-param>
360                                                                <xsl:with-param name="data" select="distinct-values(current-group()/xs:string(@id))"></xsl:with-param>
361                                                </xsl:call-template>
362                                                <xsl:call-template name="list">
363                                                        <xsl:with-param name="key">datcat</xsl:with-param>
364                                                        <xsl:with-param name="type">datcat</xsl:with-param>
365                                                        <xsl:with-param name="data" select="distinct-values(current-group()/xs:string(@datcat))"></xsl:with-param>
366                                                </xsl:call-template>
367                                                <xsl:call-template name="list">
368                                                        <xsl:with-param name="key">profiles</xsl:with-param>
369                                                        <xsl:with-param name="type">profile</xsl:with-param>
370                                                        <xsl:with-param name="data" select="distinct-values(current-group()/ancestor::Termset/@id)"></xsl:with-param>
371                                                </xsl:call-template>
372                                        </ds:dataseries>
373                                </xsl:if>
374                               
375                                <!--
376                                <tr>                                   
377                                        <!-\-                                   <td><xsl:value-of select="@id"/></td>-\->
378                                        <td><xsl:value-of select="@name"/></td>
379                                        <td><xsl:value-of select="count(distinct-values(current-group()/@datcat))"/></td>                                       
380                                        <td><xsl:value-of select="count(distinct-values(current-group()/@id))"/></td>
381                                </tr>-->
382                        </xsl:for-each-group>
383        </ds:dataset>
384</xsl:template>
385       
386       
387<xsl:template name="list" >
388<xsl:param name="key" ></xsl:param>     
389<xsl:param name="type" ></xsl:param>
390<xsl:param name="data" ></xsl:param>
391       
392        <xsl:variable name="processed_data">
393                <xsl:choose>
394                        <xsl:when test="$data[1] instance of element(li)">
395                                <xsl:copy-of select="$data" />
396                        </xsl:when>
397                        <xsl:when test="$data[1] instance of element()">
398                                <xsl:for-each select="$data">
399                                        <ds:li key="{(@id,@path,@name)[1]}" title="{(@path,@id,@key,@name)[1]}"><xsl:value-of select="(@name,@label,@key, @path, @id)[1]"></xsl:value-of></ds:li>
400                                </xsl:for-each>
401                        </xsl:when>
402                        <!--
403                                <xsl:for-each select="$data">
404                                        <li key="{.}"><xsl:value-of select="."></xsl:value-of></li>
405                                </xsl:for-each>
406                        </xsl:when>
407                        <xsl:when test="$data[1] instance of xs:untypedAtomic">
408                                <li key="data"><xsl:value-of select="$data"></xsl:value-of></li>
409                                <xsl:for-each select="$data/node()">
410                                        <li key="{.}"><xsl:value-of select="."></xsl:value-of></li>
411                                </xsl:for-each>
412                        </xsl:when>
413                        <xsl:when test="$data[1] instance of attribute()">
414                                <xsl:for-each select="$data">
415                                        <li key="{xs:string(.)}"><xsl:value-of select="xs:string(.)"></xsl:value-of></li>
416                                </xsl:for-each>
417                        </xsl:when>-->
418                        <xsl:otherwise>
419                                <xsl:for-each select="$data">
420                                       
421                                        <xsl:variable name="label" >
422                                                <xsl:choose>
423                                                        <xsl:when test=".=''">_EMPTY_</xsl:when>
424                                                        <xsl:when test="$type='profile'">
425                                                                <xsl:value-of select="$all_profiles[@id=xs:string(current())]/@name" ></xsl:value-of>           
426                                                        </xsl:when>
427                                                        <xsl:when test="$type='datcat'">
428                                                                <xsl:value-of select="$all_datcats[@id=xs:string(current())]/Term[@type='label'][1]/text()" ></xsl:value-of>           
429                                                        </xsl:when>
430                                                        <xsl:otherwise>
431                                                                <xsl:value-of select="xs:string(.)"></xsl:value-of>
432                                                        </xsl:otherwise>
433                                                </xsl:choose>
434                                        </xsl:variable>
435                                               
436                                        <ds:li key="{xs:string(.)}"><xsl:value-of select="($label, my:shortURL(xs:string(.)))[.!=''][1]"></xsl:value-of></ds:li>
437                                </xsl:for-each> 
438                        </xsl:otherwise>
439                </xsl:choose>
440        </xsl:variable>
441        <ds:value key="{$key}" abs="{count($processed_data/*)}" >
442                <ds:list>
443                        <xsl:for-each select="$processed_data/*" >
444                                <xsl:sort select="lower-case(.)" ></xsl:sort>
445                                <!--<xsl:variable name="profile-name" select="$all_profiles[@id=current()]/@name"></xsl:variable>-->
446<!--                            <li><a href="#{.}" ><xsl:value-of select="$profile-name" /></a></li>-->
447                                        <xsl:copy-of select="."></xsl:copy-of>
448                        </xsl:for-each>
449                </ds:list>
450        </ds:value>
451</xsl:template>
452        <!--
453<xsl:template name="list-terms">
454       
455        <div id="term-list" >
456                <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>
457               
458                        <ul>
459                                <xsl:for-each-group select="$term_matrix/Term" group-by="lower-case(@elem)">
460                                        <xsl:sort select="lower-case(@elem)" order="ascending"/>                                       
461                                                <li><span class="term_detail_caller" ><a href="{@elem}" ><xsl:value-of select="@elem"/></a></span>
462                                                       
463                                                                        <span class="note" >
464                                                                                |<xsl:value-of select="count(distinct-values(current-group()/@datcat))"/>/
465                                                                                        <xsl:value-of select="count(distinct-values(current-group()/@profile))"/>/
466                                                                                        <xsl:value-of select="count(current-group())"/>|
467                                                                                        <!-\- <xsl:value-of select="count(distinct-values(current-group()//node()[not(name()='CMD_Element')]/@ConceptLink))"/> -\->
468                                                                        </span>
469                                                                        <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>
470                                                                <div class="term_detail" >
471                                                                        <div class="box_heading"><xsl:value-of select="@elem"/></div>
472                                                                                <ul>
473                                                                                        <xsl:for-each-group select="current-group()" group-by="@datcat">
474                                                                                                <li><xsl:value-of select="my:shortURL(@datcat)"/>
475                                                                                                        <ul>
476                                                                                                                <xsl:for-each-group select="current-group()" group-by="@profile" >
477                                                                                                                        <li><xsl:value-of select="@profile" />
478                                                                                                                                        <ul>
479                                                                                                                                                <xsl:for-each select="current-group()/@comppath" >
480                                                                                                                                                                <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>
481                                                                                                                                                                        <a href="{.}" ><xsl:value-of select="." /></a></li>
482                                                                                                                                                </xsl:for-each>
483                                                                                                                                        </ul>
484                                                                                                                        </li>
485                                                                                                                </xsl:for-each-group>
486                                                                                                        </ul>
487                                                                                                </li>                                           
488                                                                                        </xsl:for-each-group>
489                                                                                </ul>
490                                                                </div>                                                 
491                                               
492                                                </li>
493                                </xsl:for-each-group>
494                        </ul>   
495        </div>
496</xsl:template>-->
497
498</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.