bolognese 0.11.1 → 0.11.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 00a0fc080747afbb8db851ec00a48f1bcd317a0adf7c51e1b05811f14971340f
4
- data.tar.gz: 19dd033c8334f8ab53fed1dc365c3573d462ba1a8c31f6a9a9c8449452092a8c
3
+ metadata.gz: 3a474fc02c5cd6efde7e3281b2b028893ba95762eb76db7ea6292ca262104493
4
+ data.tar.gz: 2ddb4c167ce6fdf718ad17bb5802465291d500e8f660232b5649635191ced1e0
5
5
  SHA512:
6
- metadata.gz: b927056ad219069e3e9e451b3d0c1c524db2c84a02655f22934a43a1ecb0886760adcc1ce08d695ee75dc838f2df76afc102b480b2ecb0e12fa8b8d264677137
7
- data.tar.gz: 34efa29d1fd9ce5e1c5b3e47fc6a5865734f8ebe38328eff8d07f6b9c6a3cdb988c2a7c37f986bd6b42f84eb2b04f85cb2ef8204c42128f3d6565b6a4f430fa9
6
+ metadata.gz: 180c4a1b2d5b68bde9f40b0e4b6e3710e5d698e06ce8c9d95b3b1e881992dced59b509b5dd50ca281de976b93ce7160ecd67b9f1b7c235e3d4bff7fc59018c0b
7
+ data.tar.gz: 5e7345b954368e38a3f168343f565ab6ecc92ca0fe69726c92416550644094ede0e201aff89bef492eac232b63a966f757aecf3d52ed45acf686115de798ca49
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bolognese (0.11.1)
4
+ bolognese (0.11.3)
5
5
  activesupport (>= 4.2.5, < 6)
6
6
  benchmark_methods (~> 0.7)
7
7
  bibtex-ruby (~> 4.1)
@@ -1,3 +1,3 @@
1
1
  module Bolognese
2
- VERSION = "0.11.1"
2
+ VERSION = "0.11.3"
3
3
  end
@@ -0,0 +1,997 @@
1
+ <!DOCTYPE xsl:stylesheet [
2
+ <!--*
3
+ <!DOCTYPE xsl:stylesheet PUBLIC 'http://www.w3.org/1999/XSL/Transform'
4
+ '../../People/cmsmcq/lib/xslt10.dtd' [
5
+ *-->
6
+ <!ATTLIST xsl:stylesheet
7
+ xmlns:xsl CDATA "http://www.w3.org/1999/XSL/Transform"
8
+ xmlns:xsd CDATA #IMPLIED
9
+ xmlns:xhtml CDATA #IMPLIED
10
+ >
11
+ <!ATTLIST xsl:text
12
+ xmlns:xsl CDATA "http://www.w3.org/1999/XSL/Transform"
13
+ >
14
+
15
+ <!ENTITY copy "&#169;" ><!--=copyright sign-->
16
+ <!ENTITY reg "&#174;" ><!--/circledR =registered sign-->
17
+ <!ENTITY rarr "&#x2192;" ><!--/rightarrow /to A: =rightward arrow-->
18
+
19
+ <!ENTITY nl "&#xA;">
20
+ <!ENTITY lsquo "&#x2018;" ><!--=single quotation mark, left-->
21
+ <!ENTITY rsquo "&#x2019;" ><!--=single quotation mark, right-->
22
+ <!ENTITY ldquo "&#x201C;" ><!--=double quotation mark, left-->
23
+ <!ENTITY rdquo "&#x201D;" ><!--=double quotation mark, right-->
24
+
25
+ ]>
26
+ <xsl:stylesheet version="1.0"
27
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
28
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
29
+ xmlns:xhtml="http://www.w3.org/1999/xhtml"
30
+ >
31
+
32
+ <!--* xsd.xsl: format an XSD schema document for simple display in a Web browser.
33
+ * http://www.w3.org/XML/2004/xml-schema-test-suite/xsd.xsl
34
+ *
35
+ * Copyright © 2008-2009 World Wide Web Consortium, (Massachusetts
36
+ * Institute of Technology, European Research Consortium for
37
+ * Informatics and Mathematics, Keio University). All Rights
38
+ * Reserved. This work is distributed under the W3C® Software
39
+ * License [1] in the hope that it will be useful, but WITHOUT ANY
40
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or
41
+ * FITNESS FOR A PARTICULAR PURPOSE.
42
+ *
43
+ * [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
44
+ *
45
+ *-->
46
+
47
+ <!--* Revisions:
48
+ * 2012-05-03 : CMSMcQ : reissue under Software License, not document
49
+ * license
50
+ * 2009-01-21 : CMSMcQ : wrap start-tags only when necessary
51
+ * 2009-01-20 : CMSMcQ : wrap start-tags
52
+ * 2008-12-19 : CMSMcQ : add toc for schema documents with more than
53
+ * five children of xsd:schema
54
+ * 2008-12-18 : CMSMcQ : fix problems with text breaking
55
+ * add rule for top-level attribute groups
56
+ * 2008-09-27 : CMSMcQ : made first version of this stylesheet
57
+ *-->
58
+
59
+ <xsl:output method="html" indent="yes"/>
60
+
61
+ <xsl:param name="line-wrap-length" select="60"/>
62
+ <xsl:param name="ind-depth" select="6"/>
63
+ <xsl:param name="additional-indent" select="substring(
64
+ ' ',
65
+ 1,$ind-depth)"/>
66
+
67
+ <xsl:variable name="tns">
68
+ <xsl:value-of select="/xsd:schema/@targetNamespace"/>
69
+ </xsl:variable>
70
+
71
+ <!--* 0 Document root *-->
72
+ <xsl:template match="/">
73
+
74
+ <xsl:variable name="doctitle">
75
+ <xsl:text>Schema document for </xsl:text>
76
+ <xsl:choose>
77
+ <xsl:when test="xsd:schema/@targetNamespace">
78
+ <xsl:text>namespace </xsl:text>
79
+ <xsl:value-of select="$tns"/>
80
+ </xsl:when>
81
+ <xsl:otherwise>
82
+ <xsl:text>unspecified namespace</xsl:text>
83
+ </xsl:otherwise>
84
+ </xsl:choose>
85
+ </xsl:variable>
86
+
87
+ <xsl:variable name="docHasHeading" select="
88
+ xsd:schema/xsd:annotation[1]/xsd:documentation/*[1]
89
+ [self::xhtml:h1 or self::h1]
90
+ or
91
+ xsd:schema/xsd:annotation[1]/xsd:documentation/xhtml:div/*[1]
92
+ [self::xhtml:h1 or self::h1]
93
+ "/>
94
+ <xsl:variable name="docIsProlific" select="
95
+ count(xsd:schema/child::*) &gt; 5
96
+ "/>
97
+
98
+ <xsl:element name="html">
99
+ <xsl:element name="head">
100
+ <xsl:element name="title">
101
+ <xsl:value-of select="$doctitle"/>
102
+ </xsl:element>
103
+ <xsl:element name="style">
104
+ <xsl:attribute name="type">text/css</xsl:attribute>
105
+ .bodytext .bodytext {
106
+ margin-left: 0;
107
+ margin-right: 0;
108
+ }
109
+ .bodytext {
110
+ margin-left: 15%;
111
+ margin-right: 2%;
112
+ }
113
+ .annotation {
114
+ <!--* anything special to do here? *-->
115
+ <!--* color: navy; *-->
116
+ }
117
+ .same-ns {
118
+ color: Green;
119
+ }
120
+ .diff-ns {
121
+ color: maroon;
122
+ }
123
+ .warning {
124
+ color: red;
125
+ }
126
+ p.note {
127
+ font-style: italic;
128
+ }
129
+ p.dt {
130
+ font-weight: bold;
131
+ }
132
+ span.rfc {
133
+ font-variant: small-caps;
134
+ }
135
+ </xsl:element>
136
+ </xsl:element>
137
+ <xsl:element name="body">
138
+
139
+ <xsl:choose>
140
+ <xsl:when test="$docHasHeading and not($docIsProlific)">
141
+ <!--* If the first thing in the first documentation element is a heading,
142
+ * and there are few children, then don't interfere.
143
+ *-->
144
+ <xsl:comment>* <xsl:value-of select="$doctitle"/> *</xsl:comment>
145
+ </xsl:when>
146
+ <xsl:otherwise>
147
+ <!--* either document has no heading (and needs one), or
148
+ * we're going to do a toc and need a heading anyway
149
+ *-->
150
+ <xsl:element name="h1">
151
+ <xsl:value-of select="$doctitle"/>
152
+ </xsl:element>
153
+ <xsl:if test="$docIsProlific">
154
+ <xsl:element name="div">
155
+ <xsl:element name="hr"/>
156
+ <xsl:element name="ul">
157
+ <xsl:attribute name="class">bodytext</xsl:attribute>
158
+ <xsl:apply-templates mode="toc" select="./xsd:schema/*"/>
159
+ </xsl:element>
160
+ <xsl:element name="hr"/>
161
+ </xsl:element>
162
+ </xsl:if>
163
+ </xsl:otherwise>
164
+ </xsl:choose>
165
+ <xsl:apply-templates/>
166
+ </xsl:element>
167
+ </xsl:element>
168
+ </xsl:template>
169
+
170
+ <!--* 2 Schema element *-->
171
+ <xsl:template match="xsd:schema">
172
+ <!--* optional future change: write out information here about
173
+ * the attributes of xsd:schema: version, finalDefault, blockDefault,
174
+ * elementFormDefault, atgtributeFormDefault, namespace bindings ...
175
+ *-->
176
+ <xsl:apply-templates/>
177
+ </xsl:template>
178
+
179
+ <!--* 3 Anotation *-->
180
+ <xsl:template match="xsd:annotation">
181
+ <xsl:element name="div">
182
+ <xsl:attribute name="class">annotation</xsl:attribute>
183
+ <xsl:attribute name="id">
184
+ <xsl:call-template name="leid">
185
+ </xsl:call-template>
186
+ </xsl:attribute>
187
+ <xsl:if test="not(./xsd:documentation//*[@class='bodytext'])">
188
+ <xsl:element name="h3">Annotation</xsl:element>
189
+ </xsl:if>
190
+ <xsl:element name="div">
191
+ <xsl:choose>
192
+ <xsl:when test="./xsd:documentation//*[@class='bodytext']">
193
+ <!--* if the schema document is already using class=bodytext,
194
+ * let the schema author control the margins, don't
195
+ * assign the class here.
196
+ *-->
197
+ </xsl:when>
198
+ <xsl:otherwise>
199
+ <xsl:attribute name="class">bodytext</xsl:attribute>
200
+ </xsl:otherwise>
201
+ </xsl:choose>
202
+ <xsl:apply-templates/>
203
+ </xsl:element>
204
+ </xsl:element>
205
+ </xsl:template>
206
+
207
+ <xsl:template match="xsd:documentation">
208
+ <xsl:choose>
209
+ <xsl:when test=".//xhtml:* or .//div or .//p or .//li">
210
+ <xsl:copy-of select="*"/>
211
+ </xsl:when>
212
+ <xsl:when test="./*">
213
+ <xsl:message>! Unrecognized children in xs:documentation element</xsl:message>
214
+ <xsl:copy-of select="*"/>
215
+ </xsl:when>
216
+ <xsl:otherwise>
217
+ <xsl:call-template name="break-pcdata">
218
+ <xsl:with-param name="s" select="string(.)"/>
219
+ </xsl:call-template>
220
+ </xsl:otherwise>
221
+ </xsl:choose>
222
+ </xsl:template>
223
+
224
+ <xsl:template name="break-pcdata">
225
+ <xsl:param name="s"></xsl:param>
226
+
227
+ <xsl:choose>
228
+ <xsl:when test="starts-with($s,'&#xA;')">
229
+ <xsl:text>&#xA;</xsl:text>
230
+ <xsl:element name="br"/>
231
+ <xsl:call-template name="break-pcdata">
232
+ <xsl:with-param name="s" select="substring($s,2)"/>
233
+ </xsl:call-template>
234
+ </xsl:when>
235
+ <xsl:when test="starts-with($s,' ')">
236
+ <xsl:text>&#xA0;</xsl:text>
237
+ <xsl:call-template name="break-pcdata">
238
+ <xsl:with-param name="s" select="substring($s,2)"/>
239
+ </xsl:call-template>
240
+ </xsl:when>
241
+ <xsl:when test="contains($s,'&#xA;')">
242
+ <xsl:value-of select="substring-before($s,'&#xA;')"/>
243
+ <xsl:text>&#xA;</xsl:text>
244
+ <xsl:element name="br"/>
245
+ <xsl:call-template name="break-pcdata">
246
+ <xsl:with-param name="s" select="substring-after($s,'&#xA;')"/>
247
+ </xsl:call-template>
248
+ </xsl:when>
249
+ <xsl:otherwise>
250
+ <xsl:value-of select="$s"/>
251
+ </xsl:otherwise>
252
+ </xsl:choose>
253
+ </xsl:template>
254
+
255
+ <!--* 4 Top-level components *-->
256
+ <xsl:template match="
257
+ xsd:schema/xsd:attribute
258
+ | xsd:schema/xsd:element
259
+ | xsd:schema/xsd:simpleType
260
+ | xsd:schema/xsd:complexType
261
+ | xsd:schema/xsd:attributeGroup
262
+ | xsd:schema/xsd:import
263
+ | xsd:schema/xsd:group
264
+ | xsd:schema/xsd:notation
265
+ ">
266
+ <xsl:call-template name="show-top-level-component"/>
267
+ </xsl:template>
268
+
269
+ <xsl:template name="show-top-level-component">
270
+ <xsl:variable name="sort">
271
+ <xsl:call-template name="sort"/>
272
+ </xsl:variable>
273
+ <xsl:variable name="leid">
274
+ <xsl:call-template name="leid"/>
275
+ </xsl:variable>
276
+ <xsl:variable name="has-heading-already">
277
+ <xsl:choose>
278
+ <xsl:when test="./xsd:annotation[1]/xsd:documentation/*//*
279
+ [self::xhtml:*[starts-with(local-name(),'h')]
280
+ or
281
+ self::*[contains(' h1 h2 h3 h4 h5 ',local-name())]
282
+ ]">
283
+ <xsl:value-of select="'true'"/>
284
+ </xsl:when>
285
+ <xsl:otherwise>
286
+ <xsl:value-of select="'false'"/>
287
+ </xsl:otherwise>
288
+ </xsl:choose>
289
+ </xsl:variable>
290
+
291
+ <xsl:element name="div">
292
+ <xsl:attribute name="id">
293
+ <xsl:value-of select="$leid"/>
294
+ </xsl:attribute>
295
+ <xsl:element name="h3">
296
+ <xsl:element name="a">
297
+ <xsl:attribute name="name">
298
+ <xsl:value-of select="$leid"/>
299
+ </xsl:attribute>
300
+ <xsl:value-of select="concat($sort,' ')"/>
301
+ <xsl:choose>
302
+ <xsl:when test="count(@name) = 1">
303
+ <xsl:element name="em">
304
+ <xsl:value-of select="@name"/>
305
+ </xsl:element>
306
+ </xsl:when>
307
+ <xsl:when test="self::xsd:import and (count(@namespace) = 1)">
308
+ <xsl:element name="code">
309
+ <xsl:value-of select="@namespace"/>
310
+ </xsl:element>
311
+ </xsl:when>
312
+ </xsl:choose>
313
+ </xsl:element>
314
+ </xsl:element>
315
+
316
+ <xsl:element name="div">
317
+ <xsl:attribute name="class">bodytext</xsl:attribute>
318
+
319
+ <xsl:if test="./xsd:annotation/xsd:documentation">
320
+ <xsl:element name="div">
321
+ <xsl:if test="$has-heading-already = 'false'">
322
+ <xsl:element name="h4">Notes</xsl:element>
323
+ </xsl:if><!-- /if .$has-heading-already *-->
324
+ <xsl:apply-templates select="xsd:annotation/xsd:documentation"/>
325
+ <xsl:if test="count(./xsd:annotation/xsd:documentation/@source) = 1">
326
+ <xsl:element name="p">
327
+ <xsl:text>External documentation at </xsl:text>
328
+ <xsl:element name="code">
329
+ <xsl:element name="a">
330
+ <xsl:attribute name="href">
331
+ <xsl:value-of select="./xsd:annotation/xsd:documentation/@source"/>
332
+ </xsl:attribute>
333
+ <xsl:value-of select="./xsd:annotation/xsd:documentation/@source"/>
334
+ </xsl:element>
335
+ </xsl:element>
336
+ </xsl:element>
337
+ </xsl:if>
338
+ </xsl:element>
339
+ </xsl:if><!-- /if ./xsd:annotation/xsd:documentation *-->
340
+
341
+ <xsl:element name="div">
342
+ <xsl:element name="h4">Formal declaration in XSD source form</xsl:element>
343
+ <xsl:element name="pre">
344
+ <xsl:variable name="preceding-node"
345
+ select="./preceding-sibling::node()[1]"/>
346
+ <xsl:if test="not($preceding-node/self::*)
347
+ and (normalize-space($preceding-node) = '')">
348
+ <xsl:value-of select="$preceding-node"/>
349
+ </xsl:if>
350
+ <xsl:apply-templates select="." mode="echo-xml"/>
351
+ </xsl:element>
352
+ </xsl:element><!--* div for XSD source form *-->
353
+ </xsl:element><!--* div for documentation and formal description *-->
354
+
355
+ </xsl:element><!--* div for top-level component *-->
356
+ </xsl:template>
357
+
358
+
359
+ <!--* 5 xml mode *-->
360
+ <xsl:template match="*" mode="echo-xml">
361
+ <xsl:variable name="s0">
362
+ <xsl:call-template name="lastline-suffix">
363
+ <xsl:with-param name="s0" select="preceding-sibling::text()
364
+ [string-length(.) > 0][1]" />
365
+ </xsl:call-template>
366
+ </xsl:variable>
367
+ <xsl:variable name="width">
368
+ <xsl:call-template name="stag-width">
369
+ <xsl:with-param name="indent-length" select="string-length($s0)"/>
370
+ </xsl:call-template>
371
+ </xsl:variable>
372
+ <!--* <xsl:message>Start-tag width for <xsl:value-of select="name()"/>
373
+ = <xsl:value-of select="$width"/></xsl:message> *-->
374
+
375
+ <xsl:text>&lt;</xsl:text>
376
+ <xsl:value-of select="name()"/>
377
+ <xsl:apply-templates select="@*" mode="echo-xml">
378
+ <xsl:with-param name="break-or-nobreak">
379
+ <xsl:choose>
380
+ <xsl:when test="$width > $line-wrap-length">break</xsl:when>
381
+ <xsl:otherwise>nobreak</xsl:otherwise>
382
+ </xsl:choose>
383
+ </xsl:with-param>
384
+ <xsl:with-param name="s0">
385
+ <xsl:call-template name="lastline-suffix">
386
+ <xsl:with-param name="s0" select="preceding-sibling::text()
387
+ [string-length(.) > 0][1]" />
388
+ </xsl:call-template>
389
+ </xsl:with-param>
390
+ </xsl:apply-templates>
391
+ <xsl:choose>
392
+ <xsl:when test="child::node()">
393
+ <xsl:text>&gt;</xsl:text>
394
+ <xsl:apply-templates select="node()" mode="echo-xml"/>
395
+ <xsl:text>&lt;/</xsl:text>
396
+ <xsl:value-of select="name()"/>
397
+ <xsl:text>&gt;</xsl:text>
398
+ </xsl:when>
399
+ <xsl:otherwise>/&gt;</xsl:otherwise>
400
+ </xsl:choose>
401
+ <!--* </xsl:element> *-->
402
+ </xsl:template>
403
+
404
+ <xsl:template match="xsd:annotation" mode="echo-xml"/>
405
+ <xsl:template match="@xml:space" mode="echo-xml"/>
406
+
407
+ <xsl:template match="@*" mode="echo-xml">
408
+ <xsl:param name="break-or-nobreak">nobreak</xsl:param>
409
+ <xsl:param name="s0"></xsl:param>
410
+ <xsl:variable name="indent">
411
+ <xsl:choose>
412
+ <xsl:when test="normalize-space($s0) = ''">
413
+ <xsl:value-of select="concat($additional-indent,$s0)"/>
414
+ </xsl:when>
415
+ <xsl:otherwise>
416
+ <xsl:value-of select="' '"/>
417
+ </xsl:otherwise>
418
+ </xsl:choose>
419
+ </xsl:variable>
420
+
421
+ <xsl:choose>
422
+ <xsl:when test="parent::xsd:* and $break-or-nobreak = 'break'">
423
+ <xsl:text>&#xA;</xsl:text>
424
+ <xsl:value-of select="$indent"/>
425
+ </xsl:when>
426
+ <xsl:otherwise>
427
+ <xsl:text> </xsl:text>
428
+ </xsl:otherwise>
429
+ </xsl:choose>
430
+ <xsl:value-of select="name()"/>
431
+ <xsl:text>="</xsl:text>
432
+ <xsl:choose>
433
+ <xsl:when test="parent::xsd:element
434
+ and namespace-uri() = ''
435
+ and local-name() = 'ref'
436
+ ">
437
+ <xsl:call-template name="makelink-maybe"/>
438
+ </xsl:when>
439
+ <xsl:when test="parent::xsd:attribute
440
+ and namespace-uri() = ''
441
+ and local-name() = 'ref'
442
+ ">
443
+ <xsl:call-template name="makelink-maybe"/>
444
+ </xsl:when>
445
+ <xsl:when test="parent::xsd:restriction
446
+ and namespace-uri() = ''
447
+ and local-name() = 'base'
448
+ ">
449
+ <xsl:call-template name="makelink-maybe"/>
450
+ </xsl:when>
451
+ <xsl:when test="parent::xsd:extension
452
+ and namespace-uri() = ''
453
+ and local-name() = 'base'
454
+ ">
455
+ <xsl:call-template name="makelink-maybe"/>
456
+ </xsl:when>
457
+ <xsl:when test="parent::xsd:group
458
+ and namespace-uri() = ''
459
+ and local-name() = 'ref'
460
+ ">
461
+ <xsl:call-template name="makelink-maybe"/>
462
+ </xsl:when>
463
+ <xsl:when test="parent::xsd:list
464
+ and namespace-uri() = ''
465
+ and local-name() = 'itemType'
466
+ ">
467
+ <xsl:call-template name="makelink-maybe"/>
468
+ </xsl:when>
469
+ <xsl:when test="parent::xsd:union
470
+ and namespace-uri() = ''
471
+ and local-name() = 'memberTypes'
472
+ ">
473
+ <xsl:call-template name="makelink-several-maybe"/>
474
+ </xsl:when>
475
+ <xsl:when test="parent::xsd:element
476
+ and namespace-uri() = ''
477
+ and local-name() = 'type'
478
+ ">
479
+ <xsl:call-template name="makelink-maybe"/>
480
+ </xsl:when>
481
+ <xsl:when test="parent::xsd:attribute
482
+ and namespace-uri() = ''
483
+ and local-name() = 'type'
484
+ ">
485
+ <xsl:call-template name="makelink-maybe"/>
486
+ </xsl:when>
487
+ <xsl:when test="parent::xsd:element
488
+ and namespace-uri() = ''
489
+ and local-name() = 'substitutionGroup'
490
+ ">
491
+ <xsl:call-template name="makelink-several-maybe"/>
492
+ </xsl:when>
493
+
494
+ <xsl:otherwise>
495
+ <xsl:value-of select="."/>
496
+ </xsl:otherwise>
497
+ </xsl:choose>
498
+ <xsl:text>"</xsl:text>
499
+
500
+ </xsl:template>
501
+ <xsl:template match="text()" mode="echo-xml">
502
+ <xsl:value-of select="."/>
503
+ </xsl:template>
504
+
505
+
506
+ <!--* 6 toc *-->
507
+ <xsl:template mode="toc" match="
508
+ xsd:schema/xsd:annotation
509
+ | xsd:schema/xsd:attribute
510
+ | xsd:schema/xsd:element
511
+ | xsd:schema/xsd:simpleType
512
+ | xsd:schema/xsd:complexType
513
+ | xsd:schema/xsd:attributeGroup
514
+ | xsd:schema/xsd:import
515
+ | xsd:schema/xsd:group
516
+ | xsd:schema/xsd:notation
517
+ ">
518
+ <xsl:call-template name="toc-entry"/>
519
+ </xsl:template>
520
+
521
+ <xsl:template name="toc-entry">
522
+ <xsl:variable name="sort">
523
+ <xsl:call-template name="sort"/>
524
+ </xsl:variable>
525
+ <xsl:variable name="leid">
526
+ <xsl:call-template name="leid"/>
527
+ </xsl:variable>
528
+ <xsl:element name="li">
529
+ <xsl:element name="a">
530
+ <xsl:attribute name="href">
531
+ <xsl:value-of select="concat('#',$leid)"/>
532
+ </xsl:attribute>
533
+ <xsl:choose>
534
+ <xsl:when test="self::xsd:annotation
535
+ and
536
+ ( descendant::xhtml:h1 or descendant::xhtml:h2 or descendant::xhtml:h3
537
+ or descendant::h1 or descendant::h2 or descendant::h3)
538
+ ">
539
+ <xsl:choose>
540
+ <xsl:when test="descendant::xhtml:h1">
541
+ <xsl:value-of select="descendant::xhtml:h1[1]"/>
542
+ </xsl:when>
543
+ <xsl:when test="descendant::h1">
544
+ <xsl:value-of select="descendant::h1[1]"/>
545
+ </xsl:when>
546
+ <xsl:when test="descendant::xhtml:h2">
547
+ <xsl:value-of select="descendant::xhtml:h2[1]"/>
548
+ </xsl:when>
549
+ <xsl:when test="descendant::h2">
550
+ <xsl:value-of select="descendant::h2[1]"/>
551
+ </xsl:when>
552
+ <xsl:when test="descendant::xhtml:h3">
553
+ <xsl:value-of select="descendant::xhtml:h3[1]"/>
554
+ </xsl:when>
555
+ <xsl:when test="descendant::h3">
556
+ <xsl:value-of select="descendant::h3[1]"/>
557
+ </xsl:when>
558
+ </xsl:choose>
559
+
560
+ </xsl:when>
561
+ <xsl:otherwise>
562
+ <xsl:value-of select="concat($sort,' ')"/>
563
+ <xsl:choose>
564
+ <xsl:when test="count(@name) = 1">
565
+ <xsl:element name="em">
566
+ <xsl:value-of select="@name"/>
567
+ </xsl:element>
568
+ </xsl:when>
569
+ <xsl:when test="self::xsd:annotation">
570
+ <xsl:value-of select="1 + count(preceding-sibling::xsd:annotation)"/>
571
+ </xsl:when>
572
+ <xsl:when test="self::xsd:import">
573
+ <xsl:element name="code">
574
+ <xsl:value-of select="@namespace"/>
575
+ </xsl:element>
576
+ </xsl:when>
577
+ <xsl:otherwise>
578
+ <!--* fake it *-->
579
+ <xsl:variable name="gi" select="local-name()"/>
580
+ <xsl:value-of select="1 + count(preceding-sibling::*[local-name() = $gi])"/>
581
+ </xsl:otherwise>
582
+ </xsl:choose>
583
+ </xsl:otherwise>
584
+ </xsl:choose>
585
+ </xsl:element>
586
+ </xsl:element>
587
+
588
+ </xsl:template>
589
+
590
+ <!--* 7 common code for calculating sort and little-endian IDs *-->
591
+ <xsl:template name="sort">
592
+ <xsl:choose>
593
+ <xsl:when test="self::xsd:annotation">
594
+ <xsl:value-of select="'Annotation'"/>
595
+ </xsl:when>
596
+ <xsl:when test="self::xsd:attribute">
597
+ <xsl:value-of select="'Attribute'"/>
598
+ </xsl:when>
599
+ <xsl:when test="self::xsd:element">
600
+ <xsl:value-of select="'Element'"/>
601
+ </xsl:when>
602
+ <xsl:when test="self::xsd:simpleType">
603
+ <xsl:value-of select="'Simple type'"/>
604
+ </xsl:when>
605
+ <xsl:when test="self::xsd:complexType">
606
+ <xsl:value-of select="'Complex type'"/>
607
+ </xsl:when>
608
+ <xsl:when test="self::xsd:attributeGroup">
609
+ <xsl:value-of select="'Attribute group'"/>
610
+ </xsl:when>
611
+ <xsl:when test="self::xsd:group">
612
+ <xsl:value-of select="'Model group'"/>
613
+ </xsl:when>
614
+ <xsl:otherwise>
615
+ <xsl:variable name="gi" select="local-name()"/>
616
+ <xsl:value-of select="concat(
617
+ translate(substring($gi,1,1),'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ'),
618
+ substring($gi,2)
619
+ )"/>
620
+ </xsl:otherwise>
621
+ </xsl:choose>
622
+ </xsl:template>
623
+ <xsl:template name="leid">
624
+ <xsl:choose>
625
+ <xsl:when test="self::xsd:annotation">
626
+ <xsl:value-of select="concat('ann_',
627
+ string(1+count(preceding-sibling::xsd:annotation)))"/>
628
+ </xsl:when>
629
+ <xsl:when test="self::xsd:attribute">
630
+ <xsl:value-of select="concat('att_',@name)"/>
631
+ </xsl:when>
632
+ <xsl:when test="self::xsd:element">
633
+ <xsl:value-of select="concat('elem_',@name)"/>
634
+ </xsl:when>
635
+ <xsl:when test="self::xsd:simpleType">
636
+ <xsl:value-of select="concat('type_',@name)"/>
637
+ </xsl:when>
638
+ <xsl:when test="self::xsd:complexType">
639
+ <xsl:value-of select="concat('type_',@name)"/>
640
+ </xsl:when>
641
+ <xsl:when test="self::xsd:attributeGroup">
642
+ <xsl:value-of select="concat('attgrp_',@name)"/>
643
+ </xsl:when>
644
+ <xsl:when test="self::xsd:group">
645
+ <xsl:value-of select="concat('grp_',@name)"/>
646
+ </xsl:when>
647
+ <xsl:when test="self::xsd:import">
648
+ <xsl:value-of select="concat('imp_',
649
+ string(1+count(preceding-sibling::xsd:import)))"/>
650
+ </xsl:when>
651
+ <xsl:otherwise>
652
+ <xsl:choose>
653
+ <xsl:when test="@name">
654
+ <xsl:variable name="sort" select="local-name()"/>
655
+ <xsl:value-of select="concat($sort,'_',@name)"/>
656
+ </xsl:when>
657
+ <xsl:otherwise>
658
+ <xsl:variable name="sort" select="local-name()"/>
659
+ <xsl:variable name="pos" select="1 + count(preceding-sibling::*[local-name() = $sort])"/>
660
+ <xsl:value-of select="concat($sort,'_',$pos)"/>
661
+ </xsl:otherwise>
662
+ </xsl:choose>
663
+ </xsl:otherwise>
664
+ </xsl:choose>
665
+ </xsl:template>
666
+
667
+ <!--* 8 unmatched elements (mostly diagnostic for development) *-->
668
+ <xsl:template match="*|@*">
669
+ <xsl:variable name="fqgi">
670
+ <xsl:call-template name="fqgi"/>
671
+ </xsl:variable>
672
+ <xsl:message>Warning: <xsl:value-of select="$fqgi"/> not matched.</xsl:message>
673
+ <xsl:element name="div">
674
+ <xsl:attribute name="class">warning</xsl:attribute>
675
+ <xsl:value-of select="concat('&lt;',name(),'>')"/>
676
+ <xsl:copy>
677
+ <xsl:apply-templates select="@*|node()"/>
678
+ </xsl:copy>
679
+ <xsl:value-of select="concat('&lt;/',name(),'>')"/>
680
+ </xsl:element>
681
+ </xsl:template>
682
+
683
+ <xsl:template name="fqgi" match="*" mode="fqgi">
684
+ <xsl:param name="sBuf"/>
685
+ <xsl:variable name="sCur">
686
+ <xsl:choose>
687
+ <xsl:when test="self::*">
688
+ <!--* elements *-->
689
+ <xsl:value-of select="name()"/>
690
+ </xsl:when>
691
+ <xsl:otherwise>
692
+ <!--* attributes and other riffraff *-->
693
+ <xsl:value-of select="concat('@',name())"/>
694
+ </xsl:otherwise>
695
+ </xsl:choose>
696
+ </xsl:variable>
697
+ <!--*
698
+ <xsl:message>FQGI(<xsl:value-of select="concat($sBuf,',',$sCur)"/>)</xsl:message>
699
+ *-->
700
+ <xsl:choose>
701
+ <xsl:when test="parent::*">
702
+ <xsl:apply-templates mode="fqgi" select="parent::*">
703
+ <xsl:with-param name="sBuf">
704
+ <xsl:value-of select="concat('/',$sCur,$sBuf)"/>
705
+ </xsl:with-param>
706
+ </xsl:apply-templates>
707
+ </xsl:when>
708
+ <xsl:otherwise>
709
+ <xsl:value-of select="concat('/',$sCur,$sBuf)"/>
710
+ </xsl:otherwise>
711
+ </xsl:choose>
712
+ </xsl:template>
713
+
714
+
715
+ <!--* 9 intra-document link calculation, qname manipulation *-->
716
+ <xsl:template name="makelink-several-maybe">
717
+ <xsl:param name="lQNames" select="normalize-space(.)"/>
718
+ <xsl:choose>
719
+ <xsl:when test="contains($lQNames,' ')">
720
+ <!--* recur *-->
721
+ <xsl:call-template name="makelink-maybe">
722
+ <xsl:with-param name="qn" select="substring-before($lQNames,' ')"/>
723
+ </xsl:call-template>
724
+ <xsl:text> </xsl:text>
725
+ <xsl:call-template name="makelink-several-maybe">
726
+ <xsl:with-param name="lQNames" select="substring-after($lQNames,' ')"/>
727
+ </xsl:call-template>
728
+ </xsl:when>
729
+ <xsl:otherwise>
730
+ <!--* base step, no blank so at most one QName *-->
731
+ <xsl:call-template name="makelink-maybe">
732
+ <xsl:with-param name="qn" select="$lQNames"/>
733
+ </xsl:call-template>
734
+ </xsl:otherwise>
735
+ </xsl:choose>
736
+ </xsl:template>
737
+
738
+ <xsl:template name="makelink-maybe">
739
+ <xsl:param name="qn" select="."/>
740
+ <xsl:param name="refns">
741
+ <xsl:call-template name="qname-to-uri">
742
+ <xsl:with-param name="qname" select="$qn"/>
743
+ </xsl:call-template>
744
+ </xsl:param>
745
+ <xsl:param name="lname">
746
+ <xsl:call-template name="qname-to-ncname">
747
+ <xsl:with-param name="qname" select="$qn"/>
748
+ </xsl:call-template>
749
+ </xsl:param>
750
+
751
+ <xsl:variable name="linktarget">
752
+ <xsl:choose>
753
+ <xsl:when test="$tns = $refns">
754
+ <xsl:choose>
755
+ <xsl:when test="parent::xsd:element
756
+ and local-name() = 'ref'
757
+ and count(/xsd:schema/xsd:element[@name = $lname]) = 1">
758
+ <xsl:value-of select="concat('elem_',$lname)"/>
759
+ </xsl:when>
760
+ <xsl:when test="parent::xsd:element
761
+ and local-name() = 'substitutionGroup'
762
+ and count(/xsd:schema/xsd:element[@name = $lname]) = 1">
763
+ <xsl:value-of select="concat('elem_',$lname)"/>
764
+ </xsl:when>
765
+ <xsl:when test="parent::xsd:attribute
766
+ and local-name() = 'ref'
767
+ and count(/xsd:schema/xsd:attribute[@name = $lname]) = 1">
768
+ <xsl:value-of select="concat('att_',$lname)"/>
769
+ </xsl:when>
770
+ <xsl:when test="parent::xsd:restriction
771
+ and count(/xsd:schema/xsd:*[@name = $lname
772
+ and (self::xsd:simpleType or self::xsd:complexType)])
773
+ = 1">
774
+ <xsl:value-of select="concat('type_',$lname)"/>
775
+ </xsl:when>
776
+ <xsl:when test="parent::xsd:extension
777
+ and count(/xsd:schema/xsd:*[@name = $lname
778
+ and (self::xsd:simpleType or self::xsd:complexType)])
779
+ = 1">
780
+ <xsl:value-of select="concat('type_',$lname)"/>
781
+ </xsl:when>
782
+ <xsl:when test="parent::xsd:element
783
+ and local-name() = 'type'
784
+ and count(/xsd:schema/xsd:*[@name = $lname
785
+ and (self::xsd:simpleType or self::xsd:complexType)])
786
+ = 1">
787
+ <xsl:value-of select="concat('type_',$lname)"/>
788
+ </xsl:when>
789
+ <xsl:when test="parent::xsd:attribute
790
+ and local-name() = 'type'
791
+ and count(/xsd:schema/xsd:*[@name = $lname
792
+ and (self::xsd:simpleType or self::xsd:complexType)])
793
+ = 1">
794
+ <xsl:value-of select="concat('type_',$lname)"/>
795
+ </xsl:when>
796
+ <xsl:when test="parent::xsd:list
797
+ and count(/xsd:schema/xsd:*[@name = $lname
798
+ and (self::xsd:simpleType or self::xsd:complexType)])
799
+ = 1">
800
+ <xsl:value-of select="concat('type_',$lname)"/>
801
+ </xsl:when>
802
+ <xsl:when test="parent::xsd:union
803
+ and count(/xsd:schema/xsd:*[@name = $lname
804
+ and (self::xsd:simpleType or self::xsd:complexType)])
805
+ = 1">
806
+ <xsl:value-of select="concat('type_',$lname)"/>
807
+ </xsl:when>
808
+ <xsl:when test="parent::xsd:group
809
+ and count(/xsd:schema/xsd:group[@name = $lname]) = 1">
810
+ <xsl:value-of select="concat('grp_',$lname)"/>
811
+ </xsl:when>
812
+ <xsl:when test="parent::xsd:attributeGroup
813
+ and count(/xsd:schema/xsd:atributeGroup[@name = $lname]) = 1">
814
+ <xsl:value-of select="concat('attgrp_',$lname)"/>
815
+ </xsl:when>
816
+ <!--* static links to built-ins could be handled here *-->
817
+ </xsl:choose>
818
+ </xsl:when>
819
+ <xsl:when test="count(ancestor::*/namespace::*) = 0">
820
+ <!--* we are either in a no-namespace document in Opera,
821
+ * or we are in Firefox, without ns support.
822
+ *-->
823
+ <xsl:value-of select="'no-ns-support'"/>
824
+ </xsl:when>
825
+ <xsl:otherwise>
826
+ <!--* namespaces did not match, no target *-->
827
+ <xsl:value-of select="'no-target'"/>
828
+ </xsl:otherwise>
829
+ </xsl:choose>
830
+ </xsl:variable>
831
+
832
+ <xsl:choose>
833
+ <xsl:when test="($linktarget='no-ns-support')">
834
+ <xsl:value-of select="$qn"/>
835
+ </xsl:when>
836
+ <xsl:when test="($linktarget='no-target' or $linktarget='')
837
+ and ($tns = $refns)">
838
+ <xsl:element name="span">
839
+ <xsl:attribute name="class">external-link same-ns</xsl:attribute>
840
+ <xsl:value-of select="$qn"/>
841
+ </xsl:element>
842
+ </xsl:when>
843
+ <xsl:when test="($linktarget='no-target')
844
+ and not($tns = $refns)">
845
+ <xsl:element name="span">
846
+ <xsl:attribute name="class">external-link diff-ns</xsl:attribute>
847
+ <xsl:value-of select="$qn"/>
848
+ </xsl:element>
849
+ </xsl:when>
850
+ <xsl:otherwise>
851
+ <xsl:element name="a">
852
+ <xsl:attribute name="href">
853
+ <xsl:value-of select="concat('#',$linktarget)"/>
854
+ </xsl:attribute>
855
+ <xsl:value-of select="$qn"/>
856
+ </xsl:element>
857
+ </xsl:otherwise>
858
+ </xsl:choose>
859
+ </xsl:template>
860
+
861
+ <xsl:template name="qname-to-uri" match="*" mode="qname-to-uri">
862
+ <xsl:param name="qname" select="."/>
863
+ <xsl:variable name="prefix" select="substring-before($qname,':')"/>
864
+ <xsl:choose>
865
+ <xsl:when test="(1=1) and ($prefix='xml')">
866
+ <!--* we need to special-case 'xml', since
867
+ * Opera does not provide a ns node for it.
868
+ *-->
869
+ <xsl:value-of select="'http://www.w3.org/XML/1998/namespace'"/>
870
+ </xsl:when>
871
+ <xsl:when test="self::*">
872
+ <!--* we're an element *-->
873
+ <xsl:value-of select="string(namespace::*[name()=$prefix])"/>
874
+ </xsl:when>
875
+ <xsl:otherwise>
876
+ <!--* we're not an element *-->
877
+ <xsl:value-of select="string(parent::*/namespace::*[name()=$prefix])"/>
878
+ </xsl:otherwise>
879
+ </xsl:choose>
880
+ </xsl:template>
881
+ <xsl:template name="qname-to-ncname">
882
+ <xsl:param name="qname" select="."/>
883
+ <xsl:choose>
884
+ <xsl:when test="contains($qname,':')">
885
+ <xsl:value-of select="substring-after($qname,':')"/>
886
+ </xsl:when>
887
+ <xsl:otherwise>
888
+ <xsl:value-of select="$qname"/>
889
+ </xsl:otherwise>
890
+ </xsl:choose>
891
+ </xsl:template>
892
+
893
+ <xsl:template name="lastline-suffix">
894
+ <xsl:param name="s0"></xsl:param>
895
+ <xsl:choose>
896
+ <xsl:when test="contains($s0,'&#xA;')">
897
+ <xsl:call-template name="lastline-suffix">
898
+ <xsl:with-param name="s0" select="substring-after($s0,'&#xA;')"/>
899
+ </xsl:call-template>
900
+ </xsl:when>
901
+ <xsl:otherwise>
902
+ <xsl:value-of select="$s0"/>
903
+ </xsl:otherwise>
904
+ </xsl:choose>
905
+ </xsl:template>
906
+
907
+
908
+ <xsl:template name="stag-width">
909
+ <xsl:param name="indent-length" select="0"/>
910
+
911
+ <xsl:variable name="attcount" select="count(@*)"/>
912
+ <xsl:variable name="list-attname-lengths">
913
+ <xsl:call-template name="make-length-list">
914
+ <xsl:with-param name="kw">attnames</xsl:with-param>
915
+ </xsl:call-template>
916
+ </xsl:variable>
917
+
918
+ <xsl:variable name="list-attval-lengths">
919
+ <xsl:call-template name="make-length-list">
920
+ <xsl:with-param name="kw">attvals</xsl:with-param>
921
+ </xsl:call-template>
922
+ </xsl:variable>
923
+
924
+ <xsl:variable name="sum-att-lengths">
925
+ <xsl:call-template name="sum-list">
926
+ <xsl:with-param name="s0" select="concat($list-attname-lengths,' ',$list-attval-lengths)"/>
927
+ </xsl:call-template>
928
+ </xsl:variable>
929
+
930
+ <!--*
931
+ <xsl:message>indent-length = <xsl:value-of select="$indent-length"/></xsl:message>
932
+ <xsl:message>attcount = <xsl:value-of select="$attcount"/></xsl:message>
933
+ <xsl:message>sum-att-lengths = <xsl:value-of select="$sum-att-lengths"/></xsl:message>
934
+ <xsl:message>namelen = <xsl:value-of select="string-length(name())"/></xsl:message>
935
+ *-->
936
+
937
+ <xsl:value-of select="$indent-length + (4 * $attcount) + $sum-att-lengths + string-length(name()) + 3"/>
938
+
939
+ </xsl:template>
940
+
941
+
942
+ <xsl:template name="make-length-list">
943
+ <xsl:param name="kw">unknown</xsl:param>
944
+ <xsl:choose>
945
+ <xsl:when test="$kw = 'attnames'">
946
+ <xsl:apply-templates select="@*" mode="attnamelength"/>
947
+ </xsl:when>
948
+ <xsl:when test="$kw = 'attvals'">
949
+ <xsl:apply-templates select="@*" mode="attvallength"/>
950
+ </xsl:when>
951
+ <xsl:otherwise>0</xsl:otherwise>
952
+ </xsl:choose>
953
+ </xsl:template>
954
+
955
+ <xsl:template name="sum-list">
956
+ <xsl:param name="n0" select="0"/>
957
+ <xsl:param name="s0"/>
958
+
959
+ <xsl:variable name="s1" select="normalize-space($s0)"/>
960
+
961
+ <!--*
962
+ <xsl:message><xsl:value-of select="concat('n0 =', $n0, ', s1 = /',$s1,'/')"/></xsl:message>
963
+ *-->
964
+
965
+ <xsl:choose>
966
+ <xsl:when test="contains($s1,' ')">
967
+ <xsl:variable name="term" select="substring-before($s1,' ')"/>
968
+ <xsl:variable name="s2" select="substring-after($s1,' ')"/>
969
+ <xsl:call-template name="sum-list">
970
+ <xsl:with-param name="n0" select="$n0 + $term"/>
971
+ <xsl:with-param name="s0" select="$s2"/>
972
+ </xsl:call-template>
973
+ </xsl:when>
974
+ <xsl:otherwise>
975
+ <xsl:value-of select="$n0 + $s1"/>
976
+ </xsl:otherwise>
977
+ </xsl:choose>
978
+ </xsl:template>
979
+
980
+ <xsl:template match="@*" mode="attnamelength">
981
+ <xsl:value-of select="concat(string-length(name()), ' ')"/>
982
+ </xsl:template>
983
+ <xsl:template match="@*" mode="attvallength">
984
+ <xsl:value-of select="concat(string-length(.), ' ')"/>
985
+ </xsl:template>
986
+
987
+ </xsl:stylesheet>
988
+ <!-- Keep this comment at the end of the file
989
+ Local variables:
990
+ mode: xml
991
+ sgml-default-dtd-file:"/Library/SGML/Public/Emacs/xslt.ced"
992
+ sgml-omittag:t
993
+ sgml-shorttag:t
994
+ sgml-indent-data:t
995
+ sgml-indent-step:1
996
+ End:
997
+ -->