blob: c7680559b9d4c9cd541ae4ea6d572ff0f0a27c21 [file] [log] [blame]
Marc Kupietz91175892023-01-21 18:36:12 +01001namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
2namespace bibo = "http://purl.org/ontology/bibo/"
3namespace cs = "http://purl.org/net/xbiblio/csl"
4namespace dc = "http://purl.org/dc/elements/1.1/"
5namespace sch = "http://purl.oclc.org/dsdl/schematron"
6namespace xhtml = "http://www.w3.org/1999/xhtml"
7
8# CSL schema metadata
9
10dc:title [ "Citation Style Language" ]
11dc:creator [ "Bruce D'Arcus" ]
12dc:creator [ "Simon Kornblith" ]
13bibo:editor [ "Frank Bennett" ]
14bibo:editor [ "Rintze Zelle" ]
15dc:rights [
16 "Copyright 2007-2020 Citation Style Language and contributors"
17]
18dc:license [ "MIT license" ]
19dc:description [
20 "RELAX NG compact schema for the Citation Style Language (CSL)."
21]
22
23## Subparts of the CSL schema
24include "csl-choose.rnc"
25include "csl-terms.rnc"
26include "csl-types.rnc"
27include "csl-variables.rnc"
28include "csl-categories.rnc"
29# ==============================================================================
30
31## cs:style and cs:locale - Root Elements
32div {
33 start =
34 independent-style.style | dependent-style.style | locale-file.locale
35 independent-style.style =
36 element cs:style {
37
38 ## Select whether citations appear in-text or as notes.
39 attribute class { "in-text" | "note" },
40 style.default-locale,
41 style.options,
42 version,
43 independent-style.style.info,
44 (style.locale*
45 & style.macro*
46 & style.citation
47 & style.bibliography?)
48 }
49 dependent-style.style =
50 element cs:style {
51 style.default-locale, version, dependent-style.style.info
52 }
53 style.default-locale =
54
55 ## Set a default style locale.
56 attribute default-locale { xsd:language }?
57 version =
58
59 ## Indicate CSL version compatibility.
60 [ a:defaultValue = "1.0" ] attribute version { "1.0" }
61}
62# ==============================================================================
63
64## cs:info - Style and Locale File Metadata
65div {
66
67 ## Metadata for independent styles.
68 independent-style.style.info =
69 element cs:info {
70 info.author*
71 & info.category*
72 & info.contributor*
73 & info.id
74 & info.issn*
75 & info.eissn?
76 & info.issnl?
77 & independent-style.info.link*
78 & info.published?
79 & info.rights?
80 & info.summary?
81 & info.title
82 & info.title-short?
83 & info.updated
84 }
85
86 ## Metadata for dependent styles.
87 dependent-style.style.info =
88 element cs:info {
89 info.author*
90 & info.category*
91 & info.contributor*
92 & info.id
93 & info.issn*
94 & info.eissn?
95 & info.issnl?
96 & dependent-style.info.link+
97 & info.published?
98 & info.rights?
99 & info.summary?
100 & info.title
101 & info.title-short?
102 & info.updated
103 }
104
105 ## Metadata for locale files.
106 locale-file.locale.info =
107 element cs:info { info.translator* & info.rights? & info.updated? }
108 info.author = element cs:author { personal-details }
109 info.contributor = element cs:contributor { personal-details }
110 info.translator = element cs:translator { personal-details }
111 personal-details =
112 element cs:name { text }
113 & element cs:email { text }?
114 & element cs:uri { xsd:anyURI }?
115 info.category =
116
117 ## Specify the citation format of the style (using the "citation-format"
118 ## attribute) or the fields and disciplines for which the style is
119 ## relevant (using the "field" attribute).
120 element cs:category {
121 attribute citation-format { category.citation-format }
122 | attribute field { category.field }
123 }
124 info.id =
125
126 ## Specify the unique and stable identifier for the style. A URI
127 ## is valid, but new styles should use a UUID to ensure stability
128 ## and uniqueness.
129 element cs:id { xsd:anyURI }
130 info.issn =
131
132 ## Specify the journal's ISSN(s) for journal-specific styles. An ISSN
133 ## must consist of four digits, a hyphen, three digits, and a check
134 ## digit (a numeral digit or roman X), e.g. "1234-1231".
135 element cs:issn { issn }
136 info.eissn =
137
138 ## Specify the journal's eISSN for journal-specific styles.
139 element cs:eissn { issn }
140 info.issnl =
141
142 ## Specify the journal's ISSN-L for journal-specific styles.
143 element cs:issnl { issn }
144 issn = xsd:string { pattern = "\d{4}\-\d{3}(\d|x|X)" }
145 independent-style.info.link =
146 element cs:link {
147 attribute href { xsd:anyURI },
148
149 ## Specify how the URL relates to the style.
150 attribute rel {
151
152 ## The URI of the CSL style itself.
153 "self"
154 |
155 ## URI of the style from which the current style is derived.
156 "template"
157 |
158 ## URI of style documentation.
159 "documentation"
160 },
161 info-text
162 }
163 dependent-style.info.link =
164 element cs:link {
165 attribute href { xsd:anyURI },
166
167 ## Specify how the URL relates to the style.
168 attribute rel {
169
170 ## The URI of the CSL style itself.
171 "self"
172 |
173 ## URI of the CSL style whose content should be used for
174 ## processing. Required for dependent styles.
175 "independent-parent"
176 |
177 ## URI of style documentation.
178 "documentation"
179 },
180 info-text
181 }
182 info.published =
183
184 ## Specify when the style was initially created or made available.
185 element cs:published { xsd:dateTime }
186 info.rights =
187 element cs:rights {
188 attribute license { xsd:anyURI }?,
189 info-text
190 }
191 info.summary = element cs:summary { info-text }
192 info.title = element cs:title { info-text }
193 info.title-short =
194
195 ## Specify an abbreviated style title (e.g., "APA")
196 element cs:title-short { info-text }
197 info.updated =
198
199 ## Specify when the style was last updated (e.g.,
200 ## "2007-10-26T21:32:52+02:00")
201 element cs:updated { xsd:dateTime }
202 info-text =
203 attribute xml:lang { xsd:language }?,
204 text
205}
206# ==============================================================================
207
208## cs:locale in Independent Styles
209div {
210 style.locale =
211
212 ## Use to (re)define localized terms, dates and options.
213 element cs:locale {
214
215 ## Specify the affected locale(s). If "xml:lang" is not set, the
216 ## "cs:locale" element affects all locales.
217 attribute xml:lang { xsd:language }?,
218 (locale.style-options? & locale.date* & locale.terms?)
219 }
220}
221# ==============================================================================
222
223## cs:locale Contents - Localization Data
224div {
225
226 ## Localized global options are specified as attributes in the
227 ## cs:style-options element. If future versions of CSL include localized
228 ## options that are citation or bibliography specific, the elements
229 ## cs:citation-options and cs:bibliography-options can be added.
230 locale.style-options =
231 element cs:style-options {
232
233 ## Limit the "ordinal" form to the first day of the month.
234 [ a:defaultValue = "false" ]
235 attribute limit-day-ordinals-to-day-1 { xsd:boolean }?,
236
237 ## Specify whether punctuation (a period or comma) is placed within
238 ## or outside (default) the closing quotation mark.
239 [ a:defaultValue = "false" ]
240 attribute punctuation-in-quote { xsd:boolean }?
241 }
242 locale-file.locale =
243 element cs:locale {
244
245 ## Specify the locale of the locale file.
246 attribute xml:lang { xsd:language },
247 version,
248 locale-file.locale.info?,
249 (locale.style-options & locale.date+ & locale.terms)
250 }
251 locale.date =
252 element cs:date {
253 date.form,
254 delimiter,
255 font-formatting,
256 text-case,
257 locale.date.date-part+
258 }
259 date.form =
260
261 ## Select the localized date format ("text" or "numeric").
262 attribute form {
263
264 ## Text date form (e.g., "December 15, 2005").
265 "text"
266 |
267 ## Numeric date form (e.g., "2005-12-15").
268 "numeric"
269 }
270 locale.date.date-part =
271 element cs:date-part {
272 affixes, font-formatting, text-case, (day | month | year)
273 }
274 locale.terms = element cs:terms { terms.term+ }
275
276 ## The "cs:term" element can either hold a basic string, or "cs:single" and
277 ## "cs:multiple" child elements to give singular and plural forms of the term.
278 terms.term =
279 element cs:term {
280 term.attributes,
281 (text | (term.single, term.multiple))
282 }
283 term.attributes =
284 (attribute name { terms },
285 [ a:defaultValue = "long" ] attribute form { term.form }?)
286 | (attribute name { terms.ordinals },
287 attribute form { "long" }?,
288 attribute gender-form { "masculine" | "feminine" }?,
289 attribute match {
290 "last-digit" | "last-two-digits" | "whole-number"
291 }?)
292 | (attribute name { terms.long-ordinals },
293 attribute form { "long" }?,
294 attribute gender-form { "masculine" | "feminine" })
295 | (attribute name { terms.gender-assignable },
296 attribute form { "long" }?,
297 attribute gender { "masculine" | "feminine" })
298
299 ## "verb-short" reverts to "verb" if the "verb-short" form is not available.
300 ## "symbol" reverts to "short" if the "symbol" form is not available.
301 ## "verb" and "short" revert to "long" if the specified form is not available.
302 term.form = "long" | "verb" | "short" | "verb-short" | "symbol"
303 term.single =
304
305 ## Singular version of the term.
306 element cs:single { text }
307 term.multiple =
308
309 ## Plural version of the term.
310 element cs:multiple { text }
311}
312# ==============================================================================
313
314## cs:macro
315div {
316 style.macro =
317
318 ## Use to create collections of (reusable) formatting instructions.
319 element cs:macro {
320 attribute name { xsd:NMTOKEN },
321 rendering-element+
322 }
323}
324# ==============================================================================
325
326## Rendering Elements
327div {
328 rendering-element =
329 rendering-element.names
330 | rendering-element.date
331 | rendering-element.label
332 | rendering-element.text
333 | rendering-element.number
334 | rendering-element.choose
335 | rendering-element.group
336}
337# ==============================================================================
338
339## cs:citation and cs:bibliography
340div {
341 style.citation =
342
343 ## Use to describe the formatting of citations.
344 element cs:citation { citation.options, sort?, citation.layout }
345 style.bibliography =
346
347 ## Use to describe the formatting of the bibliography.
348 element cs:bibliography {
349 bibliography.options, sort?, bibliography.layout
350 }
351 citation.layout =
352 element cs:layout {
353 affixes, delimiter, font-formatting, rendering-element+
354 }
355 bibliography.layout =
356 element cs:layout { affixes, font-formatting, rendering-element+ }
357}
358# ==============================================================================
359
360## cs:names Rendering Element
361div {
362 rendering-element.names =
363 element cs:names {
364 names.attributes,
365 ((names.name?, names.et-al?) & names.label?),
366 names.substitute?
367 }
368 names.attributes =
369 attribute variable {
370 list { variables.names+ }
371 },
372 affixes,
373
374 ## Specify the delimiter for name lists of name variables rendered by
375 ## the same cs:names element.
376 delimiter,
377 display,
378 font-formatting
379 names.name =
380 element cs:name {
381 name.attributes,
382
383 ## Select the "long" (first name + last name, for Western names),
384 ## "short" (last name only, for Western names), or "count" name form
385 ## (returning the number of names in the name variable, which can be
386 ## useful for some sorting algorithms).
387 [ a:defaultValue = "long" ]
388 attribute form { "long" | "short" | "count" }?,
389 affixes,
390
391 ## Set the delimiter for names in a name variable (e.g., ", " in
392 ## "Doe, Smith")
393 [ a:defaultValue = ", " ] delimiter,
394 font-formatting,
395 name.name-part*
396 }
397 name.attributes =
398
399 ## Use to separate the second-to-last and last name of a name list by
400 ## the "and" term or ampersand.
401 attribute and {
402
403 ## Use the "and" term (e.g., "Doe, Johnson and Smith").
404 "text"
405 |
406 ## Use the "ampersand" (e.g., "Doe, Johnson & Smith").
407 "symbol"
408 }?,
409
410 ## Specify when the name delimiter is used between a truncated name list
411 ## and the "et-al" (or "and others") term in case of et-al abbreviation
412 ## (e.g., "Smith, Doe et al." or "Smith, Doe, et al.").
413 [ a:defaultValue = "contextual" ]
414 attribute delimiter-precedes-et-al {
415
416 ## The name delimiter is only used when the truncated name list
417 ## consists of two or more names.
418 "contextual"
419 |
420 ## The name delimiter is always used.
421 "always"
422 |
423 ## The name delimiter is never used.
424 "never"
425 |
426 ## The name delimiter is only used if the preceding name is inverted as
427 ## a result of the "name-as-sort-order" attribute.
428 "after-inverted-name"
429 }?,
430
431 ## Specify when the name delimiter is used between the second-to-last
432 ## and last name of a non-truncated name list. Only has an effect when
433 ## the "and" term or ampersand is used (e.g., "Doe and Smith" or "Doe,
434 ## and Smith").
435 [ a:defaultValue = "contextual" ]
436 attribute delimiter-precedes-last {
437
438 ## The name delimiter is only used when the name list consists of
439 ## three or more names.
440 "contextual"
441 |
442 ## The name delimiter is always used.
443 "always"
444 |
445 ## The name delimiter is never used.
446 "never"
447 |
448 ## The name delimiter is only used if the preceding name is inverted as
449 ## a result of the "name-as-sort-order" attribute.
450 "after-inverted-name"
451 }?,
452
453 ## Set the minimum number of names needed in a name variable to activate
454 ## et-al abbreviation.
455 attribute et-al-min { xsd:integer }?,
456
457 ## Set the number of names to render when et-al abbreviation is active.
458 attribute et-al-use-first { xsd:integer }?,
459
460 ## As "et-al-min", but only affecting subsequent citations to an item.
461 attribute et-al-subsequent-min { xsd:integer }?,
462
463 ## As "et-al-use-first", but only affecting subsequent citations to an
464 ## item.
465 attribute et-al-subsequent-use-first { xsd:integer }?,
466
467 ## If set to "true", the "et-al" (or "and others") term is replaced by
468 ## an ellipsis followed by the last name of the name variable.
469 [ a:defaultValue = "false" ]
470 attribute et-al-use-last { xsd:boolean }?,
471
472 ## If set to "false", names are not initialized and "initialize-with"
473 ## only affects initials already present in the input data.
474 [ a:defaultValue = "true" ] attribute initialize { xsd:boolean }?,
475
476 ## Activate initializing of given names. The attribute value is appended
477 ## to each initial (e.g., with ". ", "Orson Welles" becomes "O. Welles").
478 attribute initialize-with { text }?,
479
480 ## Specify whether (and which) names should be rendered in their sort
481 ## order (e.g., "Doe, John" instead of "John Doe").
482 attribute name-as-sort-order {
483
484 ## Render the first name of each name variable in sort order.
485 "first"
486 |
487 ## Render all names in sort order.
488 "all"
489 }?,
490
491 ## Sets the delimiter for name-parts that have switched positions as a
492 ## result of "name-as-sort-order" (e.g., ", " in "Doe, John").
493 [ a:defaultValue = ", " ] attribute sort-separator { text }?
494 name.name-part =
495
496 ## Use to format individual name parts (e.g., "Jane DOE").
497 element cs:name-part {
498 attribute name { "family" | "given" },
499 affixes,
500 font-formatting,
501 text-case
502 }
503 names.et-al =
504
505 ## Specify the term used for et-al abbreviation and its formatting.
506 element cs:et-al {
507
508 ## Select the term to use for et-al abbreviation.
509 [ a:defaultValue = "et-al" ]
510 attribute term { "et-al" | "and others" }?,
511 font-formatting
512 }
513
514 ## Inherits variable from the parent cs:names element.
515 names.label =
516 element cs:label {
517 [ a:defaultValue = "long" ] attribute form { term.form }?,
518 label.attributes-shared
519 }
520 names.substitute =
521
522 ## Specify substitution options when the name variables selected on the
523 ## parent cs:names element are empty.
524 element cs:substitute { (substitute.names | rendering-element)+ }
525
526 ## Short version of cs:names, without children, allowed in cs:substitute.
527 substitute.names = element cs:names { names.attributes }
528}
529# ==============================================================================
530
531## cs:date Rendering Element
532div {
533 rendering-element.date =
534 element cs:date {
535 attribute variable { variables.dates },
536 ((
537 ## Limit the date parts rendered.
538 [ a:defaultValue = "year-month-day" ]
539 attribute date-parts {
540
541 ## Year, month and day
542 "year-month-day"
543 |
544 ## Year and month
545 "year-month"
546 |
547 ## Year only
548 "year"
549 }?,
550 date.form,
551 rendering-element.date.date-part.localized*)
552 | (rendering-element.date.date-part.non-localized+, delimiter)),
553 affixes,
554 display,
555 font-formatting,
556 text-case
557 }
558 rendering-element.date.date-part.localized =
559
560 ## Specify overriding formatting for localized dates (affixes
561 ## cannot be overridden, as these are considered locale-specific).
562 ## Example uses are forcing the use of leading-zeros, or of the
563 ## "short" month form. Has no effect on which, and in what order,
564 ## date parts are rendered.
565 element cs:date-part {
566 font-formatting, text-case, (day | month | year)
567 }
568 rendering-element.date.date-part.non-localized =
569
570 ## Specify, in the desired order, the date parts that should be
571 ## rendered and their formatting.
572 element cs:date-part {
573 affixes, font-formatting, text-case, (day | month | year)
574 }
575 day =
576 attribute name { "day" },
577
578 ## Day forms: "numeric" ("5"), "numeric-leading-zeros" ("05"), "ordinal"
579 ## ("5th").
580 [ a:defaultValue = "numeric" ]
581 attribute form { "numeric" | "numeric-leading-zeros" | "ordinal" }?,
582 range-delimiter
583 month =
584 attribute name { "month" },
585
586 ## Months forms: "long" (e.g., "January"), "short" ("Jan."), "numeric"
587 ## ("1"), and "numeric-leading-zeros" ("01").
588 [ a:defaultValue = "long" ]
589 attribute form {
590 "long" | "short" | "numeric" | "numeric-leading-zeros"
591 }?,
592 range-delimiter,
593 strip-periods
594 year =
595 attribute name { "year" },
596
597 ## Year forms: "long" ("2005"), "short" ("05").
598 [ a:defaultValue = "long" ] attribute form { "short" | "long" }?,
599 range-delimiter
600 range-delimiter =
601
602 ## Specify a delimiter for date ranges (by default the en-dash). A custom
603 ## delimiter is retrieved from the largest date part ("day", "month" or
604 ## "year") that differs between the two dates.
605 [ a:defaultValue = "–" ] attribute range-delimiter { text }?
606}
607# ==============================================================================
608
609## cs:text Rendering Element
610div {
611 rendering-element.text =
612
613 ## Use to call macros, render variables, terms, or verbatim text.
614 element cs:text {
615 text.attributes,
616 affixes,
617 display,
618 font-formatting,
619 quotes,
620 strip-periods,
621 text-case
622 }
623 text.attributes =
624
625 ## Select a macro.
626 attribute macro { xsd:NMTOKEN }
627 | (
628 ## Select a term.
629 attribute term { terms },
630 [ a:defaultValue = "long" ] attribute form { term.form }?,
631
632 ## Specify term plurality: singular ("false") or plural ("true").
633 [ a:defaultValue = "false" ] attribute plural { xsd:boolean }?)
634 |
635 ## Specify verbatim text.
636 attribute value { text }
637 | (
638 ## Select a variable.
639 attribute variable { variables.standard },
640 [ a:defaultValue = "long" ] attribute form { "short" | "long" }?)
641}
642# ==============================================================================
643
644## cs:number Rendering Element
645div {
646 rendering-element.number =
647
648 ## Use to render a number variable.
649 element cs:number {
650 number.attributes, affixes, display, font-formatting, text-case
651 }
652 number.attributes =
653 attribute variable { variables.numbers },
654
655 ## Number forms: "numeric" ("4"), "ordinal" ("4th"), "long-ordinal"
656 ## ("fourth"), "roman" ("iv").
657 [ a:defaultValue = "numeric" ]
658 attribute form { "numeric" | "ordinal" | "long-ordinal" | "roman" }?
659}
660# ==============================================================================
661
662## cs:label Rendering Element
663div {
664 rendering-element.label =
665
666 ## Use to render a term whose pluralization depends on the content of a
667 ## variable. E.g., if "page" variable holds a range, the plural label
668 ## "pp." is selected instead of the singular "p.".
669 element cs:label { label.attributes, label.attributes-shared }
670 label.attributes =
671 attribute variable { variables.numbers | "locator" | "page" },
672 [ a:defaultValue = "long" ]
673 attribute form { "long" | "short" | "symbol" }?
674 label.attributes-shared =
675
676 ## Specify when the plural version of a term is selected.
677 [ a:defaultValue = "contextual" ]
678 attribute plural { "always" | "never" | "contextual" }?,
679 affixes,
680 font-formatting,
681 strip-periods,
682 text-case
683}
684# ==============================================================================
685
686## cs:group Rendering Element
687div {
688 rendering-element.group =
689
690 ## Use to group rendering elements. Groups are useful for setting a
691 ## delimiter for the group children, for organizing the layout of
692 ## bibliographic entries (using the "display" attribute), and for
693 ## suppressing the rendering of terms and verbatim text when variables
694 ## are empty.
695 element cs:group {
696 group.attributes,
697 affixes,
698 delimiter,
699 display,
700 font-formatting,
701 rendering-element+
702 }
703 group.attributes = notAllowed?
704}
705# ==============================================================================
706
707## Style Options
708div {
709 style.options =
710 style.demote-non-dropping-particle,
711 style.initialize-with-hyphen,
712 style.page-range-format,
713 names-inheritable-options,
714 name-inheritable-options
715 citation.options =
716 citation.cite-group-delimiter,
717 citation.collapse-options,
718 citation.disambiguate-options,
719 citation.near-note-distance,
720 names-inheritable-options,
721 name-inheritable-options
722 bibliography.options =
723 bibliography.hanging-indent,
724 bibliography.line-formatting-options,
725 bibliography.second-field-align,
726 bibliography.subsequent-author-substitute-options,
727 names-inheritable-options,
728 name-inheritable-options
729 style.demote-non-dropping-particle =
730
731 ## Specify whether the non-dropping particle is demoted in inverted
732 ## names (e.g., "Koning, W. de").
733 [ a:defaultValue = "display-and-sort" ]
734 attribute demote-non-dropping-particle {
735 "never" | "sort-only" | "display-and-sort"
736 }?
737 style.initialize-with-hyphen =
738
739 ## Specify whether compound given names (e.g., "Jean-Luc") are
740 ## initialized with ("J-L") or without a hyphen ("JL").
741 [ a:defaultValue = "true" ]
742 attribute initialize-with-hyphen { xsd:boolean }?
743 style.page-range-format =
744
745 ## Reformat page ranges in the "page" variable.
746 attribute page-range-format {
747 "expanded"
748 | "minimal"
749 | "minimal-two"
750 | "chicago"
751 | "chicago-15"
752 | "chicago-16"
753 }?
754 citation.cite-group-delimiter =
755
756 ## Activate cite grouping and specify the delimiter for cites within a
757 ## cite group.
758 [ a:defaultValue = ", " ] attribute cite-group-delimiter { text }?
759 citation.collapse-options =
760
761 ## Activate cite grouping and specify the method of citation collapsing.
762 attribute collapse {
763
764 ## Collapse ranges of numeric cites, e.g. from "[1,2,3]" to "[1-3]".
765 "citation-number"
766 |
767 ## Collapse cites by suppressing repeated names, e.g. from "(Doe
768 ## 2000, Doe 2001)" to "(Doe 2000, 2001)".
769 "year"
770 |
771 ## Collapse cites as with "year", but also suppresses repeated
772 ## years, e.g. from "(Doe 2000a, Doe 2000b)" to "(Doe 2000a, b)".
773 "year-suffix"
774 |
775 ## Collapses cites as with "year-suffix", but also collapses
776 ## ranges of year-suffixes, e.g. from "(Doe 2000a, Doe 2000b,
777 ## Doe 2000c)" to "(Doe 2000a-c)".
778 "year-suffix-ranged"
779 }?,
780
781 ## Specify the delimiter between year-suffixes. Defaults to the cite
782 ## delimiter.
783 attribute year-suffix-delimiter { text }?,
784
785 ## Specify the delimiter following a group of collapsed cites. Defaults
786 ## to the cite delimiter.
787 attribute after-collapse-delimiter { text }?
788 citation.disambiguate-options =
789
790 ## Set to "true" to activate disambiguation by showing names that were
791 ## originally hidden as a result of et-al abbreviation.
792 [ a:defaultValue = "false" ]
793 attribute disambiguate-add-names { xsd:boolean }?,
794
795 ## Set to "true" to activate disambiguation by expanding names, showing
796 ## initials or full given names.
797 [ a:defaultValue = "false" ]
798 attribute disambiguate-add-givenname { xsd:boolean }?,
799
800 ## Set to "true" to activate disambiguation by adding year-suffixes
801 ## (e.g., "(Doe 2007a, Doe 2007b)") for items from the same author(s)
802 ## and year.
803 [ a:defaultValue = "false" ]
804 attribute disambiguate-add-year-suffix { xsd:boolean }?,
805
806 ## Specify how name are expanded for disambiguation.
807 [ a:defaultValue = "by-cite" ]
808 attribute givenname-disambiguation-rule {
809
810 ## Each ambiguous names is progressively transformed until
811 ## disambiguated (when disambiguation is not possible, the name
812 ## remains in its original form).
813 "all-names"
814 |
815 ## As "all-names", but name expansion is limited to showing
816 ## initials.
817 "all-names-with-initials"
818 |
819 ## As "all-names", but disambiguation is limited to the first name
820 ## of each cite.
821 "primary-name"
822 |
823 ## As "all-names-with-initials", but disambiguation is limited to
824 ## the first name of each cite.
825 "primary-name-with-initials"
826 |
827 ## As "all-names", but only ambiguous names in ambiguous cites are
828 ## expanded.
829 "by-cite"
830 }?
831 citation.near-note-distance =
832
833 ## Set the number of preceding notes (footnotes or endnotes) within
834 ## which the current item needs to have been previously cited in order
835 ## for the "near-note" position to be "true".
836 [ a:defaultValue = "5" ]
837 attribute near-note-distance { xsd:integer }?
838 bibliography.hanging-indent =
839
840 ## Set to "true" to render bibliographic entries with hanging indents.
841 [ a:defaultValue = "false" ]
842 attribute hanging-indent { xsd:boolean }?
843 bibliography.line-formatting-options =
844
845 ## Set the spacing between bibliographic entries.
846 [ a:defaultValue = "1" ]
847 attribute entry-spacing { xsd:nonNegativeInteger }?,
848
849 ## Set the spacing between bibliographic lines.
850 [ a:defaultValue = "1" ]
851 attribute line-spacing {
852 xsd:integer { minExclusive = "0" }
853 }?
854 bibliography.second-field-align =
855
856 ## Use to align any subsequent lines of bibliographic entries with the
857 ## beginning of the second field.
858 attribute second-field-align {
859
860 ## Align the first field with the margin.
861 "flush"
862 |
863 ## Put the first field in the margin and align all subsequent
864 ## lines of text with the margin.
865 "margin"
866 }?
867 bibliography.subsequent-author-substitute-options =
868
869 ## Substitute names that repeat in subsequent bibliographic entries by
870 ## the attribute value.
871 attribute subsequent-author-substitute { text }?,
872
873 ## Specify the method of substitution of names repeated in subsequent
874 ## bibliographic entries.
875 [ a:defaultValue = "complete-all" ]
876 attribute subsequent-author-substitute-rule {
877
878 ## Requires a match of all rendered names in the name variable, and
879 ## substitutes once for all names.
880 "complete-all"
881 |
882 ## Requires a match of all rendered names in the name variable,
883 ## and substitutes for each name.
884 "complete-each"
885 |
886 ## Substitutes for each name, until the first mismatch.
887 "partial-each"
888 |
889 ## Substitutes the first name if it matches.
890 "partial-first"
891 }?
892
893 ## Options affecting cs:names, for cs:style, cs:citation and cs:bibliography.
894 names-inheritable-options =
895
896 ## Inheritable name option, companion for "delimiter" on cs:names.
897 attribute names-delimiter { text }?
898
899 ## Options affecting cs:name, for cs:style, cs:citation and cs:bibliography.
900 name-inheritable-options =
901 name.attributes,
902
903 ## Inheritable name option, companion for "delimiter" on cs:name.
904 attribute name-delimiter { text }?,
905
906 ## Inheritable name option, companion for "form" on cs:name.
907 [ a:defaultValue = "long" ]
908 attribute name-form { "long" | "short" | "count" }?
909}
910# ==============================================================================
911
912## cs:sort - Sorting
913div {
914 sort =
915
916 ## Specify how cites and bibliographic entries should be sorted. By
917 ## default, items appear in the order in which they were cited.
918 element cs:sort { sort.key+ }
919 sort.key =
920 element cs:key {
921 (attribute variable { variables }
922 | attribute macro { xsd:NMTOKEN }),
923
924 ## The minimum number of names needed in a name variable to activate
925 ## name list truncation. Overrides the values set on any
926 ## "et-al-(subsequent-)min" attributes.
927 attribute names-min { xsd:integer }?,
928
929 ## The number of names to render when name list truncation is
930 ## activated. Overrides the values set on the
931 ## "et-al-(subsequent-)use-first" attributes.
932 attribute names-use-first { xsd:integer }?,
933
934 ## Use to override the value of the "et-at-use-last" attribute.
935 attribute names-use-last { xsd:boolean }?,
936
937 ## Select between an ascending and descending sort.
938 [ a:defaultValue = "ascending" ]
939 attribute sort { "ascending" | "descending" }?
940 }
941}
942# ==============================================================================
943
944## Formatting attributes.
945div {
946 affixes =
947 [ a:defaultValue = "" ] attribute prefix { text }?,
948 [ a:defaultValue = "" ] attribute suffix { text }?
949 delimiter = attribute delimiter { text }?
950 display =
951
952 ## By default, bibliographic entries consist of continuous runs of text.
953 ## With the "display" attribute, portions of each entry can be
954 ## individually positioned.
955 attribute display {
956
957 ## Places the content in a block stretching from margin to margin.
958 "block"
959 |
960 ## Places the content in a block starting at the left margin.
961 "left-margin"
962 |
963 ## Places the content in a block to the right of a preceding
964 ## "left-margin" block.
965 "right-inline"
966 |
967 ## Places the content in a block indented to the right by a standard
968 ## amount.
969 "indent"
970 }?
971
972 ## The font-formatting attributes are based on those of CSS and XSL-FO.
973 font-formatting =
974 [ a:defaultValue = "normal" ]
975 attribute font-style { "italic" | "normal" | "oblique" }?,
976 [ a:defaultValue = "normal" ]
977 attribute font-variant { "normal" | "small-caps" }?,
978 [ a:defaultValue = "normal" ]
979 attribute font-weight { "normal" | "bold" | "light" }?,
980 [ a:defaultValue = "none" ]
981 attribute text-decoration { "none" | "underline" }?,
982 [ a:defaultValue = "baseline" ]
983 attribute vertical-align { "baseline" | "sup" | "sub" }?
984 quotes =
985
986 ## When set to "true", quotes are placed around the rendered text.
987 [ a:defaultValue = "false" ] attribute quotes { xsd:boolean }?
988 strip-periods =
989
990 ## When set to "true", periods are removed from the rendered text.
991 [ a:defaultValue = "false" ]
992 attribute strip-periods { xsd:boolean }?
993 text-case =
994 attribute text-case {
995
996 ## Renders text in lowercase.
997 "lowercase"
998 |
999 ## Renders text in uppercase.
1000 "uppercase"
1001 |
1002 ## Capitalizes the first character (other characters remain in
1003 ## their original case).
1004 "capitalize-first"
1005 |
1006 ## Capitalizes the first character of every word (other characters
1007 ## remain in their original case).
1008 "capitalize-all"
1009 |
1010 ## Renders text in title case.
1011 "title"
1012 |
1013 ## Renders text in sentence case.
1014 ## Deprecated. Will be removed in CSL 1.1
1015 "sentence"
1016 }?
1017}