-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathutils.xsl
102 lines (98 loc) · 4.78 KB
/
utils.xsl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns="http://www.w3.org/1999/xhtml" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:utils="http://aac.ac.at/corpus_shell/utils" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://aac.ac.at/corpus_shell/dataset" xmlns:exsl="http://exslt.org/common" xmlns:xd="http://www.oxygenxml.com/ns/doc/xsl" exclude-result-prefixes="exsl xs xd utils ds" version="2.0">
<xd:doc scope="stylesheet">
<xd:desc>
<xd:p>
<xd:b>Created on:</xd:b> 2013-02-17</xd:p>
<xd:p>
<xd:b>Author:</xd:b> m</xd:p>
<xd:p>some generic helper functions </xd:p>
<xd:p>(from amc-helpers.xsl)</xd:p>
</xd:desc>
</xd:doc>
<xsl:decimal-format decimal-separator="," grouping-separator="."/>
<xd:doc>
<xd:desc>
<xd:p/>
</xd:desc>
</xd:doc>
<xsl:variable name="number-format-dec">#.##0,##</xsl:variable>
<xd:doc>
<xd:desc>
<xd:p/>
</xd:desc>
</xd:doc>
<xsl:variable name="number-format-default">#.###</xsl:variable>
<xd:doc>
<xd:desc>
<xd:p/>
</xd:desc>
</xd:doc>
<xsl:variable name="number-format-plain">0,##</xsl:variable>
<xd:doc>
<xd:desc>
<xd:p>convenience format-number function,
if empty -> 0, else if not a number return the string</xd:p>
</xd:desc>
</xd:doc>
<xsl:function name="utils:format-number">
<xsl:param name="number"/>
<xsl:param name="pattern"/>
<xsl:value-of select=" if (xs:string($number)='' or number($number) =0) then 0 else if(number($number)=number($number)) then format-number($number,$pattern) else $number"/>
</xsl:function>
<!-- taken from cmd2graph.xsl -> smc_functions.xsl -->
<xsl:function name="utils:normalize">
<xsl:param name="value"/>
<xsl:value-of select="translate($value,'*/-.'',$@={}:[]()#>< ','XZ__')"/>
</xsl:function>
<xsl:function name="utils:dataset-key">
<xsl:param name="dataset" ></xsl:param>
<!-- this has to be in sync with <xsl:template match="ds:dataset" mode="data2table"> in dataset2table.xsl -->
<xsl:value-of select="concat(utils:normalize($dataset/(@name,@key,@label)[1] ),$dataset/position())"/>
<!-- <a href="#dataset-{@key}" ><xsl:value-of select="(@label,@key)[1]"></xsl:value-of></a> | -->
</xsl:function>
<xd:doc>
<xd:desc>
<xd:p>inverts the dataset, i.e. labels will get dataseries and vice versa</xd:p>
<xd:p>needed mainly for AreaChart display.</xd:p>
<xd:p>tries to cater for inconsistent structure (@key, @name, @label ...)
once all data is harmonized (according to dataset.xsd), we can get rid of it</xd:p>
</xd:desc>
<xd:param name="dataset"/>
</xd:doc>
<!-- -->
<xsl:template match="ds:dataset" mode="invert">
<xsl:param name="dataset" select="."/>
<!-- for now, make dataset without explicit namespace, for that need to override the current xhtml default ns -->
<ds:dataset xmlns="">
<xsl:copy-of select="@*"/>
<ds:labels>
<xsl:for-each select="ds:dataseries">
<ds:label>
<xsl:if test="@type">
<xsl:attribute name="type" select="@type"/>
</xsl:if>
<xsl:if test="@key">
<xsl:attribute name="key" select="@key"/>
</xsl:if>
<xsl:value-of select="(@name, @label ,@key)[1]"/>
</ds:label>
</xsl:for-each>
</ds:labels>
<xsl:for-each select="ds:labels/ds:label">
<xsl:variable name="curr_label_old" select="(@key, text())[1]"/>
<ds:dataseries key="{$curr_label_old}" label="{text()}">
<xsl:for-each select="$dataset//ds:value[$curr_label_old=@key or $curr_label_old=@label]">
<ds:value key="{(../@name, ../@label,../@key)[not(.='')][1]}">
<!-- copy other (value) attributes, but not the key or label -->
<xsl:copy-of select="@*[not(.='')][not(name()=('key','label'))]"/>
<!-- formatted="{@formatted}"
<xsl:if test="../@type"><xsl:attribute name="type" select="../@type"></xsl:attribute></xsl:if>-->
<xsl:value-of select="."/>
</ds:value>
</xsl:for-each>
</ds:dataseries>
</xsl:for-each>
</ds:dataset>
</xsl:template>
</xsl:stylesheet>