forked from ivoa-std/ivoatex
-
Notifications
You must be signed in to change notification settings - Fork 0
/
make-archdiag.xslt
275 lines (235 loc) · 56.8 KB
/
make-archdiag.xslt
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
<?xml version="1.0" encoding="UTF-8"?>
<!-- XSLT to generate SVG for architecture diagrams.
This processes documents having the following structure
<archdiag xmlns="http://ivoa.net/archdiag">
<rec name="SAMP" x="10" y="14" w="30"/>
<prerec name="FOP" x="10" y="34"/> (a REC not yet passed)
</archdiag>
Recommendation: Start with archdiag-full.xml and remove standards you don't
want.
-->
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/2000/svg"
xmlns:ad="http://ivoa.net/archdiag"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.0">
<!-- set this to something non-empty to build the SVG with a piece
of javascript printing the box widths -->
<xsl:param name="WITHJS"/>
<xsl:template name="format-standard">
<xsl:param name="std-name"/>
<xsl:param name="std-class"/>
<xsl:param name="x0"/>
<xsl:param name="y0"/>
<xsl:param name="w"/>
<xsl:variable name="width">
<xsl:choose>
<xsl:when test="$w"><xsl:value-of select="$w"/></xsl:when>
<xsl:otherwise>90</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<svg x="{$x0}" y="{$y0}">
<rect height="18" x="0" y="0" width="{$width}" class="{$std-class}"/>
<text class="doclabel" y="12.5">
<xsl:attribute name="x">
<xsl:value-of select="0.5*$width"/>
</xsl:attribute><xsl:value-of select="$std-name"/></text>
</svg>
</xsl:template>
<xsl:template match="ad:thisrec">
<xsl:call-template name="format-standard">
<xsl:with-param name="x0" select="@x"/>
<xsl:with-param name="y0" select="@y"/>
<xsl:with-param name="w" select="@w"/>
<xsl:with-param name="std-name" select="@name"/>
<xsl:with-param name="std-class">thisrec</xsl:with-param>
</xsl:call-template>
<xsl:variable name="width">
<xsl:choose>
<xsl:when test="@w"><xsl:value-of select="@w"/></xsl:when>
<xsl:otherwise>90</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<svg>
<xsl:attribute name="x">
<xsl:value-of select="@x"/>
</xsl:attribute>
<xsl:attribute name="y">
<xsl:value-of select="@y"/>
</xsl:attribute>
<ellipse rx="{$width div 2 + 15}" ry="15"
cx="{$width div 2}" cy="9"
fill="none" stroke="red" stroke-width="3"/>
</svg>
</xsl:template>
<xsl:template match="ad:rec">
<xsl:call-template name="format-standard">
<xsl:with-param name="x0" select="@x"/>
<xsl:with-param name="y0" select="@y"/>
<xsl:with-param name="w" select="@w"/>
<xsl:with-param name="std-name" select="@name"/>
<xsl:with-param name="std-class">rec</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template match="ad:prerec">
<xsl:call-template name="format-standard">
<xsl:with-param name="x0" select="@x"/>
<xsl:with-param name="y0" select="@y"/>
<xsl:with-param name="w" select="@w"/>
<xsl:with-param name="std-name" select="@name"/>
<xsl:with-param name="std-class">prerec</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="draw-archdiag">
<!-- design size: 800 x 600 whatever; 50 border for annotation-->
<xsl:param name="include-level1"/>
<svg version="2.0" viewBox="0 0 800 600">
<defs>
<xsl:if test="$WITHJS">
<script type="text/javascript">
function adjustBoxWidthsForClass(cls) {
var recs = document.getElementsByClassName(cls);
for (var index in recs) {
if (!recs[index].nextSibling || !recs[index].nextSibling.getBBox) {
// for some reason we have a 'rec' box not followed by text;
// let's skip this for now and see if this bites someone.
continue;
}
var textNode = recs[index].nextSibling;
var newWidth = Math.round(textNode.getBBox().width+8);
console.log(`${textNode.textContent}: ${newWidth}; ${45-newWidth/2}`);
}
}
function adjustBoxWidths() {
// Regrettably, SVG doesn't seem to have a facility to bboxes
// around text. We fake this here using javascript, to be
// called when the text is rendered.
adjustBoxWidthsForClass('rec');
adjustBoxWidthsForClass('prerec');
}
window.addEventListener("load", adjustBoxWidths, false);
</script>
</xsl:if>
<style type="text/css">
@font-face {
font-family: "Liberation Sans Narrow";
src: url('data:application/x-font-ttf;base64,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');
}
@font-face {
font-family: "Liberation Sans";
src: url('data:application/x-font-ttf;base64,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');
}
rect.rec {
fill: #bbe0e3;
stroke: #0000ff;
stroke-width:1;
}
rect.thisrec {
fill: #ccf0f4;
}
rect.prerec {
fill: #bbe0e3;
stroke: none;
}
text.doclabel {
fill: #0000ff;
font-weight: bold;
font-family: Liberation Sans Narrow;
font-size: 11px;
text-anchor:middle;
}
svg {
overflow: auto;
}
</style>
</defs>
<title>IVOA Architecture Diagram</title>
<desc>This image shows the architecture of the Virtual Observatory
(cf. http://ivoa.net), together with the relevant standards.</desc>
<!-- outer frame -->
<rect x="50" y="50" width="700" height="500"
style="stroke:black;fill:white;"/>
<!-- inner separator lines -->
<g style="stroke:black;stroke-dasharray:5,2">
<line id="user_layer_sep" x1="50" y1="100" x2="750" y2="100"/>
<line id="resource_layer_sep" x1="50" y1="500" x2="750" y2="500"/>
</g>
<g style="stroke:black;stroke-dasharray:5,5;stroke-width:0.5">
<line id="using_sep" x1="50" y1="150" x2="750" y2="150"/>
<line id="sharing_sep" x1="50" y1="450" x2="750" y2="450"/>
<line id="registry_sep" x1="150" y1="100" x2="150" y2="500"/>
<line id="dal_sep" x1="650" y1="100" x2="650" y2="500"/>
</g>
<!-- border annotation -->
<g style="font-size:16px;font-family:Liberation Sans;
text-anchor:middle;text-align:center;font-weight:bold">
<text x="250" y="25">Users</text>
<text x="550" y="25">Computers</text>
<text x="400" y="585">Providers</text>
<xsl:if test="$include-level1">
<text x="25" y="300" transform="rotate(-90, 25, 300)">Registry</text>
<text x="775" y="300" transform="rotate(90, 775, 300)"
>Data Access Protocols</text>
</xsl:if>
</g>
<!-- level 0 annotation -->
<g style="font-size:20px;font-family:Liberation Sans;fill:#888888;
text-anchor:middle;text-align:center">
<text x="400" y="72">User Layer</text>
<text x="400" y="132">Using</text>
<text x="400" y="543">Resource Layer</text>
<text x="400" y="480">Sharing</text>
<g transform="translate(400,285)">
<text x="0" y="0" width="10em">VO</text>
<text x="0" y="30" width="10em">Core</text>
</g>
<text x="100" y="300" transform="rotate(-90, 100, 300)">Finding</text>
<text x="700" y="300" transform="rotate(90, 700, 300)"
>Getting</text>
</g>
<!-- level 1 annotation -->
<xsl:if test="$include-level1">
<g style="font-size:16px;font-family:Liberation Sans;
text-anchor:middle;text-align:center;font-style:italic">
<text x="400" y="96">Desktop Apps</text>
<g transform="translate(175,72)">
<text x="0" y="0" width="10em">In-Browser</text>
<text x="0" y="20" width="10em">Apps</text>
</g>
<g transform="translate(625,72)">
<text x="0" y="0" width="10em">User</text>
<text x="0" y="20" width="10em">Programs</text>
</g>
<text x="400" y="520">Data and Metadata Collection</text>
<text x="175" y="530">Storage</text>
<text x="625" y="530">Computation</text>
<text x="250" y="300">Semantics</text>
<g transform="translate(550,290)">
<text x="0" y="0" width="10em">Data</text>
<text x="0" y="20" width="10em">Models</text>
</g>
<g transform="translate(400,210)">
<text x="0" y="0" width="10em">VO Query</text>
<text x="0" y="20" width="10em">Languages</text>
</g>
<text x="400" y="375">Formats</text>
</g>
</xsl:if>
<!-- level 2: the actual standards -->
<g class="level2">
<xsl:apply-templates/>
</g>
</svg>
</xsl:template>
<xsl:template match="ad:archdiag">
<xsl:call-template name="draw-archdiag">
<xsl:with-param name="include-level1">True</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template match="ad:archdiag0">
<xsl:call-template name="draw-archdiag">
<xsl:with-param name="include-level1" select="false"/>
</xsl:call-template>
</xsl:template>
</xsl:stylesheet>