/[volute]/trunk/projects/registry/TAPRegExt/schemadoc.xslt
ViewVC logotype

Contents of /trunk/projects/registry/TAPRegExt/schemadoc.xslt

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3066 - (show annotations)
Wed Sep 23 11:20:20 2015 UTC (5 years, 10 months ago) by msdemlei
File size: 24870 byte(s)
TAPRegExt: Editorial changes, IVOID terminology fixed.


1 <?xml version="1.0" encoding="UTF-8"?>
2 <xsl:stylesheet
3 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
4 xmlns:xs="http://www.w3.org/2001/XMLSchema"
5 xmlns:vm="http://www.ivoa.net/xml/VOMetadata/v0.1"
6 version="1.0">
7
8 <xsl:output method="text"/>
9
10 <xsl:param name="indentstep" select="' '"/>
11 <xsl:param name="maxcodelen" select="80"/>
12 <xsl:param name="showDefaults" select="true()"/>
13 <xsl:param name="xsdprefix">xs</xsl:param>
14
15 <xsl:template match="text()"/>
16
17 <xsl:template match="xs:complexType[xs:simpleContent]" mode="content"/>
18
19 <xsl:template match="xs:complexType" mode="content">
20 <xsl:if test=".//xs:element">
21 <xsl:apply-templates select=".//xs:element" mode="content"/>
22 <xsl:text>&#10;</xsl:text>
23 </xsl:if>
24 </xsl:template>
25
26 <xsl:template match="xs:simpleType" mode="content"/>
27
28 <xsl:template match="xs:complexType|xs:simpleType" mode="attributes">
29 <xsl:if test=".//xs:attribute">
30 <xsl:attribute namespace="" name="title">
31 <xsl:value-of select="concat(/xs:schema/xs:annotation/xs:appinfo/vm:targetPrefix,':',@name)"/>
32 <xsl:text> Attributes</xsl:text>
33 </xsl:attribute>
34 <xsl:text>&#10;</xsl:text>
35 <xsl:apply-templates select=".//xs:attribute" mode="attributes"/>
36 <xsl:text>&#10;</xsl:text>
37 </xsl:if>
38 </xsl:template>
39 <xsl:template match="xs:element" mode="content">
40 <xsl:text>\item[Element \xmlel{</xsl:text>
41 <xsl:value-of select="@name"/>
42 <xsl:text>}]&#10;\begin{description}&#10;</xsl:text>
43 <xsl:apply-templates select="." mode="nextContentItem"/>
44 <xsl:text>&#10;\end{description}&#10;</xsl:text>
45 </xsl:template>
46
47 <xsl:template match="xs:element" mode="nextContentItem">
48 <xsl:param name="row" select="1"/>
49 <xsl:param name="item" select="1"/>
50 <xsl:variable name="type" select="@type"/>
51 <xsl:choose>
52 <xsl:when test="$item &lt; 2 and xs:annotation/xs:appinfo/vm:dcterm">
53 <xsl:apply-templates select="." mode="content.rmname">
54 <xsl:with-param name="row" select="$row"/>
55 </xsl:apply-templates>
56 <xsl:apply-templates select="." mode="nextContentItem">
57 <xsl:with-param name="row" select="$row+1"/>
58 <xsl:with-param name="item" select="2"/>
59 </xsl:apply-templates>
60 </xsl:when>
61 <xsl:when test="$item &lt; 3">
62 <xsl:apply-templates select="." mode="content.type">
63 <xsl:with-param name="row" select="$row"/>
64 </xsl:apply-templates>
65 <xsl:apply-templates select="." mode="nextContentItem">
66 <xsl:with-param name="row" select="$row+1"/>
67 <xsl:with-param name="item" select="3"/>
68 </xsl:apply-templates>
69 </xsl:when>
70 <xsl:when test="$item &lt; 4">
71 <xsl:apply-templates select="." mode="content.meaning">
72 <xsl:with-param name="row" select="$row"/>
73 </xsl:apply-templates>
74 <xsl:apply-templates select="." mode="nextContentItem">
75 <xsl:with-param name="row" select="$row+1"/>
76 <xsl:with-param name="item" select="4"/>
77 </xsl:apply-templates>
78 </xsl:when>
79 <xsl:when test="$item &lt; 5">
80 <xsl:apply-templates select="." mode="content.occurrences">
81 <xsl:with-param name="row" select="$row"/>
82 </xsl:apply-templates>
83 <xsl:apply-templates select="." mode="nextContentItem">
84 <xsl:with-param name="row" select="$row+1"/>
85 <xsl:with-param name="item" select="5"/>
86 </xsl:apply-templates>
87 </xsl:when>
88 <xsl:when test="$item &lt; 6 and
89 (xs:simpleType/xs:restriction or
90 (starts-with($type,/xs:schema/xs:annotation/xs:appinfo/vm:targetPrefix)
91 and /xs:schema/xs:simpleType[@name=substring-after($type,':')]/xs:restriction))">
92 <xsl:apply-templates select="." mode="content.allowedValues">
93 <xsl:with-param name="row" select="$row"/>
94 </xsl:apply-templates>
95 <xsl:apply-templates select="." mode="nextContentItem">
96 <xsl:with-param name="row" select="$row+1"/>
97 <xsl:with-param name="item" select="6"/>
98 </xsl:apply-templates>
99 </xsl:when>
100 <xsl:when test="$item &lt; 7 and count(xs:annotation/xs:documentation) &gt; 1">
101 <xsl:apply-templates select="." mode="content.comment">
102 <xsl:with-param name="row" select="$row"/>
103 </xsl:apply-templates>
104 </xsl:when>
105 </xsl:choose>
106 </xsl:template>
107
108 <xsl:template match="xs:element" mode="content.rmname">
109 <xsl:param name="row" select="1"/>
110 <rmname>
111 <xsl:attribute namespace="" name="row">
112 <xsl:value-of select="$row"/>
113 </xsl:attribute>
114 <xsl:for-each select="xs:annotation/xs:appinfo/vm:dcterm">
115 <xsl:if test="position()!=1">
116 <xsl:text>, </xsl:text>
117 </xsl:if>
118 <xsl:value-of select="."/>
119 </xsl:for-each>
120 </rmname>
121 <xsl:text>&#10;</xsl:text>
122 </xsl:template>
123
124 <xsl:template match="xs:element|xs:attribute" mode="content.type">
125 <xsl:param name="row" select="1"/>
126 <xsl:variable name="type">
127 <xsl:text>\item[Type] </xsl:text>
128 <xsl:choose>
129 <xsl:when test="@type">
130 <xsl:apply-templates select="@type" mode="type"/>
131 </xsl:when>
132 <xsl:otherwise>
133 <xsl:apply-templates select="xs:complexType|xs:simpleType" mode="type"/>
134 </xsl:otherwise>
135 </xsl:choose>
136 </xsl:variable>
137 <type row="{$row}">
138 <xsl:copy-of select="$type"/>
139 </type>
140 <xsl:text>&#10;</xsl:text>
141 </xsl:template>
142
143 <xsl:template match="xs:element|xs:attribute" mode="content.meaning">
144 <xsl:param name="row" select="1"/>
145 <xsl:text>\item[Meaning] </xsl:text>
146 <xsl:value-of select="xs:annotation/xs:documentation[1]"/>
147 <xsl:text>&#10;</xsl:text>
148 </xsl:template>
149
150 <xsl:template match="xs:attribute" mode="content.default">
151 <xsl:param name="row" select="1"/>
152 <default row="{$row}">
153 <xsl:value-of select="@default"/>
154 </default>
155 <xsl:text>&#10;</xsl:text>
156 </xsl:template>
157
158 <xsl:template match="xs:element" mode="content.occurrences">
159 <xsl:param name="row" select="1"/>
160 <xsl:apply-templates select="." mode="occurrences"/>
161 <xsl:text>&#10;</xsl:text>
162 </xsl:template>
163
164 <xsl:template match="xs:element" mode="occurrences">
165 <xsl:text>\item[Occurrence] </xsl:text>
166 <xsl:choose>
167 <xsl:when test="@minOccurs='0'">
168 <xsl:text>optional</xsl:text>
169 <xsl:choose>
170 <xsl:when test="@maxOccurs='unbounded'">
171 <xsl:text>; multiple occurrences allowed.</xsl:text>
172 </xsl:when>
173 <xsl:when test="@maxOccurs and @maxOccurs!='0' and @maxOccurs!='1'">
174 <xsl:text>; up to </xsl:text>
175 <xsl:value-of select="@maxOccurs"/>
176 <xsl:text> occurrences allowed.</xsl:text>
177 </xsl:when>
178 </xsl:choose>
179 </xsl:when>
180 <xsl:when test="(not(@minOccurs) or @minOccurs='1')">
181 <xsl:text>required</xsl:text>
182 <xsl:choose>
183 <xsl:when test="@maxOccurs='unbounded'">
184 <xsl:text>; multiple occurrences allowed.</xsl:text>
185 </xsl:when>
186 <xsl:when test="@maxOccurs and @maxOccurs!='0' and @maxOccurs!='1'">
187 <xsl:text>; up to </xsl:text>
188 <xsl:value-of select="@maxOccurs"/>
189 <xsl:text> occurrences allowed.</xsl:text>
190 </xsl:when>
191 </xsl:choose>
192 </xsl:when>
193 <xsl:otherwise>
194 <xsl:choose>
195 <xsl:when test="@minOccurs=@maxOccurs">
196 <xsl:text>exactly </xsl:text>
197 <xsl:value-of select="@minOccurs"/>
198 <xsl:text> occurrences required.</xsl:text>
199 </xsl:when>
200 <xsl:otherwise>
201 <xsl:text>at least </xsl:text>
202 <xsl:value-of select="@minOccurs"/>
203 <xsl:text> occurrences required; </xsl:text>
204 <xsl:choose>
205 <xsl:when test="@maxOccurs='unbounded'">
206 <xsl:text>more are allowed</xsl:text>
207 </xsl:when>
208 <xsl:otherwise>
209 <xsl:text>no more than </xsl:text>
210 <xsl:value-of select="@maxOccurs"/>
211 <xsl:text> allowed.</xsl:text>
212 </xsl:otherwise>
213 </xsl:choose>
214 </xsl:otherwise>
215 </xsl:choose>
216 </xsl:otherwise>
217 </xsl:choose>
218 </xsl:template>
219
220 <xsl:template match="xs:attribute" mode="content.occurrences">
221 <xsl:param name="row" select="1"/>
222 <xsl:apply-templates select="." mode="occurrences"/>
223 <xsl:text>&#10;</xsl:text>
224 </xsl:template>
225 <xsl:template match="xs:attribute" mode="occurrences">
226 <xsl:text>\item[Occurrence] </xsl:text>
227 <xsl:choose>
228 <xsl:when test="@use='required'">required</xsl:when>
229 <xsl:otherwise>optional</xsl:otherwise>
230 </xsl:choose>
231 </xsl:template>
232
233 <xsl:template match="xs:element|xs:attribute" mode="content.allowedValues">
234 <xsl:param name="row" select="1"/>
235 <xsl:param name="type" select="@type"/>
236 <allowedValues>
237 <xsl:attribute namespace="" name="row">
238 <xsl:value-of select="$row"/>
239 </xsl:attribute>
240 <xsl:text>&#10;</xsl:text>
241 <xsl:choose>
242 <xsl:when test="$type">
243 <xsl:apply-templates select="/xs:schema/xs:simpleType[@name=substring-after($type,':')]/xs:restriction/xs:enumeration" mode="controlledVocab"/>
244 </xsl:when>
245 <xsl:otherwise>
246 <xsl:apply-templates select="xs:simpleType/xs:restriction/xs:enumeration" mode="controlledVocab"/>
247 </xsl:otherwise>
248 </xsl:choose>
249 </allowedValues>
250 <xsl:text>&#10;</xsl:text>
251 </xsl:template>
252
253 <xsl:template match="xs:element|xs:attribute" mode="content.comment">
254 <xsl:param name="row" select="1"/>
255 <xsl:for-each select="xs:annotation/xs:documentation[position() &gt; 1]">
256 <xsl:text>\item[Comment] </xsl:text>
257 <xsl:attribute namespace="" name="row">
258 <xsl:value-of select="$row"/>
259 </xsl:attribute>
260 <xsl:value-of select="."/>
261 <xsl:text>&#10;</xsl:text>
262 </xsl:for-each>
263 </xsl:template>
264
265 <xsl:template match="@type[.='xs:boolean']" priority="1" mode="type">
266 <xsl:text>boolean (true/false): </xsl:text>
267 <code>
268 <xsl:value-of select="."/>
269 </code>
270 </xsl:template>
271
272 <xsl:template match="@type[.='vr:ResourceName']" priority="1" mode="type">
273 <xsl:text>string with ID attribute: </xsl:text>
274 <code>
275 <a href="http://www.ivoa.net/Documents/REC/ReR/VOResource-20080222.html#d:ResourceName">
276 <xsl:text>vr:ResourceName</xsl:text>
277 </a>
278 </code>
279 </xsl:template>
280
281 <xsl:template match="@type[.='vr:IdentifierURI']" priority="1" mode="type">
282 <xsl:text>an IVOA Identifier URI: </xsl:text>
283 <code>
284 <a href="http://www.ivoa.net/Documents/REC/ReR/VOResource-20080222.html#d:IdentifierURI">
285 <xsl:text>vr:IdentifierURI</xsl:text>
286 </a>
287 </code>
288 </xsl:template>
289
290 <xsl:template match="@type[starts-with(., 'vr:')]" mode="type">
291 <xsl:text>composite: \xmlel{</xsl:text>
292 <xsl:value-of select="."/>}</xsl:template>
293
294 <xsl:template match="@type[starts-with(., 'xs:')]" mode="type">
295 <xsl:choose>
296 <xsl:when test=".='xs:token' or .='xs:string'">
297 <xsl:text>string: \xmlel{</xsl:text>
298 <xsl:value-of select="."/>}</xsl:when>
299 <xsl:when test=".='xs:integer'">
300 <xsl:text>integer</xsl:text>
301 </xsl:when>
302 <xsl:when test=".='xs:NCName'">
303 <xsl:text>a prefixless XML name</xsl:text>
304 </xsl:when>
305 <xsl:when test=".='xs:decimal' or .='xs:float' or .='xs:double'">
306 <xsl:text>floating-point number: \xmlel{</xsl:text>
307 <xsl:value-of select="."/>}</xsl:when>
308 <xsl:when test=".='xs:anyURI'">
309 <xsl:text>a URI: \xmlel{</xsl:text>
310 <xsl:value-of select="."/>}</xsl:when>
311 </xsl:choose>
312 </xsl:template>
313
314 <xsl:template match="@type[starts-with(., /xs:schema/xs:annotation/xs:appinfo/vm:targetPrefix)]"
315 mode="type">
316 <xsl:variable name="type" select="substring-after(.,':')"/>
317 <xsl:choose>
318 <xsl:when test="/xs:schema/xs:simpleType[@name=$type]">
319 <xsl:apply-templates select="/xs:schema/xs:simpleType[@name=$type]" mode="type"/>
320 </xsl:when>
321 <xsl:when test="/xs:schema/xs:complexType[@name=$type]/xs:simpleContent/xs:extension">
322 <xsl:for-each select="/xs:schema/xs:complexType[@name=$type]/xs:simpleContent/xs:extension">
323 <xsl:choose>
324 <xsl:when test="@base='xs:string' or @base='xs:token'">
325 <xsl:text>a string</xsl:text>
326 </xsl:when>
327 <xsl:when test="@base='xs:anyURI'">
328 <xsl:text>a URI</xsl:text>
329 </xsl:when>
330 <xsl:when test="@base='xs:NCName'">
331 <xsl:text>an XML name without a namespace prefix</xsl:text>
332 </xsl:when>
333 <xsl:when test="@base='xs:integer'">
334 <xsl:text>an integer</xsl:text>
335 </xsl:when>
336 <xsl:when test="@base='xs:nonNegativeInteger'">
337 <xsl:text>a non-negative integer (0, 1, ...)</xsl:text>
338 </xsl:when>
339 <xsl:when test="@base='xs:decimal'
340 or @base='xs:float'
341 or @base='xsdouble'">
342 <xsl:text>a floating point number (\xmlel{</xsl:text>
343 <xsl:value-of select="@base"/>
344 <xsl:text>})</xsl:text>
345 </xsl:when>
346 <xsl:when test="@base='boolean'">
347 <xsl:text>a boolean value (true, false, 0, or 1)</xsl:text>
348 </xsl:when>
349 <xsl:otherwise>
350 <xsl:text>\xmlel{</xsl:text>
351 <xsl:value-of select="@base"/>}</xsl:otherwise>
352 </xsl:choose>
353 <xsl:text> with optional attributes</xsl:text>
354 </xsl:for-each>
355 </xsl:when>
356 <xsl:otherwise>
357 <xsl:text>composite: \xmlel{</xsl:text>
358 <xsl:value-of select="."/>}</xsl:otherwise>
359 </xsl:choose>
360 </xsl:template>
361
362 <xsl:template match="xs:simpleType" mode="type">
363 <xsl:choose>
364 <xsl:when test="xs:restriction[@base='xs:string'
365 or @base='xs:token']/xs:enumeration">
366 <xsl:text>string with controlled vocabulary</xsl:text>
367 </xsl:when>
368 <xsl:when test="xs:restriction[@base='xs:string'
369 or @base='xs:token']/xs:pattern">
370 <xsl:text>string of the form: \emph{</xsl:text>
371 <xsl:value-of select="xs:restriction/xs:pattern/@value"/>
372 <xsl:text>}</xsl:text>
373 </xsl:when>
374 <xsl:otherwise>string</xsl:otherwise>
375 </xsl:choose>
376 </xsl:template>
377
378 <xsl:template match="@type" mode="type">
379 <xsl:text>\xmlel{</xsl:text>
380 <xsl:value-of select="."/>
381 <xsl:text>}</xsl:text>
382 </xsl:template>
383
384 <xsl:template match="xs:enumeration" mode="controlledVocab">
385 <value name="{@value}">
386 <xsl:value-of select="xs:annotation/xs:documentation"/>
387 </value>
388 <xsl:text>&#10;</xsl:text>
389 </xsl:template>
390
391 <xsl:template match="xs:attribute" mode="attributes">
392 <xsl:text>\item[</xsl:text>
393 <xsl:value-of select="@name"/>
394 <xsl:text>]&#10;\begin{description}&#10;</xsl:text>
395 <xsl:apply-templates select="." mode="nextContentItem"/>
396 <xsl:text>\end{description}&#10;</xsl:text>
397 </xsl:template>
398
399 <xsl:template match="xs:attribute" mode="nextContentItem">
400 <xsl:param name="row" select="1"/>
401 <xsl:param name="item" select="1"/>
402 <xsl:variable name="type" select="@type"/>
403 <xsl:choose>
404 <xsl:when test="$item &lt; 2">
405 <xsl:apply-templates select="." mode="content.type">
406 <xsl:with-param name="row" select="$row"/>
407 </xsl:apply-templates>
408 <xsl:apply-templates select="." mode="nextContentItem">
409 <xsl:with-param name="row" select="$row+1"/>
410 <xsl:with-param name="item" select="2"/>
411 </xsl:apply-templates>
412 </xsl:when>
413 <xsl:when test="$item &lt; 3">
414 <xsl:apply-templates select="." mode="content.meaning">
415 <xsl:with-param name="row" select="$row"/>
416 </xsl:apply-templates>
417 <xsl:apply-templates select="." mode="nextContentItem">
418 <xsl:with-param name="row" select="$row+1"/>
419 <xsl:with-param name="item" select="3"/>
420 </xsl:apply-templates>
421 </xsl:when>
422 <xsl:when test="$item &lt; 4">
423 <xsl:apply-templates select="." mode="content.occurrences">
424 <xsl:with-param name="row" select="$row"/>
425 </xsl:apply-templates>
426 <xsl:apply-templates select="." mode="nextContentItem">
427 <xsl:with-param name="row" select="$row+1"/>
428 <xsl:with-param name="item" select="4"/>
429 </xsl:apply-templates>
430 </xsl:when>
431 <xsl:when test="$item &lt; 5 and
432 (xs:simpleType/xs:restriction or
433 (starts-with($type,/xs:schema/xs:annotation/xs:appinfo/vm:targetPrefix)
434 and /xs:schema/xs:simpleType[@name=substring-after($type,':')]/xs:restriction))">
435 <xsl:apply-templates select="." mode="content.allowedValues">
436 <xsl:with-param name="row" select="$row"/>
437 </xsl:apply-templates>
438 <xsl:apply-templates select="." mode="nextContentItem">
439 <xsl:with-param name="row" select="$row+1"/>
440 <xsl:with-param name="item" select="5"/>
441 </xsl:apply-templates>
442 </xsl:when>
443 <xsl:when test="$item &lt; 6 and @default and $showDefaults">
444 <xsl:apply-templates select="." mode="content.default">
445 <xsl:with-param name="row" select="$row"/>
446 </xsl:apply-templates>
447 <xsl:apply-templates select="." mode="nextContentItem">
448 <xsl:with-param name="row" select="$row+1"/>
449 <xsl:with-param name="item" select="6"/>
450 </xsl:apply-templates>
451 </xsl:when>
452 <xsl:when test="$item &lt; 7 and count(xs:annotation/xs:documentation) &gt; 1">
453 <xsl:apply-templates select="." mode="content.comment">
454 <xsl:with-param name="row" select="$row"/>
455 </xsl:apply-templates>
456 </xsl:when>
457 </xsl:choose>
458 </xsl:template>
459
460 <xsl:template match="*" mode="xsdcode">
461 <xsl:param name="indent"/>
462 <xsl:param name="step" select="$indentstep"/>
463 <xsl:value-of select="$indent"/>
464 <xsl:text>&lt;</xsl:text>
465 <xsl:value-of select="concat($xsdprefix, ':', local-name())"/>
466 <xsl:apply-templates select="." mode="formatAttrs">
467 <xsl:with-param name="elindent" select="$indent"/>
468 </xsl:apply-templates>
469 <xsl:choose>
470 <xsl:when test="*[local-name()!='annotation']">
471 <xsl:text>&gt;</xsl:text>
472 <xsl:text>&#10;</xsl:text>
473 <xsl:apply-templates
474 select="*[local-name()!='annotation']" mode="xsdcode">
475 <xsl:with-param name="indent" select="concat($indent,$step)"/>
476 </xsl:apply-templates>
477 <xsl:value-of select="$indent"/>
478 <xsl:text>&lt;/</xsl:text>
479 <xsl:value-of select="concat($xsdprefix, ':', local-name())"/>
480 <xsl:text>&gt;</xsl:text>
481 </xsl:when>
482 <xsl:when test="*">
483 <xsl:text>/&gt;</xsl:text>
484 </xsl:when>
485 <xsl:when test="text()">
486 <xsl:text>&gt;</xsl:text>
487 <xsl:value-of select="text()"/>
488 <xsl:text>&lt;/</xsl:text>
489 <xsl:value-of select="concat($xsdprefix, ':', local-name())"/>
490 <xsl:text>&gt;</xsl:text>
491 </xsl:when>
492 <xsl:otherwise>
493 <xsl:text>/&gt;</xsl:text>
494 </xsl:otherwise>
495 </xsl:choose>
496 <xsl:text>&#10;</xsl:text>
497 </xsl:template>
498
499 <xsl:template match="*" mode="formatAttrs">
500 <xsl:param name="elindent"/>
501 <xsl:param name="indent">
502 <xsl:value-of select="$elindent"/>
503 <xsl:call-template name="indentFor">
504 <xsl:with-param name="in" select="concat($xsdprefix,local-name())"/>
505 </xsl:call-template>
506 </xsl:param>
507 <xsl:param name="c" select="count(@*)"/>
508 <xsl:param name="to"/>
509 <xsl:variable name="i" select="count(@*)-$c+1"/>
510 <xsl:variable name="appended">
511 <xsl:apply-templates select="@*[$i]" mode="appendAttr">
512 <xsl:with-param name="to" select="$to"/>
513 <xsl:with-param name="indent" select="$indent"/>
514 </xsl:apply-templates>
515 </xsl:variable>
516 <xsl:choose>
517 <xsl:when test="$c &gt; 1">
518 <xsl:apply-templates select="." mode="formatAttrs">
519 <xsl:with-param name="to" select="$appended"/>
520 <xsl:with-param name="c" select="$c - 1"/>
521 <xsl:with-param name="indent" select="$indent"/>
522 </xsl:apply-templates>
523 </xsl:when>
524 <xsl:otherwise>
525 <xsl:value-of select="$appended"/>
526 <xsl:if test="$appended">
527 <xsl:text> </xsl:text>
528 </xsl:if>
529 </xsl:otherwise>
530 </xsl:choose>
531 </xsl:template>
532
533 <xsl:template match="@*" mode="appendAttr">
534 <xsl:param name="to"/>
535 <xsl:param name="indent"/>
536 <xsl:param name="maxlen" select="$maxcodelen"/>
537 <xsl:variable name="attr">
538 <xsl:apply-templates select="." mode="formatAttr"/>
539 </xsl:variable>
540 <xsl:value-of select="$to"/>
541 <xsl:if test="string-length($attr)+string-length($to)+string-length($attr) &gt; $maxcodelen">
542 <xsl:text>&#10;</xsl:text>
543 <xsl:value-of select="$indent"/>
544 </xsl:if>
545 <xsl:value-of select="$attr"/>
546 </xsl:template>
547
548 <xsl:template match="@*" mode="formatAttr">
549 <xsl:text> </xsl:text>
550 <xsl:value-of select="local-name()"/>
551 <xsl:text>="</xsl:text>
552 <xsl:value-of select="."/>
553 <xsl:text>"</xsl:text>
554 </xsl:template>
555
556 <xsl:template name="indentFor">
557 <xsl:param name="in"/>
558 <xsl:if test="$in">
559 <xsl:text> </xsl:text>
560 <xsl:call-template name="indentFor">
561 <xsl:with-param name="in" select="substring($in,2)"/>
562 </xsl:call-template>
563 </xsl:if>
564 </xsl:template>
565
566 <xsl:template match="xs:complexType|xs:simpleType" mode="attributeTitle">
567 <xsl:text>\xmlel{</xsl:text>
568 <xsl:value-of select="concat(/xs:schema/xs:annotation/xs:appinfo/vm:targetPrefix,':',@name)"/>
569 <xsl:text>}</xsl:text>
570 <xsl:text> Attributes</xsl:text>
571 </xsl:template>
572
573 <xsl:template match="xs:complexType" mode="MetadataTitle">
574 <xsl:text>\xmlel{</xsl:text>
575 <xsl:value-of select="concat(/xs:schema/xs:annotation/xs:appinfo/vm:targetPrefix,':',@name)"/>
576 <xsl:text>}</xsl:text>
577 <xsl:choose>
578 <xsl:when test=".//xs:extension">
579 <xsl:text> Extension Metadata Elements</xsl:text>
580 </xsl:when>
581 <xsl:otherwise>
582 <xsl:text> Metadata Elements</xsl:text>
583 </xsl:otherwise>
584 </xsl:choose>
585 </xsl:template>
586
587 <xsl:template match="xs:complexType|xs:simpleType" mode="xsddef">
588 <xsl:text>\begin{lstlisting}[language=XML,basicstyle=\footnotesize]&#10;</xsl:text>
589 <xsl:apply-templates select="." mode="xsdcode"/>
590 <xsl:text>\end{lstlisting}</xsl:text>
591 </xsl:template>
592
593 <xsl:template match="xs:documentation" mode="typedesc">
594 <xsl:text>\noindent{\small</xsl:text>
595 <xsl:value-of select="."/>
596 <xsl:text>\par}&#10;&#10;</xsl:text>
597 </xsl:template>
598
599 <xsl:template match="xs:complexType|xs:simpleType">
600 <xsl:if test="@name=$destType">
601 <xsl:text>\begingroup
602 \renewcommand*\descriptionlabel[1]{%
603 \hbox to 5.5em{\emph{#1}\hfil}}
604 \vspace{2ex}\noindent\textbf{\xmlel{</xsl:text>
605 <xsl:value-of select="concat(/xs:schema/xs:annotation/xs:appinfo/vm:targetPrefix,':',@name)"/>
606 <xsl:text>}</xsl:text>
607 <xsl:text> Type Schema Documentation}&#10;&#10;</xsl:text>
608 <xsl:apply-templates select="./xs:annotation/xs:documentation"
609 mode="typedesc"/>
610
611 <xsl:text>\vspace{1ex}\noindent\textbf{\xmlel{</xsl:text>
612 <xsl:value-of select="concat(/xs:schema/xs:annotation/xs:appinfo/vm:targetPrefix,':',@name)"/>
613 <xsl:text>}</xsl:text>
614 <xsl:text> Type Schema Definition}&#10;&#10;</xsl:text>
615 <xsl:apply-templates select="." mode="xsddef"/>
616
617 <xsl:if test=".//xs:attribute">
618 <xsl:text>&#10;&#10;\vspace{0.5ex}\noindent\textbf{</xsl:text>
619 <xsl:apply-templates select="." mode="attributeTitle"/>
620 <xsl:text>}&#10;&#10;\begingroup\small\begin{bigdescription}</xsl:text>
621 <xsl:apply-templates select="." mode="attributes"/>
622 <xsl:text>&#10;\end{bigdescription}\endgroup&#10;&#10;</xsl:text>
623 </xsl:if>
624
625 <xsl:if test=".//xs:element">
626 <xsl:text>&#10;&#10;\vspace{0.5ex}\noindent\textbf{</xsl:text>
627 <xsl:apply-templates select="." mode="MetadataTitle"/>
628 <xsl:text>}&#10;&#10;\begingroup\small\begin{bigdescription}</xsl:text>
629 <xsl:apply-templates select="." mode="content"/>
630 <xsl:text>&#10;\end{bigdescription}\endgroup&#10;&#10;</xsl:text>
631 </xsl:if>
632 <xsl:text>\endgroup</xsl:text>
633 </xsl:if>
634 </xsl:template>
635
636 <xsl:template match="/">
637 <xsl:apply-templates/>
638 </xsl:template>
639 </xsl:stylesheet>

msdemlei@ari.uni-heidelberg.de
ViewVC Help
Powered by ViewVC 1.1.26