HTTP-Daten von 'chart_column_rel.xsl'

Schalten sie die Zeilen-Nummern mit MausKlick ab, wenn sie die Datei am eigenen PC speichern wollen.

1
<?xml version="1.0" encoding="utf-8"?> 
2
<!-- 
3
   chart_column_rel.xsl
4
   Version 2016-06-01
5
   made by peter.schindler
6

7
   Column-chart in relative (%) Y-units
8
   We expect this XML structure:
9
   <dataset>
10
      <part>
11
         <code>   (e.g. 'W')
12
         <name>   (e.g. 'Wien')
13
         <number> (e.g. 1234567)
14
      </part>
15
   </dataset>
16

17
   Version with fixed y-axis
18
-->
19

20
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:svg="http://www.w3.org/2000/svg">
21
<xsl:output method="xml" indent="yes" media-type="image/svg+xml"/>
22

23
<!-- Column distance in [px] (YOU may change this) -->
24
<xsl:variable name="dx" select="25"/>
25

26
<!-- Other variables -->
27
<xsl:variable name="psum" select="sum(//number)"/>
28
<xsl:variable name="xmax" select="count(//part) * $dx + 10"/>
29

30
<xsl:template match="/">
31
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink">
32
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
33

34
<!-- YOU may change CSS style -->
35
<style type="text/css">
36
/* <![CDATA[ */
37
svg{background-color:#EEE;}
38
line{stroke:#00F; stroke-width:2px;}
39
text{font-family:Verdana,Helvetica,sans-serif; font-size:0.8em; font-weight:bold;}
40
rect.data{stroke:#000; stroke-width:1px; fill:#FF0;}   /* Columns */
41
rect.title{fill:#EEE;} /* Invisible <rect> below the Code-text */
42
#help line{stroke:#BBB; stroke-width:1px;}    /* Horizontal raster lines */
43
#data text{text-anchor:middle;} /* Code-text */
44
#y_axis text{text-anchor:end;}   /* % marks */
45
/* ]]> */
46
</style>
47

48
<g transform="translate(45,185)">
49
   <g id="help">
50
      <!-- Horizontal raster lines in background -->
51
      <line x1="0" y1="-40" y2="-40">
52
         <xsl:attribute name="x2"><xsl:value-of select="$xmax"/></xsl:attribute>
53
      </line>
54
      <line x1="0" y1="-80" y2="-80">
55
         <xsl:attribute name="x2"><xsl:value-of select="$xmax"/></xsl:attribute>
56
      </line>
57
      <line x1="0" y1="-120" y2="-120">
58
         <xsl:attribute name="x2"><xsl:value-of select="$xmax"/></xsl:attribute>
59
      </line>
60
      <line x1="0" y1="-160" y2="-160">
61
         <xsl:attribute name="x2"><xsl:value-of select="$xmax"/></xsl:attribute>
62
      </line>
63
   </g>
64
   <g id="data">
65
      <!-- Data columns -->
66
      <xsl:for-each select="dataset/part">
67
         <xsl:sort select="number" data-type="number" order="descending"/>
68
         <g>
69
            <!-- Single column -->
70
            <xsl:variable name="x" select="(position() - 1) * $dx + 10"/>
71
            <xsl:variable name="y" select="number * 100 div $psum"/>
72
            <xsl:variable name="w" select="$dx - 10"/>
73
            <xsl:variable name="txt" select="concat(name,'&#x0A;Bev&#xF6;lkerung: ',number,'&#x0A;Anteil: ',format-number($y,'0.##'),'%')"/>
74
            <xsl:attribute name="transform"><xsl:value-of select="concat('translate(',$x,',0)')"/></xsl:attribute>
75
            <rect x="0" class="data">
76
               <xsl:attribute name="height"><xsl:value-of select="$y * 8"/></xsl:attribute>
77
               <xsl:attribute name="width"><xsl:value-of select="$w"/></xsl:attribute>
78
               <xsl:attribute name="y">-<xsl:value-of select="$y * 8"/></xsl:attribute>
79
               <title><xsl:value-of select="$txt"/></title> <!-- Visible on mouseover -->
80
            </rect>
81
            <rect x="0" y="2" height="25" class="title" >
82
               <!-- Invisible, provides mouseover title below the code-text -->
83
               <xsl:attribute name="width"><xsl:value-of select="$w"/></xsl:attribute>
84
               <title><xsl:value-of select="$txt"/></title>
85
            </rect>
86
            <text y="15">
87
               <!-- Code-text -->
88
               <xsl:attribute name="x"><xsl:value-of select="$w div 2"/></xsl:attribute>
89
               <xsl:value-of select="code"/>
90
            </text>
91
         </g>
92
      </xsl:for-each>
93
   </g>
94
   <!-- X-axis -->
95
   <line x1="-5" y1="0" y2="0">
96
      <xsl:attribute name="x2"><xsl:value-of select="$xmax"/></xsl:attribute>
97
   </line>
98
   <g id="y_axis">
99
      <!-- Y-axis (fixed scale) -->
100
      <line x1="0" y1="0" x2="0" y2="-180"/>
101
      <text x="-10" y="5">0%</text>
102
      <line x1="-5" y1="-40" x2="0" y2="-40"/>
103
      <text x="-10" y="-35">5%</text>
104
      <line x1="-5" y1="-80" x2="0" y2="-80"/>
105
      <text x="-10" y="-75">10%</text>
106
      <line x1="-5" y1="-120" x2="0" y2="-120"/>
107
      <text x="-10" y="-115">15%</text>
108
      <line x1="-5" y1="-160" x2="0" y2="-160"/>
109
      <text x="-10" y="-155">20%</text>
110
   </g>
111
</g>
112
</svg>
113

114
</xsl:template>
115
</xsl:stylesheet>
116
<!-- eof chart_column_rel.xsl -->
117