csl 1.0.0.pre1 → 1.0.0.pre2

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.
@@ -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>