| namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0" |
| namespace bibo = "http://purl.org/ontology/bibo/" |
| namespace cs = "http://purl.org/net/xbiblio/csl" |
| namespace dc = "http://purl.org/dc/elements/1.1/" |
| namespace sch = "http://purl.oclc.org/dsdl/schematron" |
| namespace xhtml = "http://www.w3.org/1999/xhtml" |
| |
| # CSL schema metadata |
| |
| dc:title [ "Citation Style Language" ] |
| dc:creator [ "Bruce D'Arcus" ] |
| dc:creator [ "Simon Kornblith" ] |
| bibo:editor [ "Frank Bennett" ] |
| bibo:editor [ "Rintze Zelle" ] |
| dc:rights [ |
| "Copyright 2007-2020 Citation Style Language and contributors" |
| ] |
| dc:license [ "MIT license" ] |
| dc:description [ |
| "RELAX NG compact schema for the Citation Style Language (CSL)." |
| ] |
| |
| ## Subparts of the CSL schema |
| include "csl-choose.rnc" |
| include "csl-terms.rnc" |
| include "csl-types.rnc" |
| include "csl-variables.rnc" |
| include "csl-categories.rnc" |
| # ============================================================================== |
| |
| ## cs:style and cs:locale - Root Elements |
| div { |
| start = |
| independent-style.style | dependent-style.style | locale-file.locale |
| independent-style.style = |
| element cs:style { |
| |
| ## Select whether citations appear in-text or as notes. |
| attribute class { "in-text" | "note" }, |
| style.default-locale, |
| style.options, |
| version, |
| independent-style.style.info, |
| (style.locale* |
| & style.macro* |
| & style.citation |
| & style.bibliography?) |
| } |
| dependent-style.style = |
| element cs:style { |
| style.default-locale, version, dependent-style.style.info |
| } |
| style.default-locale = |
| |
| ## Set a default style locale. |
| attribute default-locale { xsd:language }? |
| version = |
| |
| ## Indicate CSL version compatibility. |
| [ a:defaultValue = "1.0" ] attribute version { "1.0" } |
| } |
| # ============================================================================== |
| |
| ## cs:info - Style and Locale File Metadata |
| div { |
| |
| ## Metadata for independent styles. |
| independent-style.style.info = |
| element cs:info { |
| info.author* |
| & info.category* |
| & info.contributor* |
| & info.id |
| & info.issn* |
| & info.eissn? |
| & info.issnl? |
| & independent-style.info.link* |
| & info.published? |
| & info.rights? |
| & info.summary? |
| & info.title |
| & info.title-short? |
| & info.updated |
| } |
| |
| ## Metadata for dependent styles. |
| dependent-style.style.info = |
| element cs:info { |
| info.author* |
| & info.category* |
| & info.contributor* |
| & info.id |
| & info.issn* |
| & info.eissn? |
| & info.issnl? |
| & dependent-style.info.link+ |
| & info.published? |
| & info.rights? |
| & info.summary? |
| & info.title |
| & info.title-short? |
| & info.updated |
| } |
| |
| ## Metadata for locale files. |
| locale-file.locale.info = |
| element cs:info { info.translator* & info.rights? & info.updated? } |
| info.author = element cs:author { personal-details } |
| info.contributor = element cs:contributor { personal-details } |
| info.translator = element cs:translator { personal-details } |
| personal-details = |
| element cs:name { text } |
| & element cs:email { text }? |
| & element cs:uri { xsd:anyURI }? |
| info.category = |
| |
| ## Specify the citation format of the style (using the "citation-format" |
| ## attribute) or the fields and disciplines for which the style is |
| ## relevant (using the "field" attribute). |
| element cs:category { |
| attribute citation-format { category.citation-format } |
| | attribute field { category.field } |
| } |
| info.id = |
| |
| ## Specify the unique and stable identifier for the style. A URI |
| ## is valid, but new styles should use a UUID to ensure stability |
| ## and uniqueness. |
| element cs:id { xsd:anyURI } |
| info.issn = |
| |
| ## Specify the journal's ISSN(s) for journal-specific styles. An ISSN |
| ## must consist of four digits, a hyphen, three digits, and a check |
| ## digit (a numeral digit or roman X), e.g. "1234-1231". |
| element cs:issn { issn } |
| info.eissn = |
| |
| ## Specify the journal's eISSN for journal-specific styles. |
| element cs:eissn { issn } |
| info.issnl = |
| |
| ## Specify the journal's ISSN-L for journal-specific styles. |
| element cs:issnl { issn } |
| issn = xsd:string { pattern = "\d{4}\-\d{3}(\d|x|X)" } |
| independent-style.info.link = |
| element cs:link { |
| attribute href { xsd:anyURI }, |
| |
| ## Specify how the URL relates to the style. |
| attribute rel { |
| |
| ## The URI of the CSL style itself. |
| "self" |
| | |
| ## URI of the style from which the current style is derived. |
| "template" |
| | |
| ## URI of style documentation. |
| "documentation" |
| }, |
| info-text |
| } |
| dependent-style.info.link = |
| element cs:link { |
| attribute href { xsd:anyURI }, |
| |
| ## Specify how the URL relates to the style. |
| attribute rel { |
| |
| ## The URI of the CSL style itself. |
| "self" |
| | |
| ## URI of the CSL style whose content should be used for |
| ## processing. Required for dependent styles. |
| "independent-parent" |
| | |
| ## URI of style documentation. |
| "documentation" |
| }, |
| info-text |
| } |
| info.published = |
| |
| ## Specify when the style was initially created or made available. |
| element cs:published { xsd:dateTime } |
| info.rights = |
| element cs:rights { |
| attribute license { xsd:anyURI }?, |
| info-text |
| } |
| info.summary = element cs:summary { info-text } |
| info.title = element cs:title { info-text } |
| info.title-short = |
| |
| ## Specify an abbreviated style title (e.g., "APA") |
| element cs:title-short { info-text } |
| info.updated = |
| |
| ## Specify when the style was last updated (e.g., |
| ## "2007-10-26T21:32:52+02:00") |
| element cs:updated { xsd:dateTime } |
| info-text = |
| attribute xml:lang { xsd:language }?, |
| text |
| } |
| # ============================================================================== |
| |
| ## cs:locale in Independent Styles |
| div { |
| style.locale = |
| |
| ## Use to (re)define localized terms, dates and options. |
| element cs:locale { |
| |
| ## Specify the affected locale(s). If "xml:lang" is not set, the |
| ## "cs:locale" element affects all locales. |
| attribute xml:lang { xsd:language }?, |
| (locale.style-options? & locale.date* & locale.terms?) |
| } |
| } |
| # ============================================================================== |
| |
| ## cs:locale Contents - Localization Data |
| div { |
| |
| ## Localized global options are specified as attributes in the |
| ## cs:style-options element. If future versions of CSL include localized |
| ## options that are citation or bibliography specific, the elements |
| ## cs:citation-options and cs:bibliography-options can be added. |
| locale.style-options = |
| element cs:style-options { |
| |
| ## Limit the "ordinal" form to the first day of the month. |
| [ a:defaultValue = "false" ] |
| attribute limit-day-ordinals-to-day-1 { xsd:boolean }?, |
| |
| ## Specify whether punctuation (a period or comma) is placed within |
| ## or outside (default) the closing quotation mark. |
| [ a:defaultValue = "false" ] |
| attribute punctuation-in-quote { xsd:boolean }? |
| } |
| locale-file.locale = |
| element cs:locale { |
| |
| ## Specify the locale of the locale file. |
| attribute xml:lang { xsd:language }, |
| version, |
| locale-file.locale.info?, |
| (locale.style-options & locale.date+ & locale.terms) |
| } |
| locale.date = |
| element cs:date { |
| date.form, |
| delimiter, |
| font-formatting, |
| text-case, |
| locale.date.date-part+ |
| } |
| date.form = |
| |
| ## Select the localized date format ("text" or "numeric"). |
| attribute form { |
| |
| ## Text date form (e.g., "December 15, 2005"). |
| "text" |
| | |
| ## Numeric date form (e.g., "2005-12-15"). |
| "numeric" |
| } |
| locale.date.date-part = |
| element cs:date-part { |
| affixes, font-formatting, text-case, (day | month | year) |
| } |
| locale.terms = element cs:terms { terms.term+ } |
| |
| ## The "cs:term" element can either hold a basic string, or "cs:single" and |
| ## "cs:multiple" child elements to give singular and plural forms of the term. |
| terms.term = |
| element cs:term { |
| term.attributes, |
| (text | (term.single, term.multiple)) |
| } |
| term.attributes = |
| (attribute name { terms }, |
| [ a:defaultValue = "long" ] attribute form { term.form }?) |
| | (attribute name { terms.ordinals }, |
| attribute form { "long" }?, |
| attribute gender-form { "masculine" | "feminine" }?, |
| attribute match { |
| "last-digit" | "last-two-digits" | "whole-number" |
| }?) |
| | (attribute name { terms.long-ordinals }, |
| attribute form { "long" }?, |
| attribute gender-form { "masculine" | "feminine" }) |
| | (attribute name { terms.gender-assignable }, |
| attribute form { "long" }?, |
| attribute gender { "masculine" | "feminine" }) |
| |
| ## "verb-short" reverts to "verb" if the "verb-short" form is not available. |
| ## "symbol" reverts to "short" if the "symbol" form is not available. |
| ## "verb" and "short" revert to "long" if the specified form is not available. |
| term.form = "long" | "verb" | "short" | "verb-short" | "symbol" |
| term.single = |
| |
| ## Singular version of the term. |
| element cs:single { text } |
| term.multiple = |
| |
| ## Plural version of the term. |
| element cs:multiple { text } |
| } |
| # ============================================================================== |
| |
| ## cs:macro |
| div { |
| style.macro = |
| |
| ## Use to create collections of (reusable) formatting instructions. |
| element cs:macro { |
| attribute name { xsd:NMTOKEN }, |
| rendering-element+ |
| } |
| } |
| # ============================================================================== |
| |
| ## Rendering Elements |
| div { |
| rendering-element = |
| rendering-element.names |
| | rendering-element.date |
| | rendering-element.label |
| | rendering-element.text |
| | rendering-element.number |
| | rendering-element.choose |
| | rendering-element.group |
| } |
| # ============================================================================== |
| |
| ## cs:citation and cs:bibliography |
| div { |
| style.citation = |
| |
| ## Use to describe the formatting of citations. |
| element cs:citation { citation.options, sort?, citation.layout } |
| style.bibliography = |
| |
| ## Use to describe the formatting of the bibliography. |
| element cs:bibliography { |
| bibliography.options, sort?, bibliography.layout |
| } |
| citation.layout = |
| element cs:layout { |
| affixes, delimiter, font-formatting, rendering-element+ |
| } |
| bibliography.layout = |
| element cs:layout { affixes, font-formatting, rendering-element+ } |
| } |
| # ============================================================================== |
| |
| ## cs:names Rendering Element |
| div { |
| rendering-element.names = |
| element cs:names { |
| names.attributes, |
| ((names.name?, names.et-al?) & names.label?), |
| names.substitute? |
| } |
| names.attributes = |
| attribute variable { |
| list { variables.names+ } |
| }, |
| affixes, |
| |
| ## Specify the delimiter for name lists of name variables rendered by |
| ## the same cs:names element. |
| delimiter, |
| display, |
| font-formatting |
| names.name = |
| element cs:name { |
| name.attributes, |
| |
| ## Select the "long" (first name + last name, for Western names), |
| ## "short" (last name only, for Western names), or "count" name form |
| ## (returning the number of names in the name variable, which can be |
| ## useful for some sorting algorithms). |
| [ a:defaultValue = "long" ] |
| attribute form { "long" | "short" | "count" }?, |
| affixes, |
| |
| ## Set the delimiter for names in a name variable (e.g., ", " in |
| ## "Doe, Smith") |
| [ a:defaultValue = ", " ] delimiter, |
| font-formatting, |
| name.name-part* |
| } |
| name.attributes = |
| |
| ## Use to separate the second-to-last and last name of a name list by |
| ## the "and" term or ampersand. |
| attribute and { |
| |
| ## Use the "and" term (e.g., "Doe, Johnson and Smith"). |
| "text" |
| | |
| ## Use the "ampersand" (e.g., "Doe, Johnson & Smith"). |
| "symbol" |
| }?, |
| |
| ## Specify when the name delimiter is used between a truncated name list |
| ## and the "et-al" (or "and others") term in case of et-al abbreviation |
| ## (e.g., "Smith, Doe et al." or "Smith, Doe, et al."). |
| [ a:defaultValue = "contextual" ] |
| attribute delimiter-precedes-et-al { |
| |
| ## The name delimiter is only used when the truncated name list |
| ## consists of two or more names. |
| "contextual" |
| | |
| ## The name delimiter is always used. |
| "always" |
| | |
| ## The name delimiter is never used. |
| "never" |
| | |
| ## The name delimiter is only used if the preceding name is inverted as |
| ## a result of the "name-as-sort-order" attribute. |
| "after-inverted-name" |
| }?, |
| |
| ## Specify when the name delimiter is used between the second-to-last |
| ## and last name of a non-truncated name list. Only has an effect when |
| ## the "and" term or ampersand is used (e.g., "Doe and Smith" or "Doe, |
| ## and Smith"). |
| [ a:defaultValue = "contextual" ] |
| attribute delimiter-precedes-last { |
| |
| ## The name delimiter is only used when the name list consists of |
| ## three or more names. |
| "contextual" |
| | |
| ## The name delimiter is always used. |
| "always" |
| | |
| ## The name delimiter is never used. |
| "never" |
| | |
| ## The name delimiter is only used if the preceding name is inverted as |
| ## a result of the "name-as-sort-order" attribute. |
| "after-inverted-name" |
| }?, |
| |
| ## Set the minimum number of names needed in a name variable to activate |
| ## et-al abbreviation. |
| attribute et-al-min { xsd:integer }?, |
| |
| ## Set the number of names to render when et-al abbreviation is active. |
| attribute et-al-use-first { xsd:integer }?, |
| |
| ## As "et-al-min", but only affecting subsequent citations to an item. |
| attribute et-al-subsequent-min { xsd:integer }?, |
| |
| ## As "et-al-use-first", but only affecting subsequent citations to an |
| ## item. |
| attribute et-al-subsequent-use-first { xsd:integer }?, |
| |
| ## If set to "true", the "et-al" (or "and others") term is replaced by |
| ## an ellipsis followed by the last name of the name variable. |
| [ a:defaultValue = "false" ] |
| attribute et-al-use-last { xsd:boolean }?, |
| |
| ## If set to "false", names are not initialized and "initialize-with" |
| ## only affects initials already present in the input data. |
| [ a:defaultValue = "true" ] attribute initialize { xsd:boolean }?, |
| |
| ## Activate initializing of given names. The attribute value is appended |
| ## to each initial (e.g., with ". ", "Orson Welles" becomes "O. Welles"). |
| attribute initialize-with { text }?, |
| |
| ## Specify whether (and which) names should be rendered in their sort |
| ## order (e.g., "Doe, John" instead of "John Doe"). |
| attribute name-as-sort-order { |
| |
| ## Render the first name of each name variable in sort order. |
| "first" |
| | |
| ## Render all names in sort order. |
| "all" |
| }?, |
| |
| ## Sets the delimiter for name-parts that have switched positions as a |
| ## result of "name-as-sort-order" (e.g., ", " in "Doe, John"). |
| [ a:defaultValue = ", " ] attribute sort-separator { text }? |
| name.name-part = |
| |
| ## Use to format individual name parts (e.g., "Jane DOE"). |
| element cs:name-part { |
| attribute name { "family" | "given" }, |
| affixes, |
| font-formatting, |
| text-case |
| } |
| names.et-al = |
| |
| ## Specify the term used for et-al abbreviation and its formatting. |
| element cs:et-al { |
| |
| ## Select the term to use for et-al abbreviation. |
| [ a:defaultValue = "et-al" ] |
| attribute term { "et-al" | "and others" }?, |
| font-formatting |
| } |
| |
| ## Inherits variable from the parent cs:names element. |
| names.label = |
| element cs:label { |
| [ a:defaultValue = "long" ] attribute form { term.form }?, |
| label.attributes-shared |
| } |
| names.substitute = |
| |
| ## Specify substitution options when the name variables selected on the |
| ## parent cs:names element are empty. |
| element cs:substitute { (substitute.names | rendering-element)+ } |
| |
| ## Short version of cs:names, without children, allowed in cs:substitute. |
| substitute.names = element cs:names { names.attributes } |
| } |
| # ============================================================================== |
| |
| ## cs:date Rendering Element |
| div { |
| rendering-element.date = |
| element cs:date { |
| attribute variable { variables.dates }, |
| (( |
| ## Limit the date parts rendered. |
| [ a:defaultValue = "year-month-day" ] |
| attribute date-parts { |
| |
| ## Year, month and day |
| "year-month-day" |
| | |
| ## Year and month |
| "year-month" |
| | |
| ## Year only |
| "year" |
| }?, |
| date.form, |
| rendering-element.date.date-part.localized*) |
| | (rendering-element.date.date-part.non-localized+, delimiter)), |
| affixes, |
| display, |
| font-formatting, |
| text-case |
| } |
| rendering-element.date.date-part.localized = |
| |
| ## Specify overriding formatting for localized dates (affixes |
| ## cannot be overridden, as these are considered locale-specific). |
| ## Example uses are forcing the use of leading-zeros, or of the |
| ## "short" month form. Has no effect on which, and in what order, |
| ## date parts are rendered. |
| element cs:date-part { |
| font-formatting, text-case, (day | month | year) |
| } |
| rendering-element.date.date-part.non-localized = |
| |
| ## Specify, in the desired order, the date parts that should be |
| ## rendered and their formatting. |
| element cs:date-part { |
| affixes, font-formatting, text-case, (day | month | year) |
| } |
| day = |
| attribute name { "day" }, |
| |
| ## Day forms: "numeric" ("5"), "numeric-leading-zeros" ("05"), "ordinal" |
| ## ("5th"). |
| [ a:defaultValue = "numeric" ] |
| attribute form { "numeric" | "numeric-leading-zeros" | "ordinal" }?, |
| range-delimiter |
| month = |
| attribute name { "month" }, |
| |
| ## Months forms: "long" (e.g., "January"), "short" ("Jan."), "numeric" |
| ## ("1"), and "numeric-leading-zeros" ("01"). |
| [ a:defaultValue = "long" ] |
| attribute form { |
| "long" | "short" | "numeric" | "numeric-leading-zeros" |
| }?, |
| range-delimiter, |
| strip-periods |
| year = |
| attribute name { "year" }, |
| |
| ## Year forms: "long" ("2005"), "short" ("05"). |
| [ a:defaultValue = "long" ] attribute form { "short" | "long" }?, |
| range-delimiter |
| range-delimiter = |
| |
| ## Specify a delimiter for date ranges (by default the en-dash). A custom |
| ## delimiter is retrieved from the largest date part ("day", "month" or |
| ## "year") that differs between the two dates. |
| [ a:defaultValue = "–" ] attribute range-delimiter { text }? |
| } |
| # ============================================================================== |
| |
| ## cs:text Rendering Element |
| div { |
| rendering-element.text = |
| |
| ## Use to call macros, render variables, terms, or verbatim text. |
| element cs:text { |
| text.attributes, |
| affixes, |
| display, |
| font-formatting, |
| quotes, |
| strip-periods, |
| text-case |
| } |
| text.attributes = |
| |
| ## Select a macro. |
| attribute macro { xsd:NMTOKEN } |
| | ( |
| ## Select a term. |
| attribute term { terms }, |
| [ a:defaultValue = "long" ] attribute form { term.form }?, |
| |
| ## Specify term plurality: singular ("false") or plural ("true"). |
| [ a:defaultValue = "false" ] attribute plural { xsd:boolean }?) |
| | |
| ## Specify verbatim text. |
| attribute value { text } |
| | ( |
| ## Select a variable. |
| attribute variable { variables.standard }, |
| [ a:defaultValue = "long" ] attribute form { "short" | "long" }?) |
| } |
| # ============================================================================== |
| |
| ## cs:number Rendering Element |
| div { |
| rendering-element.number = |
| |
| ## Use to render a number variable. |
| element cs:number { |
| number.attributes, affixes, display, font-formatting, text-case |
| } |
| number.attributes = |
| attribute variable { variables.numbers }, |
| |
| ## Number forms: "numeric" ("4"), "ordinal" ("4th"), "long-ordinal" |
| ## ("fourth"), "roman" ("iv"). |
| [ a:defaultValue = "numeric" ] |
| attribute form { "numeric" | "ordinal" | "long-ordinal" | "roman" }? |
| } |
| # ============================================================================== |
| |
| ## cs:label Rendering Element |
| div { |
| rendering-element.label = |
| |
| ## Use to render a term whose pluralization depends on the content of a |
| ## variable. E.g., if "page" variable holds a range, the plural label |
| ## "pp." is selected instead of the singular "p.". |
| element cs:label { label.attributes, label.attributes-shared } |
| label.attributes = |
| attribute variable { variables.numbers | "locator" | "page" }, |
| [ a:defaultValue = "long" ] |
| attribute form { "long" | "short" | "symbol" }? |
| label.attributes-shared = |
| |
| ## Specify when the plural version of a term is selected. |
| [ a:defaultValue = "contextual" ] |
| attribute plural { "always" | "never" | "contextual" }?, |
| affixes, |
| font-formatting, |
| strip-periods, |
| text-case |
| } |
| # ============================================================================== |
| |
| ## cs:group Rendering Element |
| div { |
| rendering-element.group = |
| |
| ## Use to group rendering elements. Groups are useful for setting a |
| ## delimiter for the group children, for organizing the layout of |
| ## bibliographic entries (using the "display" attribute), and for |
| ## suppressing the rendering of terms and verbatim text when variables |
| ## are empty. |
| element cs:group { |
| group.attributes, |
| affixes, |
| delimiter, |
| display, |
| font-formatting, |
| rendering-element+ |
| } |
| group.attributes = notAllowed? |
| } |
| # ============================================================================== |
| |
| ## Style Options |
| div { |
| style.options = |
| style.demote-non-dropping-particle, |
| style.initialize-with-hyphen, |
| style.page-range-format, |
| names-inheritable-options, |
| name-inheritable-options |
| citation.options = |
| citation.cite-group-delimiter, |
| citation.collapse-options, |
| citation.disambiguate-options, |
| citation.near-note-distance, |
| names-inheritable-options, |
| name-inheritable-options |
| bibliography.options = |
| bibliography.hanging-indent, |
| bibliography.line-formatting-options, |
| bibliography.second-field-align, |
| bibliography.subsequent-author-substitute-options, |
| names-inheritable-options, |
| name-inheritable-options |
| style.demote-non-dropping-particle = |
| |
| ## Specify whether the non-dropping particle is demoted in inverted |
| ## names (e.g., "Koning, W. de"). |
| [ a:defaultValue = "display-and-sort" ] |
| attribute demote-non-dropping-particle { |
| "never" | "sort-only" | "display-and-sort" |
| }? |
| style.initialize-with-hyphen = |
| |
| ## Specify whether compound given names (e.g., "Jean-Luc") are |
| ## initialized with ("J-L") or without a hyphen ("JL"). |
| [ a:defaultValue = "true" ] |
| attribute initialize-with-hyphen { xsd:boolean }? |
| style.page-range-format = |
| |
| ## Reformat page ranges in the "page" variable. |
| attribute page-range-format { |
| "expanded" |
| | "minimal" |
| | "minimal-two" |
| | "chicago" |
| | "chicago-15" |
| | "chicago-16" |
| }? |
| citation.cite-group-delimiter = |
| |
| ## Activate cite grouping and specify the delimiter for cites within a |
| ## cite group. |
| [ a:defaultValue = ", " ] attribute cite-group-delimiter { text }? |
| citation.collapse-options = |
| |
| ## Activate cite grouping and specify the method of citation collapsing. |
| attribute collapse { |
| |
| ## Collapse ranges of numeric cites, e.g. from "[1,2,3]" to "[1-3]". |
| "citation-number" |
| | |
| ## Collapse cites by suppressing repeated names, e.g. from "(Doe |
| ## 2000, Doe 2001)" to "(Doe 2000, 2001)". |
| "year" |
| | |
| ## Collapse cites as with "year", but also suppresses repeated |
| ## years, e.g. from "(Doe 2000a, Doe 2000b)" to "(Doe 2000a, b)". |
| "year-suffix" |
| | |
| ## Collapses cites as with "year-suffix", but also collapses |
| ## ranges of year-suffixes, e.g. from "(Doe 2000a, Doe 2000b, |
| ## Doe 2000c)" to "(Doe 2000a-c)". |
| "year-suffix-ranged" |
| }?, |
| |
| ## Specify the delimiter between year-suffixes. Defaults to the cite |
| ## delimiter. |
| attribute year-suffix-delimiter { text }?, |
| |
| ## Specify the delimiter following a group of collapsed cites. Defaults |
| ## to the cite delimiter. |
| attribute after-collapse-delimiter { text }? |
| citation.disambiguate-options = |
| |
| ## Set to "true" to activate disambiguation by showing names that were |
| ## originally hidden as a result of et-al abbreviation. |
| [ a:defaultValue = "false" ] |
| attribute disambiguate-add-names { xsd:boolean }?, |
| |
| ## Set to "true" to activate disambiguation by expanding names, showing |
| ## initials or full given names. |
| [ a:defaultValue = "false" ] |
| attribute disambiguate-add-givenname { xsd:boolean }?, |
| |
| ## Set to "true" to activate disambiguation by adding year-suffixes |
| ## (e.g., "(Doe 2007a, Doe 2007b)") for items from the same author(s) |
| ## and year. |
| [ a:defaultValue = "false" ] |
| attribute disambiguate-add-year-suffix { xsd:boolean }?, |
| |
| ## Specify how name are expanded for disambiguation. |
| [ a:defaultValue = "by-cite" ] |
| attribute givenname-disambiguation-rule { |
| |
| ## Each ambiguous names is progressively transformed until |
| ## disambiguated (when disambiguation is not possible, the name |
| ## remains in its original form). |
| "all-names" |
| | |
| ## As "all-names", but name expansion is limited to showing |
| ## initials. |
| "all-names-with-initials" |
| | |
| ## As "all-names", but disambiguation is limited to the first name |
| ## of each cite. |
| "primary-name" |
| | |
| ## As "all-names-with-initials", but disambiguation is limited to |
| ## the first name of each cite. |
| "primary-name-with-initials" |
| | |
| ## As "all-names", but only ambiguous names in ambiguous cites are |
| ## expanded. |
| "by-cite" |
| }? |
| citation.near-note-distance = |
| |
| ## Set the number of preceding notes (footnotes or endnotes) within |
| ## which the current item needs to have been previously cited in order |
| ## for the "near-note" position to be "true". |
| [ a:defaultValue = "5" ] |
| attribute near-note-distance { xsd:integer }? |
| bibliography.hanging-indent = |
| |
| ## Set to "true" to render bibliographic entries with hanging indents. |
| [ a:defaultValue = "false" ] |
| attribute hanging-indent { xsd:boolean }? |
| bibliography.line-formatting-options = |
| |
| ## Set the spacing between bibliographic entries. |
| [ a:defaultValue = "1" ] |
| attribute entry-spacing { xsd:nonNegativeInteger }?, |
| |
| ## Set the spacing between bibliographic lines. |
| [ a:defaultValue = "1" ] |
| attribute line-spacing { |
| xsd:integer { minExclusive = "0" } |
| }? |
| bibliography.second-field-align = |
| |
| ## Use to align any subsequent lines of bibliographic entries with the |
| ## beginning of the second field. |
| attribute second-field-align { |
| |
| ## Align the first field with the margin. |
| "flush" |
| | |
| ## Put the first field in the margin and align all subsequent |
| ## lines of text with the margin. |
| "margin" |
| }? |
| bibliography.subsequent-author-substitute-options = |
| |
| ## Substitute names that repeat in subsequent bibliographic entries by |
| ## the attribute value. |
| attribute subsequent-author-substitute { text }?, |
| |
| ## Specify the method of substitution of names repeated in subsequent |
| ## bibliographic entries. |
| [ a:defaultValue = "complete-all" ] |
| attribute subsequent-author-substitute-rule { |
| |
| ## Requires a match of all rendered names in the name variable, and |
| ## substitutes once for all names. |
| "complete-all" |
| | |
| ## Requires a match of all rendered names in the name variable, |
| ## and substitutes for each name. |
| "complete-each" |
| | |
| ## Substitutes for each name, until the first mismatch. |
| "partial-each" |
| | |
| ## Substitutes the first name if it matches. |
| "partial-first" |
| }? |
| |
| ## Options affecting cs:names, for cs:style, cs:citation and cs:bibliography. |
| names-inheritable-options = |
| |
| ## Inheritable name option, companion for "delimiter" on cs:names. |
| attribute names-delimiter { text }? |
| |
| ## Options affecting cs:name, for cs:style, cs:citation and cs:bibliography. |
| name-inheritable-options = |
| name.attributes, |
| |
| ## Inheritable name option, companion for "delimiter" on cs:name. |
| attribute name-delimiter { text }?, |
| |
| ## Inheritable name option, companion for "form" on cs:name. |
| [ a:defaultValue = "long" ] |
| attribute name-form { "long" | "short" | "count" }? |
| } |
| # ============================================================================== |
| |
| ## cs:sort - Sorting |
| div { |
| sort = |
| |
| ## Specify how cites and bibliographic entries should be sorted. By |
| ## default, items appear in the order in which they were cited. |
| element cs:sort { sort.key+ } |
| sort.key = |
| element cs:key { |
| (attribute variable { variables } |
| | attribute macro { xsd:NMTOKEN }), |
| |
| ## The minimum number of names needed in a name variable to activate |
| ## name list truncation. Overrides the values set on any |
| ## "et-al-(subsequent-)min" attributes. |
| attribute names-min { xsd:integer }?, |
| |
| ## The number of names to render when name list truncation is |
| ## activated. Overrides the values set on the |
| ## "et-al-(subsequent-)use-first" attributes. |
| attribute names-use-first { xsd:integer }?, |
| |
| ## Use to override the value of the "et-at-use-last" attribute. |
| attribute names-use-last { xsd:boolean }?, |
| |
| ## Select between an ascending and descending sort. |
| [ a:defaultValue = "ascending" ] |
| attribute sort { "ascending" | "descending" }? |
| } |
| } |
| # ============================================================================== |
| |
| ## Formatting attributes. |
| div { |
| affixes = |
| [ a:defaultValue = "" ] attribute prefix { text }?, |
| [ a:defaultValue = "" ] attribute suffix { text }? |
| delimiter = attribute delimiter { text }? |
| display = |
| |
| ## By default, bibliographic entries consist of continuous runs of text. |
| ## With the "display" attribute, portions of each entry can be |
| ## individually positioned. |
| attribute display { |
| |
| ## Places the content in a block stretching from margin to margin. |
| "block" |
| | |
| ## Places the content in a block starting at the left margin. |
| "left-margin" |
| | |
| ## Places the content in a block to the right of a preceding |
| ## "left-margin" block. |
| "right-inline" |
| | |
| ## Places the content in a block indented to the right by a standard |
| ## amount. |
| "indent" |
| }? |
| |
| ## The font-formatting attributes are based on those of CSS and XSL-FO. |
| font-formatting = |
| [ a:defaultValue = "normal" ] |
| attribute font-style { "italic" | "normal" | "oblique" }?, |
| [ a:defaultValue = "normal" ] |
| attribute font-variant { "normal" | "small-caps" }?, |
| [ a:defaultValue = "normal" ] |
| attribute font-weight { "normal" | "bold" | "light" }?, |
| [ a:defaultValue = "none" ] |
| attribute text-decoration { "none" | "underline" }?, |
| [ a:defaultValue = "baseline" ] |
| attribute vertical-align { "baseline" | "sup" | "sub" }? |
| quotes = |
| |
| ## When set to "true", quotes are placed around the rendered text. |
| [ a:defaultValue = "false" ] attribute quotes { xsd:boolean }? |
| strip-periods = |
| |
| ## When set to "true", periods are removed from the rendered text. |
| [ a:defaultValue = "false" ] |
| attribute strip-periods { xsd:boolean }? |
| text-case = |
| attribute text-case { |
| |
| ## Renders text in lowercase. |
| "lowercase" |
| | |
| ## Renders text in uppercase. |
| "uppercase" |
| | |
| ## Capitalizes the first character (other characters remain in |
| ## their original case). |
| "capitalize-first" |
| | |
| ## Capitalizes the first character of every word (other characters |
| ## remain in their original case). |
| "capitalize-all" |
| | |
| ## Renders text in title case. |
| "title" |
| | |
| ## Renders text in sentence case. |
| ## Deprecated. Will be removed in CSL 1.1 |
| "sentence" |
| }? |
| } |