csl 1.0.0.pre1 → 1.0.0.pre2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,1750 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <grammar xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:bibo="http://purl.org/ontology/bibo/" xmlns:sch="http://www.ascc.net/xml/schematron" xmlns:cs="http://purl.org/net/xbiblio/csl" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3
+ <!-- CSL schema metadata -->
4
+ <dc:title>Citation Style Language</dc:title>
5
+ <dc:creator>Bruce D'Arcus</dc:creator>
6
+ <dc:creator>Simon Kornblith</dc:creator>
7
+ <bibo:editor>Frank Bennett</bibo:editor>
8
+ <bibo:editor>Rintze Zelle</bibo:editor>
9
+ <dc:rights>Copyright 2007-2012 by Frank Bennett, Bruce D'Arcus, Simon Kornblith, and Rintze Zelle. Permission to freely use, copy and distribute.</dc:rights>
10
+ <dc:description>RELAX NG compact schema for the Citation Style Language (CSL).</dc:description>
11
+ <!-- Embedded Schematron rules to detect calls to nonexistent macros -->
12
+ <sch:ns uri="http://purl.org/net/xbiblio/csl" prefix="cs"/>
13
+ <sch:pattern name="Non-existing macros">
14
+ <sch:rule context="//cs:text[@macro]">
15
+ <sch:assert test="@macro = /cs:style/cs:macro/@name">This macro call has no corresponding macro.</sch:assert>
16
+ </sch:rule>
17
+ <sch:rule context="//cs:key[@macro]">
18
+ <sch:assert test="@macro = /cs:style/cs:macro/@name">This macro call has no corresponding macro.</sch:assert>
19
+ </sch:rule>
20
+ </sch:pattern>
21
+ <include href="csl-terms.rng">
22
+ <a:documentation>Subparts of the CSL schema</a:documentation>
23
+ </include>
24
+ <include href="csl-types.rng"/>
25
+ <include href="csl-variables.rng"/>
26
+ <include href="csl-categories.rng"/>
27
+ <div>
28
+ <a:documentation>
29
+ <xhtml:h2>cs:style and cs:locale - Root Elements</xhtml:h2>
30
+ </a:documentation>
31
+ <start>
32
+ <choice>
33
+ <ref name="independent-style.style"/>
34
+ <ref name="dependent-style.style"/>
35
+ <ref name="locale-file.locale"/>
36
+ </choice>
37
+ </start>
38
+ <define name="independent-style.style">
39
+ <element name="cs:style">
40
+ <attribute name="class">
41
+ <a:documentation>Select whether citations appear in-text or as notes.</a:documentation>
42
+ <choice>
43
+ <value>in-text</value>
44
+ <value>note</value>
45
+ </choice>
46
+ </attribute>
47
+ <ref name="style.default-locale"/>
48
+ <ref name="style.options"/>
49
+ <ref name="version"/>
50
+ <ref name="independent-style.style.info"/>
51
+ <optional>
52
+ <interleave>
53
+ <zeroOrMore>
54
+ <ref name="style.locale"/>
55
+ </zeroOrMore>
56
+ <zeroOrMore>
57
+ <ref name="style.macro"/>
58
+ </zeroOrMore>
59
+ <ref name="style.citation"/>
60
+ <optional>
61
+ <ref name="style.bibliography"/>
62
+ </optional>
63
+ </interleave>
64
+ </optional>
65
+ </element>
66
+ </define>
67
+ <define name="dependent-style.style">
68
+ <element name="cs:style">
69
+ <ref name="style.default-locale"/>
70
+ <ref name="version"/>
71
+ <ref name="dependent-style.style.info"/>
72
+ <ref name="dependent-style.style.legacy-attributes"/>
73
+ </element>
74
+ </define>
75
+ <define name="locale-file.locale">
76
+ <element name="cs:locale">
77
+ <attribute name="xml:lang">
78
+ <a:documentation>Specify the locale of the locale file.</a:documentation>
79
+ <data type="language"/>
80
+ </attribute>
81
+ <ref name="version"/>
82
+ <optional>
83
+ <ref name="locale-file.locale.info"/>
84
+ </optional>
85
+ <interleave>
86
+ <ref name="locale.style-options"/>
87
+ <oneOrMore>
88
+ <ref name="locale.date"/>
89
+ </oneOrMore>
90
+ <ref name="locale.terms"/>
91
+ </interleave>
92
+ </element>
93
+ </define>
94
+ <define name="style.default-locale">
95
+ <optional>
96
+ <attribute name="default-locale">
97
+ <a:documentation>Set a default style locale.</a:documentation>
98
+ <data type="language"/>
99
+ </attribute>
100
+ </optional>
101
+ </define>
102
+ <define name="version">
103
+ <attribute name="version" a:defaultValue="1.0">
104
+ <a:documentation>Indicate CSL version compatibility ("1.0" for CSL 1.0).</a:documentation>
105
+ <value>1.0</value>
106
+ </attribute>
107
+ </define>
108
+ <define name="dependent-style.style.legacy-attributes">
109
+ <a:documentation>Obsolete for dependent styles. Will be disallowed with CSL 1.1.</a:documentation>
110
+ <optional>
111
+ <attribute name="class">
112
+ <choice>
113
+ <value>in-text</value>
114
+ <value>note</value>
115
+ </choice>
116
+ </attribute>
117
+ </optional>
118
+ <ref name="style.options"/>
119
+ </define>
120
+ </div>
121
+ <div>
122
+ <a:documentation>
123
+ <xhtml:h2>cs:info - Style and Locale File Metadata</xhtml:h2>
124
+ </a:documentation>
125
+ <define name="independent-style.style.info">
126
+ <a:documentation>Metadata for independent styles.</a:documentation>
127
+ <element name="cs:info">
128
+ <interleave>
129
+ <zeroOrMore>
130
+ <ref name="info.author"/>
131
+ </zeroOrMore>
132
+ <zeroOrMore>
133
+ <ref name="info.category"/>
134
+ </zeroOrMore>
135
+ <zeroOrMore>
136
+ <ref name="info.contributor"/>
137
+ </zeroOrMore>
138
+ <ref name="info.id"/>
139
+ <zeroOrMore>
140
+ <ref name="info.issn"/>
141
+ </zeroOrMore>
142
+ <optional>
143
+ <ref name="info.eissn"/>
144
+ </optional>
145
+ <optional>
146
+ <ref name="info.issnl"/>
147
+ </optional>
148
+ <zeroOrMore>
149
+ <ref name="independent-style.info.link"/>
150
+ </zeroOrMore>
151
+ <optional>
152
+ <ref name="info.published"/>
153
+ </optional>
154
+ <optional>
155
+ <ref name="info.rights"/>
156
+ </optional>
157
+ <optional>
158
+ <ref name="info.summary"/>
159
+ </optional>
160
+ <ref name="info.title"/>
161
+ <optional>
162
+ <ref name="info.title-short"/>
163
+ </optional>
164
+ <ref name="info.updated"/>
165
+ </interleave>
166
+ </element>
167
+ </define>
168
+ <define name="dependent-style.style.info">
169
+ <a:documentation>Metadata for dependent styles.</a:documentation>
170
+ <element name="cs:info">
171
+ <interleave>
172
+ <zeroOrMore>
173
+ <ref name="info.author"/>
174
+ </zeroOrMore>
175
+ <zeroOrMore>
176
+ <ref name="info.category"/>
177
+ </zeroOrMore>
178
+ <zeroOrMore>
179
+ <ref name="info.contributor"/>
180
+ </zeroOrMore>
181
+ <ref name="info.id"/>
182
+ <zeroOrMore>
183
+ <ref name="info.issn"/>
184
+ </zeroOrMore>
185
+ <optional>
186
+ <ref name="info.eissn"/>
187
+ </optional>
188
+ <optional>
189
+ <ref name="info.issnl"/>
190
+ </optional>
191
+ <oneOrMore>
192
+ <ref name="dependent-style.info.link"/>
193
+ </oneOrMore>
194
+ <optional>
195
+ <ref name="info.published"/>
196
+ </optional>
197
+ <optional>
198
+ <ref name="info.rights"/>
199
+ </optional>
200
+ <optional>
201
+ <ref name="info.summary"/>
202
+ </optional>
203
+ <ref name="info.title"/>
204
+ <optional>
205
+ <ref name="info.title-short"/>
206
+ </optional>
207
+ <ref name="info.updated"/>
208
+ </interleave>
209
+ </element>
210
+ </define>
211
+ <define name="locale-file.locale.info">
212
+ <a:documentation>Metadata for locale files.</a:documentation>
213
+ <element name="cs:info">
214
+ <interleave>
215
+ <zeroOrMore>
216
+ <ref name="info.translator"/>
217
+ </zeroOrMore>
218
+ <optional>
219
+ <ref name="info.rights"/>
220
+ </optional>
221
+ <optional>
222
+ <ref name="info.updated"/>
223
+ </optional>
224
+ </interleave>
225
+ </element>
226
+ </define>
227
+ <define name="info.author">
228
+ <element name="cs:author">
229
+ <ref name="personal-details"/>
230
+ </element>
231
+ </define>
232
+ <define name="info.contributor">
233
+ <element name="cs:contributor">
234
+ <ref name="personal-details"/>
235
+ </element>
236
+ </define>
237
+ <define name="info.translator">
238
+ <element name="cs:translator">
239
+ <ref name="personal-details"/>
240
+ </element>
241
+ </define>
242
+ <define name="personal-details">
243
+ <interleave>
244
+ <element name="cs:name">
245
+ <text/>
246
+ </element>
247
+ <optional>
248
+ <element name="cs:email">
249
+ <text/>
250
+ </element>
251
+ </optional>
252
+ <optional>
253
+ <element name="cs:uri">
254
+ <data type="anyURI"/>
255
+ </element>
256
+ </optional>
257
+ </interleave>
258
+ </define>
259
+ <define name="info.category">
260
+ <element name="cs:category">
261
+ <a:documentation>Specify the citation format of the style (using the "citation-format"
262
+ attribute) or the fields and disciplines for which the style is
263
+ relevant (using the "field" attribute).</a:documentation>
264
+ <choice>
265
+ <attribute name="citation-format">
266
+ <ref name="category.citation-format"/>
267
+ </attribute>
268
+ <attribute name="field">
269
+ <ref name="category.field"/>
270
+ </attribute>
271
+ </choice>
272
+ </element>
273
+ </define>
274
+ <define name="info.id">
275
+ <element name="cs:id">
276
+ <a:documentation>Specify the URI to establish the identity of the style. The URI
277
+ should be stable, unique and dereferenceable URI.</a:documentation>
278
+ <data type="anyURI"/>
279
+ </element>
280
+ </define>
281
+ <define name="info.issn">
282
+ <element name="cs:issn">
283
+ <a:documentation>Specify the journal's ISSN(s) for journal-specific styles. An ISSN
284
+ must consist of four digits, a hyphen, three digits, and a check
285
+ digit (a numeral digit or roman X), e.g. "1234-1231".</a:documentation>
286
+ <ref name="issn"/>
287
+ </element>
288
+ </define>
289
+ <define name="info.eissn">
290
+ <element name="cs:eissn">
291
+ <a:documentation>Specify the journal's eISSN for journal-specific styles.</a:documentation>
292
+ <ref name="issn"/>
293
+ </element>
294
+ </define>
295
+ <define name="info.issnl">
296
+ <element name="cs:issnl">
297
+ <a:documentation>Specify the journal's ISSN-L for journal-specific styles.</a:documentation>
298
+ <ref name="issn"/>
299
+ </element>
300
+ </define>
301
+ <define name="issn">
302
+ <data type="string">
303
+ <param name="pattern">\d{4}\-\d{3}(\d|x|X)</param>
304
+ </data>
305
+ </define>
306
+ <define name="independent-style.info.link">
307
+ <element name="cs:link">
308
+ <attribute name="href">
309
+ <data type="anyURI"/>
310
+ </attribute>
311
+ <attribute name="rel">
312
+ <a:documentation>Specify how the URL relates to the style.</a:documentation>
313
+ <choice>
314
+ <value>self</value>
315
+ <a:documentation>The URI of the CSL style itself.</a:documentation>
316
+ <value>template</value>
317
+ <a:documentation>URI of the style from which the current style is derived.</a:documentation>
318
+ <value>documentation</value>
319
+ <a:documentation>URI of style documentation.</a:documentation>
320
+ <value>independent-parent</value>
321
+ <a:documentation>Obsolete for independent styles. Will be disallowed with
322
+ CSL 1.1.</a:documentation>
323
+ </choice>
324
+ </attribute>
325
+ <ref name="info-text"/>
326
+ </element>
327
+ </define>
328
+ <define name="dependent-style.info.link">
329
+ <element name="cs:link">
330
+ <attribute name="href">
331
+ <data type="anyURI"/>
332
+ </attribute>
333
+ <attribute name="rel">
334
+ <a:documentation>Specify how the URL relates to the style.</a:documentation>
335
+ <choice>
336
+ <value>self</value>
337
+ <a:documentation>The URI of the CSL style itself.</a:documentation>
338
+ <value>independent-parent</value>
339
+ <a:documentation>URI of the CSL style whose content should be used for
340
+ processing. Required for dependent styles.</a:documentation>
341
+ <value>documentation</value>
342
+ <a:documentation>URI of style documentation.</a:documentation>
343
+ <value>template</value>
344
+ <a:documentation>Obsolete for dependent styles. Will be disallowed with CSL
345
+ 1.1.</a:documentation>
346
+ </choice>
347
+ </attribute>
348
+ <ref name="info-text"/>
349
+ </element>
350
+ </define>
351
+ <define name="info.published">
352
+ <element name="cs:published">
353
+ <a:documentation>Specify when the style was initially created or made available.</a:documentation>
354
+ <data type="dateTime"/>
355
+ </element>
356
+ </define>
357
+ <define name="info.rights">
358
+ <element name="cs:rights">
359
+ <optional>
360
+ <attribute name="license">
361
+ <data type="anyURI"/>
362
+ </attribute>
363
+ </optional>
364
+ <ref name="info-text"/>
365
+ </element>
366
+ </define>
367
+ <define name="info.summary">
368
+ <element name="cs:summary">
369
+ <ref name="info-text"/>
370
+ </element>
371
+ </define>
372
+ <define name="info.title">
373
+ <element name="cs:title">
374
+ <ref name="info-text"/>
375
+ </element>
376
+ </define>
377
+ <define name="info.title-short">
378
+ <element name="cs:title-short">
379
+ <a:documentation>Specify an abbreviated style title (e.g., "APA")</a:documentation>
380
+ <ref name="info-text"/>
381
+ </element>
382
+ </define>
383
+ <define name="info.updated">
384
+ <element name="cs:updated">
385
+ <a:documentation>Specify when the style was last updated (e.g.,
386
+ "2007-10-26T21:32:52+02:00")</a:documentation>
387
+ <data type="dateTime"/>
388
+ </element>
389
+ </define>
390
+ <define name="info-text">
391
+ <optional>
392
+ <attribute name="xml:lang">
393
+ <data type="language"/>
394
+ </attribute>
395
+ </optional>
396
+ <text/>
397
+ </define>
398
+ </div>
399
+ <div>
400
+ <a:documentation>
401
+ <xhtml:h2>cs:locale in Independent Styles</xhtml:h2>
402
+ </a:documentation>
403
+ <define name="style.locale">
404
+ <element name="cs:locale">
405
+ <a:documentation>Use to (re)define localized terms, dates and options.</a:documentation>
406
+ <optional>
407
+ <attribute name="xml:lang">
408
+ <a:documentation>Specify the affected locale(s). If "xml:lang" is not set, the
409
+ "cs:locale" element affects all locales.</a:documentation>
410
+ <data type="language"/>
411
+ </attribute>
412
+ </optional>
413
+ <interleave>
414
+ <optional>
415
+ <ref name="locale.style-options"/>
416
+ </optional>
417
+ <zeroOrMore>
418
+ <ref name="locale.date"/>
419
+ </zeroOrMore>
420
+ <optional>
421
+ <ref name="locale.terms"/>
422
+ </optional>
423
+ </interleave>
424
+ </element>
425
+ </define>
426
+ </div>
427
+ <div>
428
+ <a:documentation>
429
+ <xhtml:h2>cs:locale Contents - Localization Data</xhtml:h2>
430
+ </a:documentation>
431
+ <define name="locale.style-options">
432
+ <a:documentation>Localized global options are specified as attributes in the
433
+ cs:style-options element. If future versions of CSL include localized
434
+ options that are citation or bibliography specific, the elements
435
+ cs:citation-options and cs:bibliography-options can be added.</a:documentation>
436
+ <element name="cs:style-options">
437
+ <optional>
438
+ <attribute name="punctuation-in-quote" a:defaultValue="false">
439
+ <a:documentation>Specify whether punctuation (a period or comma) is placed within
440
+ or outside (default) the closing quotation mark.</a:documentation>
441
+ <data type="boolean"/>
442
+ </attribute>
443
+ </optional>
444
+ </element>
445
+ </define>
446
+ <define name="locale.date">
447
+ <element name="cs:date">
448
+ <ref name="date.form"/>
449
+ <ref name="delimiter"/>
450
+ <ref name="font-formatting"/>
451
+ <ref name="text-case"/>
452
+ <oneOrMore>
453
+ <ref name="locale.date.date-part"/>
454
+ </oneOrMore>
455
+ </element>
456
+ </define>
457
+ <define name="date.form">
458
+ <attribute name="form">
459
+ <a:documentation>Select the localized date format ("text" or "numeric").</a:documentation>
460
+ <choice>
461
+ <value>text</value>
462
+ <a:documentation>Text date form (e.g., "December 15, 2005").</a:documentation>
463
+ <value>numeric</value>
464
+ <a:documentation>Numeric date form (e.g., "2005-12-15").</a:documentation>
465
+ </choice>
466
+ </attribute>
467
+ </define>
468
+ <define name="locale.date.date-part">
469
+ <element name="cs:date-part">
470
+ <ref name="affixes"/>
471
+ <ref name="font-formatting"/>
472
+ <ref name="text-case"/>
473
+ <choice>
474
+ <ref name="day"/>
475
+ <ref name="month"/>
476
+ <ref name="year"/>
477
+ </choice>
478
+ </element>
479
+ </define>
480
+ <define name="locale.terms">
481
+ <element name="cs:terms">
482
+ <oneOrMore>
483
+ <ref name="terms.term"/>
484
+ </oneOrMore>
485
+ </element>
486
+ </define>
487
+ <define name="terms.term">
488
+ <a:documentation>The "cs:term" element can either hold a basic string, or "cs:single" and
489
+ "cs:multiple" child elements to give singular and plural forms of the term.</a:documentation>
490
+ <element name="cs:term">
491
+ <ref name="term.attributes"/>
492
+ <choice>
493
+ <text/>
494
+ <group>
495
+ <ref name="term.single"/>
496
+ <ref name="term.multiple"/>
497
+ </group>
498
+ </choice>
499
+ </element>
500
+ </define>
501
+ <define name="term.attributes">
502
+ <choice>
503
+ <group>
504
+ <attribute name="name">
505
+ <ref name="terms"/>
506
+ </attribute>
507
+ <optional>
508
+ <attribute name="form" a:defaultValue="long">
509
+ <ref name="term.form"/>
510
+ </attribute>
511
+ </optional>
512
+ </group>
513
+ <group>
514
+ <attribute name="name">
515
+ <ref name="terms.gender-variants"/>
516
+ </attribute>
517
+ <optional>
518
+ <attribute name="form">
519
+ <value>long</value>
520
+ </attribute>
521
+ </optional>
522
+ <attribute name="gender-form">
523
+ <choice>
524
+ <value>masculine</value>
525
+ <value>feminine</value>
526
+ </choice>
527
+ </attribute>
528
+ </group>
529
+ <group>
530
+ <attribute name="name">
531
+ <ref name="terms.gender-assignable"/>
532
+ </attribute>
533
+ <optional>
534
+ <attribute name="form">
535
+ <value>long</value>
536
+ </attribute>
537
+ </optional>
538
+ <attribute name="gender">
539
+ <choice>
540
+ <value>masculine</value>
541
+ <value>feminine</value>
542
+ </choice>
543
+ </attribute>
544
+ </group>
545
+ </choice>
546
+ </define>
547
+ <define name="term.form">
548
+ <a:documentation>"verb-short" reverts to "verb" if the "verb-short" form is not available.
549
+ "symbol" reverts to "short" if the "symbol" form is not available.
550
+ "verb" and "short" revert to "long" if the specified form is not available.</a:documentation>
551
+ <choice>
552
+ <value>long</value>
553
+ <value>verb</value>
554
+ <value>short</value>
555
+ <value>verb-short</value>
556
+ <value>symbol</value>
557
+ </choice>
558
+ </define>
559
+ <define name="term.single">
560
+ <element name="cs:single">
561
+ <a:documentation>Singular version of the term.</a:documentation>
562
+ <text/>
563
+ </element>
564
+ </define>
565
+ <define name="term.multiple">
566
+ <element name="cs:multiple">
567
+ <a:documentation>Plural version of the term.</a:documentation>
568
+ <text/>
569
+ </element>
570
+ </define>
571
+ </div>
572
+ <div>
573
+ <a:documentation>
574
+ <xhtml:h2>cs:macro</xhtml:h2>
575
+ </a:documentation>
576
+ <define name="style.macro">
577
+ <element name="cs:macro">
578
+ <a:documentation>Use to create collections of (reusable) formatting instructions.</a:documentation>
579
+ <attribute name="name">
580
+ <data type="NMTOKEN"/>
581
+ </attribute>
582
+ <oneOrMore>
583
+ <ref name="rendering-element"/>
584
+ </oneOrMore>
585
+ </element>
586
+ </define>
587
+ <define name="rendering-element">
588
+ <choice>
589
+ <ref name="rendering-element.names"/>
590
+ <ref name="rendering-element.date"/>
591
+ <ref name="rendering-element.label"/>
592
+ <ref name="rendering-element.text"/>
593
+ <ref name="rendering-element.number"/>
594
+ <ref name="rendering-element.choose"/>
595
+ <ref name="rendering-element.group"/>
596
+ </choice>
597
+ </define>
598
+ </div>
599
+ <div>
600
+ <a:documentation>
601
+ <xhtml:h2>cs:citation and cs:bibliography</xhtml:h2>
602
+ </a:documentation>
603
+ <define name="style.citation">
604
+ <element name="cs:citation">
605
+ <a:documentation>Use to describe the formatting of citations.</a:documentation>
606
+ <ref name="citation.options"/>
607
+ <optional>
608
+ <ref name="sort"/>
609
+ </optional>
610
+ <ref name="citation.layout"/>
611
+ </element>
612
+ </define>
613
+ <define name="style.bibliography">
614
+ <element name="cs:bibliography">
615
+ <a:documentation>Use to describe the formatting of the bibliography.</a:documentation>
616
+ <ref name="bibliography.options"/>
617
+ <optional>
618
+ <ref name="sort"/>
619
+ </optional>
620
+ <ref name="bibliography.layout"/>
621
+ </element>
622
+ </define>
623
+ <define name="citation.layout">
624
+ <element name="cs:layout">
625
+ <ref name="affixes"/>
626
+ <ref name="delimiter"/>
627
+ <ref name="font-formatting"/>
628
+ <oneOrMore>
629
+ <ref name="rendering-element"/>
630
+ </oneOrMore>
631
+ </element>
632
+ </define>
633
+ <define name="bibliography.layout">
634
+ <element name="cs:layout">
635
+ <ref name="affixes"/>
636
+ <ref name="font-formatting"/>
637
+ <oneOrMore>
638
+ <ref name="rendering-element"/>
639
+ </oneOrMore>
640
+ </element>
641
+ </define>
642
+ </div>
643
+ <div>
644
+ <a:documentation>
645
+ <xhtml:h2>cs:names Rendering Element</xhtml:h2>
646
+ </a:documentation>
647
+ <define name="rendering-element.names">
648
+ <element name="cs:names">
649
+ <ref name="names.attributes"/>
650
+ <interleave>
651
+ <group>
652
+ <optional>
653
+ <ref name="names.name"/>
654
+ </optional>
655
+ <optional>
656
+ <ref name="names.et-al"/>
657
+ </optional>
658
+ </group>
659
+ <zeroOrMore>
660
+ <ref name="names.label"/>
661
+ </zeroOrMore>
662
+ </interleave>
663
+ <optional>
664
+ <ref name="names.substitute"/>
665
+ </optional>
666
+ </element>
667
+ </define>
668
+ <define name="names.attributes">
669
+ <attribute name="variable">
670
+ <list>
671
+ <oneOrMore>
672
+ <ref name="variables.names"/>
673
+ </oneOrMore>
674
+ </list>
675
+ </attribute>
676
+ <ref name="affixes"/>
677
+ <ref name="delimiter">
678
+ <a:documentation>Specify the delimiter for name lists of name variables rendered by
679
+ the same cs:names element.</a:documentation>
680
+ </ref>
681
+ <ref name="display"/>
682
+ <ref name="font-formatting"/>
683
+ </define>
684
+ <define name="names.name">
685
+ <element name="cs:name">
686
+ <ref name="name.attributes"/>
687
+ <optional>
688
+ <attribute name="form" a:defaultValue="long">
689
+ <a:documentation>Select the "long" (first name + last name, for Western names),
690
+ "short" (last name only, for Western names), or "count" name form
691
+ (returning the number of names in the name variable, which can be
692
+ useful for some sorting algorithms).</a:documentation>
693
+ <choice>
694
+ <value>long</value>
695
+ <value>short</value>
696
+ <value>count</value>
697
+ </choice>
698
+ </attribute>
699
+ </optional>
700
+ <ref name="affixes"/>
701
+ <ref name="delimiter" a:defaultValue=", ">
702
+ <a:documentation>Set the delimiter for names in a name variable (e.g., ", " in
703
+ "Doe, Smith")</a:documentation>
704
+ </ref>
705
+ <ref name="font-formatting"/>
706
+ <zeroOrMore>
707
+ <ref name="name.name-part"/>
708
+ </zeroOrMore>
709
+ </element>
710
+ </define>
711
+ <define name="name.attributes">
712
+ <optional>
713
+ <attribute name="and">
714
+ <a:documentation>Use to separate the second-to-last and last name of a name list by
715
+ the "and" term or ampersand.</a:documentation>
716
+ <choice>
717
+ <value>text</value>
718
+ <a:documentation>Use the "and" term (e.g., "Doe, Johnson and Smith").</a:documentation>
719
+ <value>symbol</value>
720
+ <a:documentation>Use the "ampersand" (e.g., "Doe, Johnson &amp; Smith").</a:documentation>
721
+ </choice>
722
+ </attribute>
723
+ </optional>
724
+ <optional>
725
+ <attribute name="delimiter-precedes-et-al" a:defaultValue="contextual">
726
+ <a:documentation>Specify when the name delimiter is used between a truncated name list
727
+ and the "et-al" (or "and others") term in case of et-al abbreviation
728
+ (e.g., "Smith, Doe et al." or "Smith, Doe, et al.").</a:documentation>
729
+ <choice>
730
+ <value>contextual</value>
731
+ <a:documentation>The name delimiter is only used when the truncated name list
732
+ consists of two or more names.</a:documentation>
733
+ <value>always</value>
734
+ <a:documentation>The name delimiter is always used.</a:documentation>
735
+ <value>never</value>
736
+ <a:documentation>The name delimiter is never used.</a:documentation>
737
+ <value>after-inverted-name</value>
738
+ <a:documentation>The name delimiter is only used if the preceding name is inverted as
739
+ a result of the "name-as-sort-order" attribute.</a:documentation>
740
+ </choice>
741
+ </attribute>
742
+ </optional>
743
+ <optional>
744
+ <attribute name="delimiter-precedes-last" a:defaultValue="contextual">
745
+ <a:documentation>Specify when the name delimiter is used between the second-to-last
746
+ and last name of a non-truncated name list. Only has an effect when
747
+ the "and" term or ampersand is used (e.g., "Doe and Smith" or "Doe,
748
+ and Smith").</a:documentation>
749
+ <choice>
750
+ <value>contextual</value>
751
+ <a:documentation>The name delimiter is only used when the name list consists of
752
+ three or more names.</a:documentation>
753
+ <value>always</value>
754
+ <a:documentation>The name delimiter is always used.</a:documentation>
755
+ <value>never</value>
756
+ <a:documentation>The name delimiter is never used.</a:documentation>
757
+ <value>after-inverted-name</value>
758
+ <a:documentation>The name delimiter is only used if the preceding name is inverted as
759
+ a result of the "name-as-sort-order" attribute.</a:documentation>
760
+ </choice>
761
+ </attribute>
762
+ </optional>
763
+ <optional>
764
+ <attribute name="et-al-min">
765
+ <a:documentation>Set the minimum number of names needed in a name variable to activate
766
+ et-al abbreviation.</a:documentation>
767
+ <data type="integer"/>
768
+ </attribute>
769
+ </optional>
770
+ <optional>
771
+ <attribute name="et-al-use-first">
772
+ <a:documentation>Set the number of names to render when et-al abbreviation is active.</a:documentation>
773
+ <data type="integer"/>
774
+ </attribute>
775
+ </optional>
776
+ <optional>
777
+ <attribute name="et-al-subsequent-min">
778
+ <a:documentation>As "et-al-min", but only affecting subsequent citations to an item.</a:documentation>
779
+ <data type="integer"/>
780
+ </attribute>
781
+ </optional>
782
+ <optional>
783
+ <attribute name="et-al-subsequent-use-first">
784
+ <a:documentation>As "et-al-use-first", but only affecting subsequent citations to an
785
+ item.</a:documentation>
786
+ <data type="integer"/>
787
+ </attribute>
788
+ </optional>
789
+ <optional>
790
+ <attribute name="et-al-use-last" a:defaultValue="false">
791
+ <a:documentation>If set to "true", the "et-al" (or "and others") term is replaced by
792
+ an ellipsis followed by the last name of the name variable.</a:documentation>
793
+ <data type="boolean"/>
794
+ </attribute>
795
+ </optional>
796
+ <optional>
797
+ <attribute name="initialize" a:defaultValue="true">
798
+ <a:documentation>If set to "false", names are not initialized and "initialize-with"
799
+ only affects initials already present in the input data.</a:documentation>
800
+ <data type="boolean"/>
801
+ </attribute>
802
+ </optional>
803
+ <optional>
804
+ <attribute name="initialize-with">
805
+ <a:documentation>Activate initializing of given names. The attribute value is appended
806
+ to each initial (e.g., with ". ", "Orson Welles" becomes "O. Welles").</a:documentation>
807
+ </attribute>
808
+ </optional>
809
+ <optional>
810
+ <attribute name="name-as-sort-order">
811
+ <a:documentation>Specify whether (and which) names should be rendered in their sort
812
+ order (e.g., "Doe, John" instead of "John Doe").</a:documentation>
813
+ <choice>
814
+ <value>first</value>
815
+ <a:documentation>Render the first name of each name variable in sort order.</a:documentation>
816
+ <value>all</value>
817
+ <a:documentation>Render all names in sort order.</a:documentation>
818
+ </choice>
819
+ </attribute>
820
+ </optional>
821
+ <optional>
822
+ <attribute name="sort-separator" a:defaultValue=", ">
823
+ <a:documentation>Sets the delimiter for name-parts that have switched positions as a
824
+ result of "name-as-sort-order" (e.g., ", " in "Doe, John").</a:documentation>
825
+ </attribute>
826
+ </optional>
827
+ </define>
828
+ <define name="name.name-part">
829
+ <element name="cs:name-part">
830
+ <a:documentation>Use to format individual name parts (e.g., "Jane DOE").</a:documentation>
831
+ <attribute name="name">
832
+ <choice>
833
+ <value>family</value>
834
+ <value>given</value>
835
+ </choice>
836
+ </attribute>
837
+ <ref name="affixes"/>
838
+ <ref name="font-formatting"/>
839
+ <ref name="text-case"/>
840
+ </element>
841
+ </define>
842
+ <define name="names.et-al">
843
+ <element name="cs:et-al">
844
+ <a:documentation>Specify the term used for et-al abbreviation and its formatting. </a:documentation>
845
+ <optional>
846
+ <attribute name="term" a:defaultValue="et-al">
847
+ <a:documentation>Select the term to use for et-al abbreviation.</a:documentation>
848
+ <choice>
849
+ <value>et-al</value>
850
+ <value>and others</value>
851
+ </choice>
852
+ </attribute>
853
+ </optional>
854
+ <ref name="affixes"/>
855
+ <ref name="font-formatting"/>
856
+ </element>
857
+ </define>
858
+ <define name="names.label">
859
+ <a:documentation>Inherits variable from the parent cs:names element.</a:documentation>
860
+ <element name="cs:label">
861
+ <optional>
862
+ <attribute name="form" a:defaultValue="long">
863
+ <ref name="term.form"/>
864
+ </attribute>
865
+ </optional>
866
+ <ref name="label.attributes-shared"/>
867
+ </element>
868
+ </define>
869
+ <define name="names.substitute">
870
+ <element name="cs:substitute">
871
+ <a:documentation>Specify substitution options when the name variables selected on the
872
+ parent cs:names element are empty.</a:documentation>
873
+ <oneOrMore>
874
+ <choice>
875
+ <ref name="substitute.names"/>
876
+ <ref name="rendering-element"/>
877
+ </choice>
878
+ </oneOrMore>
879
+ </element>
880
+ </define>
881
+ <define name="substitute.names">
882
+ <a:documentation>Short version of cs:names, without children, allowed in cs:substitute.</a:documentation>
883
+ <element name="cs:names">
884
+ <ref name="names.attributes"/>
885
+ </element>
886
+ </define>
887
+ </div>
888
+ <div>
889
+ <a:documentation>
890
+ <xhtml:h2>cs:date Rendering Element</xhtml:h2>
891
+ </a:documentation>
892
+ <define name="rendering-element.date">
893
+ <element name="cs:date">
894
+ <attribute name="variable">
895
+ <ref name="variables.dates"/>
896
+ </attribute>
897
+ <choice>
898
+ <group>
899
+ <optional>
900
+ <attribute name="date-parts" a:defaultValue="year-month-day">
901
+ <a:documentation>Limit the date parts rendered.</a:documentation>
902
+ <choice>
903
+ <value>year-month-day</value>
904
+ <a:documentation>Year, month and day</a:documentation>
905
+ <value>year-month</value>
906
+ <a:documentation>Year and month</a:documentation>
907
+ <value>year</value>
908
+ <a:documentation>Year only</a:documentation>
909
+ </choice>
910
+ </attribute>
911
+ </optional>
912
+ <ref name="date.form"/>
913
+ <zeroOrMore>
914
+ <ref name="rendering-element.date.date-part.localized"/>
915
+ </zeroOrMore>
916
+ </group>
917
+ <group>
918
+ <oneOrMore>
919
+ <ref name="rendering-element.date.date-part.non-localized"/>
920
+ </oneOrMore>
921
+ <ref name="delimiter"/>
922
+ </group>
923
+ </choice>
924
+ <ref name="affixes"/>
925
+ <ref name="display"/>
926
+ <ref name="font-formatting"/>
927
+ <ref name="text-case"/>
928
+ </element>
929
+ </define>
930
+ <define name="rendering-element.date.date-part.localized">
931
+ <element name="cs:date-part">
932
+ <a:documentation>Specify overriding formatting for localized dates (affixes
933
+ cannot be overridden, as these are considered locale-specific).
934
+ Example uses are forcing the use of leading-zeros, or of the
935
+ "short" month form. Has no effect on which, and in what order,
936
+ date parts are rendered.</a:documentation>
937
+ <ref name="font-formatting"/>
938
+ <ref name="text-case"/>
939
+ <choice>
940
+ <ref name="day"/>
941
+ <ref name="month"/>
942
+ <ref name="year"/>
943
+ </choice>
944
+ </element>
945
+ </define>
946
+ <define name="rendering-element.date.date-part.non-localized">
947
+ <element name="cs:date-part">
948
+ <a:documentation>Specify, in the desired order, the date parts that should be
949
+ rendered and their formatting.</a:documentation>
950
+ <ref name="affixes"/>
951
+ <ref name="font-formatting"/>
952
+ <ref name="text-case"/>
953
+ <choice>
954
+ <ref name="day"/>
955
+ <ref name="month"/>
956
+ <ref name="year"/>
957
+ </choice>
958
+ </element>
959
+ </define>
960
+ <define name="day">
961
+ <attribute name="name">
962
+ <value>day</value>
963
+ </attribute>
964
+ <optional>
965
+ <attribute name="form" a:defaultValue="numeric">
966
+ <a:documentation>Day forms: "numeric" ("5"), "numeric-leading-zeros" ("05"), "ordinal"
967
+ ("5th").</a:documentation>
968
+ <choice>
969
+ <value>numeric</value>
970
+ <value>numeric-leading-zeros</value>
971
+ <value>ordinal</value>
972
+ </choice>
973
+ </attribute>
974
+ </optional>
975
+ <ref name="range-delimiter"/>
976
+ </define>
977
+ <define name="month">
978
+ <attribute name="name">
979
+ <value>month</value>
980
+ </attribute>
981
+ <optional>
982
+ <attribute name="form" a:defaultValue="long">
983
+ <a:documentation>Months forms: "long" (e.g., "January"), "short" ("Jan."), "numeric"
984
+ ("1"), and "numeric-leading-zeros" ("01").</a:documentation>
985
+ <choice>
986
+ <value>long</value>
987
+ <value>short</value>
988
+ <value>numeric</value>
989
+ <value>numeric-leading-zeros</value>
990
+ </choice>
991
+ </attribute>
992
+ </optional>
993
+ <ref name="range-delimiter"/>
994
+ <ref name="strip-periods"/>
995
+ </define>
996
+ <define name="year">
997
+ <attribute name="name">
998
+ <value>year</value>
999
+ </attribute>
1000
+ <optional>
1001
+ <attribute name="form" a:defaultValue="long">
1002
+ <a:documentation>Year forms: "long" ("2005"), "short" ("05").</a:documentation>
1003
+ <choice>
1004
+ <value>short</value>
1005
+ <value>long</value>
1006
+ </choice>
1007
+ </attribute>
1008
+ </optional>
1009
+ <ref name="range-delimiter"/>
1010
+ </define>
1011
+ <define name="range-delimiter">
1012
+ <optional>
1013
+ <attribute name="range-delimiter" a:defaultValue="–">
1014
+ <a:documentation>Specify a delimiter for date ranges (by default the en-dash). A custom
1015
+ delimiter is retrieved from the largest date part ("day", "month" or
1016
+ "year") that differs between the two dates.</a:documentation>
1017
+ </attribute>
1018
+ </optional>
1019
+ </define>
1020
+ </div>
1021
+ <div>
1022
+ <a:documentation>
1023
+ <xhtml:h2>cs:text Rendering Element</xhtml:h2>
1024
+ </a:documentation>
1025
+ <define name="rendering-element.text">
1026
+ <element name="cs:text">
1027
+ <a:documentation>Use to call macros, render variables, terms, or verbatim text.</a:documentation>
1028
+ <ref name="text.attributes"/>
1029
+ <ref name="affixes"/>
1030
+ <ref name="display"/>
1031
+ <ref name="font-formatting"/>
1032
+ <ref name="quotes"/>
1033
+ <ref name="strip-periods"/>
1034
+ <ref name="text-case"/>
1035
+ </element>
1036
+ </define>
1037
+ <define name="text.attributes">
1038
+ <choice>
1039
+ <attribute name="macro">
1040
+ <a:documentation>Select a macro.</a:documentation>
1041
+ <data type="NMTOKEN"/>
1042
+ </attribute>
1043
+ <group>
1044
+ <attribute name="term">
1045
+ <a:documentation>Select a term.</a:documentation>
1046
+ <ref name="terms"/>
1047
+ </attribute>
1048
+ <optional>
1049
+ <attribute name="form" a:defaultValue="long">
1050
+ <ref name="term.form"/>
1051
+ </attribute>
1052
+ </optional>
1053
+ <optional>
1054
+ <attribute name="plural" a:defaultValue="false">
1055
+ <a:documentation>Specify term plurality: singular ("false") or plural ("true").</a:documentation>
1056
+ <data type="boolean"/>
1057
+ </attribute>
1058
+ </optional>
1059
+ </group>
1060
+ <attribute name="value">
1061
+ <a:documentation>Specify verbatim text.</a:documentation>
1062
+ </attribute>
1063
+ <group>
1064
+ <attribute name="variable">
1065
+ <a:documentation>Select a variable.</a:documentation>
1066
+ <ref name="variables.standard"/>
1067
+ </attribute>
1068
+ <optional>
1069
+ <attribute name="form" a:defaultValue="long">
1070
+ <choice>
1071
+ <value>short</value>
1072
+ <value>long</value>
1073
+ </choice>
1074
+ </attribute>
1075
+ </optional>
1076
+ </group>
1077
+ </choice>
1078
+ </define>
1079
+ </div>
1080
+ <div>
1081
+ <a:documentation>
1082
+ <xhtml:h2>cs:number Rendering Element</xhtml:h2>
1083
+ </a:documentation>
1084
+ <define name="rendering-element.number">
1085
+ <element name="cs:number">
1086
+ <a:documentation>Use to render a number variable.</a:documentation>
1087
+ <ref name="number.attributes"/>
1088
+ <ref name="affixes"/>
1089
+ <ref name="display"/>
1090
+ <ref name="font-formatting"/>
1091
+ <ref name="text-case"/>
1092
+ </element>
1093
+ </define>
1094
+ <define name="number.attributes">
1095
+ <attribute name="variable">
1096
+ <ref name="variables.numbers"/>
1097
+ </attribute>
1098
+ <optional>
1099
+ <attribute name="form" a:defaultValue="numeric">
1100
+ <a:documentation>Number forms: "numeric" ("4"), "ordinal" ("4th"), "long-ordinal"
1101
+ ("fourth"), "roman" ("iv").</a:documentation>
1102
+ <choice>
1103
+ <value>numeric</value>
1104
+ <value>ordinal</value>
1105
+ <value>long-ordinal</value>
1106
+ <value>roman</value>
1107
+ </choice>
1108
+ </attribute>
1109
+ </optional>
1110
+ </define>
1111
+ </div>
1112
+ <div>
1113
+ <a:documentation>
1114
+ <xhtml:h2>cs:label Rendering Element</xhtml:h2>
1115
+ </a:documentation>
1116
+ <define name="rendering-element.label">
1117
+ <element name="cs:label">
1118
+ <a:documentation>Use to render a term whose pluralization depends on the content of a
1119
+ variable. E.g., if "page" variable holds a range, the plural label
1120
+ "pp." is selected instead of the singular "p.".</a:documentation>
1121
+ <ref name="label.attributes"/>
1122
+ <ref name="label.attributes-shared"/>
1123
+ </element>
1124
+ </define>
1125
+ <define name="label.attributes">
1126
+ <attribute name="variable">
1127
+ <choice>
1128
+ <ref name="variables.numbers"/>
1129
+ <value>locator</value>
1130
+ <value>page</value>
1131
+ </choice>
1132
+ </attribute>
1133
+ <optional>
1134
+ <attribute name="form" a:defaultValue="long">
1135
+ <choice>
1136
+ <value>long</value>
1137
+ <value>short</value>
1138
+ <value>symbol</value>
1139
+ </choice>
1140
+ </attribute>
1141
+ </optional>
1142
+ </define>
1143
+ <define name="label.attributes-shared">
1144
+ <optional>
1145
+ <attribute name="plural" a:defaultValue="contextual">
1146
+ <a:documentation>Specify when the plural version of a term is selected.</a:documentation>
1147
+ <choice>
1148
+ <value>always</value>
1149
+ <value>never</value>
1150
+ <value>contextual</value>
1151
+ </choice>
1152
+ </attribute>
1153
+ </optional>
1154
+ <ref name="affixes"/>
1155
+ <ref name="font-formatting"/>
1156
+ <ref name="strip-periods"/>
1157
+ <ref name="text-case"/>
1158
+ </define>
1159
+ </div>
1160
+ <div>
1161
+ <a:documentation>
1162
+ <xhtml:h2>cs:group Rendering Element</xhtml:h2>
1163
+ </a:documentation>
1164
+ <define name="rendering-element.group">
1165
+ <element name="cs:group">
1166
+ <a:documentation>Use to group rendering elements. Groups are useful for setting a
1167
+ delimiter for the group children, for organizing the layout of
1168
+ bibliographic entries (using the "display" attribute), and for
1169
+ suppressing the rendering of terms and verbatim text when variables
1170
+ are empty.</a:documentation>
1171
+ <ref name="group.attributes"/>
1172
+ <ref name="affixes"/>
1173
+ <ref name="delimiter"/>
1174
+ <ref name="display"/>
1175
+ <ref name="font-formatting"/>
1176
+ <oneOrMore>
1177
+ <ref name="rendering-element"/>
1178
+ </oneOrMore>
1179
+ </element>
1180
+ </define>
1181
+ <define name="group.attributes">
1182
+ <optional>
1183
+ <notAllowed/>
1184
+ </optional>
1185
+ </define>
1186
+ </div>
1187
+ <div>
1188
+ <a:documentation>
1189
+ <xhtml:h2>Options</xhtml:h2>
1190
+ </a:documentation>
1191
+ <define name="style.options">
1192
+ <ref name="style.demote-non-dropping-particle"/>
1193
+ <ref name="style.initialize-with-hyphen"/>
1194
+ <ref name="style.page-range-format"/>
1195
+ <ref name="names-inheritable-options"/>
1196
+ <ref name="name-inheritable-options"/>
1197
+ </define>
1198
+ <define name="citation.options">
1199
+ <ref name="citation.cite-group-delimiter"/>
1200
+ <ref name="citation.collapse-options"/>
1201
+ <ref name="citation.disambiguate-options"/>
1202
+ <ref name="citation.near-note-distance"/>
1203
+ <ref name="names-inheritable-options"/>
1204
+ <ref name="name-inheritable-options"/>
1205
+ </define>
1206
+ <define name="bibliography.options">
1207
+ <ref name="bibliography.hanging-indent"/>
1208
+ <ref name="bibliography.line-formatting-options"/>
1209
+ <ref name="bibliography.second-field-align"/>
1210
+ <ref name="bibliography.subsequent-author-substitute-options"/>
1211
+ <ref name="names-inheritable-options"/>
1212
+ <ref name="name-inheritable-options"/>
1213
+ </define>
1214
+ <define name="style.demote-non-dropping-particle">
1215
+ <optional>
1216
+ <attribute name="demote-non-dropping-particle" a:defaultValue="display-and-sort">
1217
+ <a:documentation>Specify whether the non-dropping particle is demoted in inverted
1218
+ names (e.g., "Koning, W. de").</a:documentation>
1219
+ <choice>
1220
+ <value>never</value>
1221
+ <value>sort-only</value>
1222
+ <value>display-and-sort</value>
1223
+ </choice>
1224
+ </attribute>
1225
+ </optional>
1226
+ </define>
1227
+ <define name="style.initialize-with-hyphen">
1228
+ <optional>
1229
+ <attribute name="initialize-with-hyphen" a:defaultValue="true">
1230
+ <a:documentation>Specify whether compound given names (e.g., "Jean-Luc") are
1231
+ initialized with ("J-L") or without a hyphen ("JL").</a:documentation>
1232
+ <data type="boolean"/>
1233
+ </attribute>
1234
+ </optional>
1235
+ </define>
1236
+ <define name="style.page-range-format">
1237
+ <optional>
1238
+ <attribute name="page-range-format">
1239
+ <a:documentation>Reformat page ranges in the "page" variable.</a:documentation>
1240
+ <choice>
1241
+ <value>chicago</value>
1242
+ <value>expanded</value>
1243
+ <value>minimal</value>
1244
+ <value>minimal-two</value>
1245
+ </choice>
1246
+ </attribute>
1247
+ </optional>
1248
+ </define>
1249
+ <define name="citation.cite-group-delimiter">
1250
+ <optional>
1251
+ <attribute name="cite-group-delimiter" a:defaultValue=", ">
1252
+ <a:documentation>Activate cite grouping and specify the delimiter for cites within a
1253
+ cite group.</a:documentation>
1254
+ </attribute>
1255
+ </optional>
1256
+ </define>
1257
+ <define name="citation.collapse-options">
1258
+ <optional>
1259
+ <attribute name="collapse">
1260
+ <a:documentation>Activate cite grouping and specify the method of citation collapsing.</a:documentation>
1261
+ <choice>
1262
+ <value>citation-number</value>
1263
+ <a:documentation>Collapse ranges of numeric cites, e.g. from "[1,2,3]" to "[1-3]".</a:documentation>
1264
+ <value>year</value>
1265
+ <a:documentation>Collapse cites by suppressing repeated names, e.g. from "(Doe
1266
+ 2000, Doe 2001)" to "(Doe 2000, 2001)".</a:documentation>
1267
+ <value>year-suffix</value>
1268
+ <a:documentation>Collapse cites as with "year", but also suppresses repeated
1269
+ years, e.g. from "(Doe 2000a, Doe 2000b)" to "(Doe 2000a, b)".</a:documentation>
1270
+ <value>year-suffix-ranged</value>
1271
+ <a:documentation>Collapses cites as with "year-suffix", but also collapses
1272
+ ranges of year-suffixes, e.g. from "(Doe 2000a, Doe 2000b,
1273
+ Doe 2000c)" to "(Doe 2000a-c)".</a:documentation>
1274
+ </choice>
1275
+ </attribute>
1276
+ </optional>
1277
+ <optional>
1278
+ <attribute name="year-suffix-delimiter">
1279
+ <a:documentation>Specify the delimiter between year-suffixes. Defaults to the cite
1280
+ delimiter.</a:documentation>
1281
+ </attribute>
1282
+ </optional>
1283
+ <optional>
1284
+ <attribute name="after-collapse-delimiter">
1285
+ <a:documentation>Specify the delimiter following a group of collapsed cites. Defaults
1286
+ to the cite delimiter.</a:documentation>
1287
+ </attribute>
1288
+ </optional>
1289
+ </define>
1290
+ <define name="citation.disambiguate-options">
1291
+ <optional>
1292
+ <attribute name="disambiguate-add-names" a:defaultValue="false">
1293
+ <a:documentation>Set to "true" to activate disambiguation by showing names that were
1294
+ originally hidden as a result of et-al abbreviation.</a:documentation>
1295
+ <data type="boolean"/>
1296
+ </attribute>
1297
+ </optional>
1298
+ <optional>
1299
+ <attribute name="disambiguate-add-givenname" a:defaultValue="false">
1300
+ <a:documentation>Set to "true" to activate disambiguation by expanding names, showing
1301
+ initials or full given names.</a:documentation>
1302
+ <data type="boolean"/>
1303
+ </attribute>
1304
+ </optional>
1305
+ <optional>
1306
+ <attribute name="disambiguate-add-year-suffix" a:defaultValue="false">
1307
+ <a:documentation>Set to "true" to activate disambiguation by adding year-suffixes
1308
+ (e.g., "(Doe 2007a, Doe 2007b)") for items from the same author(s)
1309
+ and year.</a:documentation>
1310
+ <data type="boolean"/>
1311
+ </attribute>
1312
+ </optional>
1313
+ <optional>
1314
+ <attribute name="givenname-disambiguation-rule" a:defaultValue="by-cite">
1315
+ <a:documentation>Specify how name are expanded for disambiguation.</a:documentation>
1316
+ <choice>
1317
+ <value>all-names</value>
1318
+ <a:documentation>Each ambiguous names is progressively transformed until
1319
+ disambiguated (when disambiguation is not possible, the name
1320
+ remains in its original form).</a:documentation>
1321
+ <value>all-names-with-initials</value>
1322
+ <a:documentation>As "all-names", but name expansion is limited to showing
1323
+ initials.</a:documentation>
1324
+ <value>primary-name</value>
1325
+ <a:documentation>As "all-names", but disambiguation is limited to the first name
1326
+ of each cite.</a:documentation>
1327
+ <value>primary-name-with-initials</value>
1328
+ <a:documentation>As "all-names-with-initials", but disambiguation is limited to
1329
+ the first name of each cite.</a:documentation>
1330
+ <value>by-cite</value>
1331
+ <a:documentation>As "all-names", but only ambiguous names in ambiguous cites are
1332
+ expanded.</a:documentation>
1333
+ </choice>
1334
+ </attribute>
1335
+ </optional>
1336
+ </define>
1337
+ <define name="citation.near-note-distance">
1338
+ <optional>
1339
+ <attribute name="near-note-distance" a:defaultValue="5">
1340
+ <a:documentation>Set the number of preceding notes (footnotes or endnotes) within
1341
+ which the current item needs to have been previously cited in order
1342
+ for the "near-note" position to be "true".</a:documentation>
1343
+ <data type="integer"/>
1344
+ </attribute>
1345
+ </optional>
1346
+ </define>
1347
+ <define name="bibliography.hanging-indent">
1348
+ <optional>
1349
+ <attribute name="hanging-indent" a:defaultValue="false">
1350
+ <a:documentation>Set to "true" to render bibliographic entries with hanging indents.</a:documentation>
1351
+ <data type="boolean"/>
1352
+ </attribute>
1353
+ </optional>
1354
+ </define>
1355
+ <define name="bibliography.line-formatting-options">
1356
+ <optional>
1357
+ <attribute name="entry-spacing" a:defaultValue="1">
1358
+ <a:documentation>Set the spacing between bibliographic entries.</a:documentation>
1359
+ <data type="nonNegativeInteger"/>
1360
+ </attribute>
1361
+ </optional>
1362
+ <optional>
1363
+ <attribute name="line-spacing" a:defaultValue="1">
1364
+ <a:documentation>Set the spacing between bibliographic lines.</a:documentation>
1365
+ <data type="integer">
1366
+ <param name="minExclusive">0</param>
1367
+ </data>
1368
+ </attribute>
1369
+ </optional>
1370
+ </define>
1371
+ <define name="bibliography.second-field-align">
1372
+ <optional>
1373
+ <attribute name="second-field-align">
1374
+ <a:documentation>Use to align any subsequent lines of bibliographic entries with the
1375
+ beginning of the second field.</a:documentation>
1376
+ <choice>
1377
+ <value>flush</value>
1378
+ <a:documentation>Align the first field with the margin.</a:documentation>
1379
+ <value>margin</value>
1380
+ <a:documentation>Put the first field in the margin and align all subsequent
1381
+ lines of text with the margin.</a:documentation>
1382
+ </choice>
1383
+ </attribute>
1384
+ </optional>
1385
+ </define>
1386
+ <define name="bibliography.subsequent-author-substitute-options">
1387
+ <optional>
1388
+ <attribute name="subsequent-author-substitute">
1389
+ <a:documentation>Substitute names that repeat in subsequent bibliographic entries by
1390
+ the attribute value.</a:documentation>
1391
+ </attribute>
1392
+ </optional>
1393
+ <optional>
1394
+ <attribute name="subsequent-author-substitute-rule" a:defaultValue="complete-all">
1395
+ <a:documentation>Specify the method of substitution of names repeated in subsequent
1396
+ bibliographic entries.</a:documentation>
1397
+ <choice>
1398
+ <value>complete-all</value>
1399
+ <a:documentation>Requires a match of all rendered names in the name variable, and
1400
+ substitutes once for all names.</a:documentation>
1401
+ <value>complete-each</value>
1402
+ <a:documentation>Requires a match of all rendered names in the name variable,
1403
+ and substitutes for each name.</a:documentation>
1404
+ <value>partial-each</value>
1405
+ <a:documentation>Substitutes for each name, until the first mismatch.</a:documentation>
1406
+ <value>partial-first</value>
1407
+ <a:documentation>Substitutes the first name if it matches.</a:documentation>
1408
+ </choice>
1409
+ </attribute>
1410
+ </optional>
1411
+ </define>
1412
+ <define name="names-inheritable-options">
1413
+ <a:documentation>Options affecting cs:names, for cs:style, cs:citation and cs:bibliography.</a:documentation>
1414
+ <optional>
1415
+ <attribute name="names-delimiter">
1416
+ <a:documentation>Inheritable name option, companion for "delimiter" on cs:names.</a:documentation>
1417
+ </attribute>
1418
+ </optional>
1419
+ </define>
1420
+ <define name="name-inheritable-options">
1421
+ <a:documentation>Options affecting cs:name, for cs:style, cs:citation and cs:bibliography.</a:documentation>
1422
+ <ref name="name.attributes"/>
1423
+ <optional>
1424
+ <attribute name="name-delimiter">
1425
+ <a:documentation>Inheritable name option, companion for "delimiter" on cs:name.</a:documentation>
1426
+ </attribute>
1427
+ </optional>
1428
+ <optional>
1429
+ <attribute name="name-form" a:defaultValue="long">
1430
+ <a:documentation>Inheritable name option, companion for "form" on cs:name.</a:documentation>
1431
+ <choice>
1432
+ <value>long</value>
1433
+ <value>short</value>
1434
+ <value>count</value>
1435
+ </choice>
1436
+ </attribute>
1437
+ </optional>
1438
+ </define>
1439
+ </div>
1440
+ <div>
1441
+ <a:documentation>
1442
+ <xhtml:h2>cs:sort - Sorting</xhtml:h2>
1443
+ </a:documentation>
1444
+ <define name="sort">
1445
+ <element name="cs:sort">
1446
+ <a:documentation>Specify how cites and bibliographic entries should be sorted. By
1447
+ default, items appear in the order in which they were cited.</a:documentation>
1448
+ <oneOrMore>
1449
+ <ref name="sort.key"/>
1450
+ </oneOrMore>
1451
+ </element>
1452
+ </define>
1453
+ <define name="sort.key">
1454
+ <element name="cs:key">
1455
+ <choice>
1456
+ <attribute name="variable">
1457
+ <ref name="variables"/>
1458
+ </attribute>
1459
+ <attribute name="macro">
1460
+ <data type="NMTOKEN"/>
1461
+ </attribute>
1462
+ </choice>
1463
+ <optional>
1464
+ <attribute name="names-min">
1465
+ <a:documentation>The minimum number of names needed in a name variable to activate
1466
+ name list truncation. Overrides the values set on any
1467
+ "et-al-(subsequent-)min" attributes.</a:documentation>
1468
+ <data type="integer"/>
1469
+ </attribute>
1470
+ </optional>
1471
+ <optional>
1472
+ <attribute name="names-use-first">
1473
+ <a:documentation>The number of names to render when name list truncation is
1474
+ activated. Overrides the values set on the
1475
+ "et-al-(subsequent-)use-first" attributes.</a:documentation>
1476
+ <data type="integer"/>
1477
+ </attribute>
1478
+ </optional>
1479
+ <optional>
1480
+ <attribute name="names-use-last">
1481
+ <a:documentation>Use to override the value of the "et-at-use-last" attribute.</a:documentation>
1482
+ <data type="boolean"/>
1483
+ </attribute>
1484
+ </optional>
1485
+ <optional>
1486
+ <attribute name="sort" a:defaultValue="ascending">
1487
+ <a:documentation>Select between an ascending and descending sort.</a:documentation>
1488
+ <choice>
1489
+ <value>ascending</value>
1490
+ <value>descending</value>
1491
+ </choice>
1492
+ </attribute>
1493
+ </optional>
1494
+ </element>
1495
+ </define>
1496
+ </div>
1497
+ <div>
1498
+ <a:documentation>
1499
+ <xhtml:h2>cs:choose - Conditional Statements</xhtml:h2>
1500
+ </a:documentation>
1501
+ <define name="rendering-element.choose">
1502
+ <element name="cs:choose">
1503
+ <a:documentation>Use to conditionally render rendering elements.</a:documentation>
1504
+ <ref name="choose.if"/>
1505
+ <zeroOrMore>
1506
+ <ref name="choose.else-if"/>
1507
+ </zeroOrMore>
1508
+ <optional>
1509
+ <ref name="choose.else"/>
1510
+ </optional>
1511
+ </element>
1512
+ </define>
1513
+ <define name="choose.if">
1514
+ <element name="cs:if">
1515
+ <oneOrMore>
1516
+ <ref name="condition"/>
1517
+ </oneOrMore>
1518
+ <ref name="match"/>
1519
+ <zeroOrMore>
1520
+ <ref name="rendering-element"/>
1521
+ </zeroOrMore>
1522
+ </element>
1523
+ </define>
1524
+ <define name="choose.else-if">
1525
+ <element name="cs:else-if">
1526
+ <oneOrMore>
1527
+ <ref name="condition"/>
1528
+ </oneOrMore>
1529
+ <ref name="match"/>
1530
+ <zeroOrMore>
1531
+ <ref name="rendering-element"/>
1532
+ </zeroOrMore>
1533
+ </element>
1534
+ </define>
1535
+ <define name="choose.else">
1536
+ <element name="cs:else">
1537
+ <oneOrMore>
1538
+ <ref name="rendering-element"/>
1539
+ </oneOrMore>
1540
+ </element>
1541
+ </define>
1542
+ <define name="condition">
1543
+ <choice>
1544
+ <attribute name="disambiguate" a:defaultValue="true">
1545
+ <a:documentation>If used, the element content is only rendered if it disambiguates two
1546
+ otherwise identical citations. This attempt at disambiguation is only
1547
+ made after all other disambiguation methods have failed.</a:documentation>
1548
+ <value>true</value>
1549
+ </attribute>
1550
+ <attribute name="is-numeric">
1551
+ <a:documentation>Tests whether the given variables contain numeric text.</a:documentation>
1552
+ <list>
1553
+ <oneOrMore>
1554
+ <ref name="variables"/>
1555
+ </oneOrMore>
1556
+ </list>
1557
+ </attribute>
1558
+ <attribute name="is-uncertain-date">
1559
+ <a:documentation>Tests whether the given date variables contain approximate dates.</a:documentation>
1560
+ <list>
1561
+ <oneOrMore>
1562
+ <ref name="variables.dates"/>
1563
+ </oneOrMore>
1564
+ </list>
1565
+ </attribute>
1566
+ <attribute name="locator">
1567
+ <a:documentation>Tests whether the locator matches the given locator types.</a:documentation>
1568
+ <list>
1569
+ <oneOrMore>
1570
+ <choice>
1571
+ <ref name="terms.locator.testable"/>
1572
+ <value>sub-verbo</value>
1573
+ </choice>
1574
+ </oneOrMore>
1575
+ </list>
1576
+ </attribute>
1577
+ <attribute name="position">
1578
+ <a:documentation>Tests whether the cite position matches the given positions.</a:documentation>
1579
+ <list>
1580
+ <oneOrMore>
1581
+ <choice>
1582
+ <value>first</value>
1583
+ <value>subsequent</value>
1584
+ <value>ibid</value>
1585
+ <value>ibid-with-locator</value>
1586
+ <value>near-note</value>
1587
+ </choice>
1588
+ </oneOrMore>
1589
+ </list>
1590
+ </attribute>
1591
+ <attribute name="type">
1592
+ <a:documentation>Tests whether the item matches the given types.</a:documentation>
1593
+ <list>
1594
+ <oneOrMore>
1595
+ <ref name="item-types"/>
1596
+ </oneOrMore>
1597
+ </list>
1598
+ </attribute>
1599
+ <attribute name="variable">
1600
+ <a:documentation>Tests whether the default ("long") forms of the given variables
1601
+ contain non-empty values.</a:documentation>
1602
+ <list>
1603
+ <oneOrMore>
1604
+ <ref name="variables"/>
1605
+ </oneOrMore>
1606
+ </list>
1607
+ </attribute>
1608
+ </choice>
1609
+ </define>
1610
+ <define name="match">
1611
+ <optional>
1612
+ <attribute name="match" a:defaultValue="all">
1613
+ <a:documentation>Set the testing logic.</a:documentation>
1614
+ <choice>
1615
+ <value>all</value>
1616
+ <a:documentation>Element only tests "true" when all conditions test "true" for all
1617
+ given test values.</a:documentation>
1618
+ <value>any</value>
1619
+ <a:documentation>Element tests "true" when any condition tests "true" for any given
1620
+ test value.</a:documentation>
1621
+ <value>none</value>
1622
+ <a:documentation>Element only tests "true" when none of the conditions test "true"
1623
+ for any given test value.</a:documentation>
1624
+ </choice>
1625
+ </attribute>
1626
+ </optional>
1627
+ </define>
1628
+ </div>
1629
+ <div>
1630
+ <a:documentation>Formatting attributes.</a:documentation>
1631
+ <define name="affixes">
1632
+ <optional>
1633
+ <attribute name="prefix" a:defaultValue=""/>
1634
+ </optional>
1635
+ <optional>
1636
+ <attribute name="suffix" a:defaultValue=""/>
1637
+ </optional>
1638
+ </define>
1639
+ <define name="delimiter">
1640
+ <optional>
1641
+ <attribute name="delimiter"/>
1642
+ </optional>
1643
+ </define>
1644
+ <define name="display">
1645
+ <optional>
1646
+ <attribute name="display">
1647
+ <a:documentation>By default, bibliographic entries consist of continuous runs of text.
1648
+ With the "display" attribute, portions of each entry can be
1649
+ individually positioned.</a:documentation>
1650
+ <choice>
1651
+ <value>block</value>
1652
+ <a:documentation>Places the content in a block stretching from margin to margin.</a:documentation>
1653
+ <value>left-margin</value>
1654
+ <a:documentation>Places the content in a block starting at the left margin.</a:documentation>
1655
+ <value>right-inline</value>
1656
+ <a:documentation>Places the content in a block to the right of a preceding
1657
+ "left-margin" block.</a:documentation>
1658
+ <value>indent</value>
1659
+ <a:documentation>Places the content in a block indented to the right by a standard
1660
+ amount.</a:documentation>
1661
+ </choice>
1662
+ </attribute>
1663
+ </optional>
1664
+ </define>
1665
+ <define name="font-formatting">
1666
+ <a:documentation>The font-formatting attributes are based on those of CSS and XSL-FO.</a:documentation>
1667
+ <optional>
1668
+ <attribute name="font-style" a:defaultValue="normal">
1669
+ <choice>
1670
+ <value>italic</value>
1671
+ <value>normal</value>
1672
+ <value>oblique</value>
1673
+ </choice>
1674
+ </attribute>
1675
+ </optional>
1676
+ <optional>
1677
+ <attribute name="font-variant" a:defaultValue="normal">
1678
+ <choice>
1679
+ <value>normal</value>
1680
+ <value>small-caps</value>
1681
+ </choice>
1682
+ </attribute>
1683
+ </optional>
1684
+ <optional>
1685
+ <attribute name="font-weight" a:defaultValue="normal">
1686
+ <choice>
1687
+ <value>normal</value>
1688
+ <value>bold</value>
1689
+ <value>light</value>
1690
+ </choice>
1691
+ </attribute>
1692
+ </optional>
1693
+ <optional>
1694
+ <attribute name="text-decoration" a:defaultValue="none">
1695
+ <choice>
1696
+ <value>none</value>
1697
+ <value>underline</value>
1698
+ </choice>
1699
+ </attribute>
1700
+ </optional>
1701
+ <optional>
1702
+ <attribute name="vertical-align" a:defaultValue="baseline">
1703
+ <choice>
1704
+ <value>baseline</value>
1705
+ <value>sup</value>
1706
+ <value>sub</value>
1707
+ </choice>
1708
+ </attribute>
1709
+ </optional>
1710
+ </define>
1711
+ <define name="quotes">
1712
+ <optional>
1713
+ <attribute name="quotes" a:defaultValue="false">
1714
+ <a:documentation>When set to "true", quotes are placed around the rendered text.</a:documentation>
1715
+ <data type="boolean"/>
1716
+ </attribute>
1717
+ </optional>
1718
+ </define>
1719
+ <define name="strip-periods">
1720
+ <optional>
1721
+ <attribute name="strip-periods" a:defaultValue="false">
1722
+ <a:documentation>When set to "true", periods are removed from the rendered text.</a:documentation>
1723
+ <data type="boolean"/>
1724
+ </attribute>
1725
+ </optional>
1726
+ </define>
1727
+ <define name="text-case">
1728
+ <optional>
1729
+ <attribute name="text-case">
1730
+ <choice>
1731
+ <value>lowercase</value>
1732
+ <a:documentation>Renders text in lowercase.</a:documentation>
1733
+ <value>uppercase</value>
1734
+ <a:documentation>Renders text in uppercase.</a:documentation>
1735
+ <value>capitalize-first</value>
1736
+ <a:documentation>Capitalizes the first character (other characters remain in
1737
+ their original case).</a:documentation>
1738
+ <value>capitalize-all</value>
1739
+ <a:documentation>Capitalizes the first character of every word (other characters
1740
+ remain in their original case).</a:documentation>
1741
+ <value>title</value>
1742
+ <a:documentation>Renders text in title case.</a:documentation>
1743
+ <value>sentence</value>
1744
+ <a:documentation>Renders text in sentence case.</a:documentation>
1745
+ </choice>
1746
+ </attribute>
1747
+ </optional>
1748
+ </define>
1749
+ </div>
1750
+ </grammar>