Skip to content
Permalink
master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
namespace cs = "http://purl.org/net/xbiblio/csl"
namespace dc = "http://purl.org/dc/elements/1.1/"
dc:title [ "Citation Style Language - Extension Schema for MLZ" ]
dc:creator [ "Frank Bennett" ]
dc:creator [ "Rintze Zelle" ]
dc:rights [
"Copyright 2012 by Frank Bennett and Rintze Zelle. Permission to freely use, copy and distribute."
]
dc:description [
"Extends the official CSL schema for use with Multilingual Zotero."
]
include "csl-jurisdictions.rnc"
include "csl-repository.rnc" {
version = attribute version { "1.1mlz1" }
## Add "skip-words" attribute
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 }?,
## Resets the default list of skip-words. List is comma-delimited list of arbitrary strings.
attribute skip-words { text }?,
## Resets the default list of leading-noise-words. List is comma-delimited list of arbitrary strings.
attribute leading-noise-words { text }?,
## Resets
attribute name-as-sort-order { list { xsd:language+ } }?,
## Resets
attribute name-never-short { list { xsd:language+ } }?,
## Resets
attribute jurisdiction-preference { text }?
}
## Replace affixes by affixes-date on cs:date-part
locale.date.date-part =
element cs:date-part {
affixes-date, font-formatting, text-case, (day | month | year)
}
## Override definition of date to add use-default-locale
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"
|
# Month and day only
"month-day"
}?,
date.form,
use-default-locale,
rendering-element.date.date-part.localized*)
| (rendering-element.date.date-part.non-localized+, delimiter)),
affixes,
display,
font-formatting,
text-case
}
## For translations and reprints
rendering-element =
rendering-element.names
| rendering-element.date
| rendering-element.label
| rendering-element.text
| rendering-element.number
| rendering-element.choose
| rendering-element.group
| rendering-element.alternative
| rendering-element.alternative-text
## Terms (adding email, instant-message, television-broadcast, radio-broadcast, and podcast)
terms =
terms.gender-assignable
| terms.gender-variants
| terms.locator
|
## Contributor roles
variables.names
| "editortranslator"
|
## Miscellaneous terms
"accessed"
| "ad"
| "and"
| "and others"
| "anonymous"
| "at"
| "available at"
| "bc"
| "by"
| "circa"
| "cited"
| "email"
| "et-al"
| "forthcoming"
| "from"
| "ibid"
| "in"
| "in press"
| "instant-message"
| "internet"
| "interview"
| "letter"
| "no date"
| "online"
| "podcast"
| "presented at"
| "radio-broadcast"
| "reference"
| "retrieved"
| "scale"
| "television-broadcast"
| "version"
|
## Punctuation
"open-quote"
| "close-quote"
| "open-inner-quote"
| "close-inner-quote"
| "page-range-delimiter"
|
## Seasons
"season-01"
| "season-02"
| "season-03"
| "season-04"
|
## (legacy; remove in CSL 1.1)
category.field
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"
|
## Add imperial date form
"imperial"
}
year =
attribute name { "year" },
## Year forms: "long" ("2005"), "short" ("05").
[ a:defaultValue = "long" ] attribute form { "short" | "long" | "numeric" | "numeric-leading-zeros" | "imperial" }?,
range-delimiter
## Add support for locale-specific layouts
style.citation =
element cs:citation {
citation.options,
sort?,
citation.layout-locale*,
citation.layout-default
}
style.bibliography =
element cs:bibliography {
bibliography.options,
sort?,
bibliography.layout-locale*,
bibliography.layout
}
## Support for complex conditions
choose.if = ( if-simple | if-complex )
choose.else-if = ( else-if-simple | else-if-complex )
## Allow cs:institution element as child element of cs:names, add
## name-label-before, name-label-after
rendering-element.names =
element cs:names {
names.attributes,
attribute require-match { xsd:boolean }?,
(names.label-before?,
names.name?,
names.et-al?,
names.institution?,
names.label-after?),
names.substitute?
}
## Replace affixes by affixes-date on cs:date-part
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-date, font-formatting, text-case, (day | month | year)
}
## Allow "label-form" attribute to accompany "macro" on cs:text
## Allow "leading-noise-words" attribute to accompany "variable" on cs:text
text.attributes =
(
## Select a macro.
attribute macro { xsd:NMTOKEN },
attribute label-form { term.form }?,
[a:defaultValue = "false" ] attribute label-capitalize-if-first { xsd:boolean }?)
| (
## 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 }?,
## Force use of the style default locale for the term
use-default-locale)
|
## Specify verbatim text.
attribute value { text }
| (
## Select a variable.
attribute variable { variables.strings },
## Form of the variable
[ a:defaultValue = "long" ] attribute form { "short" | "long" }?,
## What to do with leading noise words
attribute leading-noise-words { "drop" | "demote" }?)
## Allow "locator" variable on, add "label-form" attribute to cs:number
number.attributes =
attribute variable { variables.numbers | "locator" },
## Number forms: "numeric" ("4"), "ordinal" ("4th"), "long-ordinal"
## ("fourth"), "roman" ("iv").
[ a:defaultValue = "numeric" ]
attribute form {
"numeric" | "ordinal" | "long-ordinal" | "roman"
}?,
attribute label-form { term.form }?,
[ a:defaultValue = "false" ] attribute label-capitalize-if-first { xsd:boolean }?,
attribute gender { "masculine" | "feminine" }?,
## Render only a substring of the number input. Forces rendering as cs:text,
## numeric attributes will be ignored when this is used.
[ a:defaultValue = "false" ]
attribute substring { xsd:integer }?
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 }?,
## Suppress output if number of names is at or above a min,
## or at or below a max value
attribute suppress-min { xsd:integer }?,
attribute suppress-max { xsd:integer }?
## Drop affixes
label.attributes-shared =
## Specify when the plural version of a term is selected.
[ a:defaultValue = "contextual" ]
attribute plural { "always" | "never" | "contextual" }?,
font-formatting,
strip-periods,
text-case
## Add back affixes (removed from label.attributes-shared)
label.attributes =
attribute variable { variables.numbers | "locator" | "page" },
[ a:defaultValue = "long" ]
attribute form { "long" | "short" | "symbol" | "static" }?,
[ a:defaultValue = "false" ]
attribute capitalize-if-first { xsd:boolean }?,
use-default-locale,
affixes
## Add "is-parallel", "quotes", "subgroup-delimiter",
## "subgroup-delimiter-precedes-last", attribute on cs:group
group.attributes =
quotes,
attribute subgroup-delimiter { text }?,
attribute subgroup-delimiter-precedes-last {
"contextual" | "always" | "never"
}?,
attribute no-repeat {
list { variables+ }
}?,
attribute parallel-first {
list { variables+ }
}?,
attribute parallel-last {
list { variables+ }
}?,
attribute parallel-last-to-first {
list { variables+ }
}?,
attribute parallel-delimiter-override {
xsd:string
}?,
attribute parallel-delimiter-override-on-suppress {
xsd:string
}?,
attribute layout-delimiter-override {
xsd:string
}?,
attribute reject {
"comma-safe" | "comma-safe-numbers-only" | "empty-label" | "empty-label-no-decor"
}?,
attribute require {
"comma-safe" | "comma-safe-numbers-only" | "empty-label" | "empty-label-no-decor"
}?
style.options =
style.demote-non-dropping-particle,
style.initialize-with-hyphen,
style.page-range-format,
style.year-range-format,
style.require-comma-on-symbol,
names-inheritable-options,
name-inheritable-options,
attribute disable-duplicate-year-suppression {
list { jurisdictions+ }
}?,
attribute track-containers { list { item-types+ } }?
## Add conditions, allow "type" on "variable", limit "position" to one
## position
condition =
## If used, the element content is only rendered if it disambiguates two
## otherwise identical citations. This attempt at disambiguation is only
## made after all other disambiguation methods have failed.
[ a:defaultValue = "true" ] attribute disambiguate { "true" | "check-ambiguity-and-backreference" }
|
## Tests whether the given variables contain numeric text.
attribute is-numeric {
list { variables+ }
}
|
## Tests whether the given date variables contain approximate dates.
attribute is-uncertain-date {
list { variables.dates+ }
}
|
## Tests whether the locator matches the given locator types.
attribute locator {
list { (terms.locator.testable | "sub-verbo")+ }
}
|
## Tests whether the cite position matches the given positions.
attribute position {
list {
"first"
| "container-subsequent"
| "subsequent"
| "ibid"
| "ibid-with-locator"
| "near-note"
| "far-note"
}
}
|
## Tests whether the item matches the given types.
attribute type {
list { item-types+ }
}
|
## Tests whether the default ("long") forms of the given variables
## contain non-empty values.
attribute variable {
list { variables+ | "type" }
}
|
## Tests whether the statement containing the condition is being
## executed inside cs:citation or cs:bibliography
attribute context { "citation" | "bibliography" | "alternative" }
|
## False if no date value, or date contains a month or season.
attribute has-year-only {
list { variables.dates+ }
}
|
## False if no date value, no month or season value, or date contains a day.
attribute has-to-month-or-season {
list { variables.dates+ }
}
|
## False if no date value, no month value, or no day value.
attribute has-day {
list { variables.dates+ }
}
| attribute is-plural { variables.names }
|
## Tests whether the jurisdiction variable matches the given jurisdictions (deprecated,
## as it will validate and match only for exact match to country code)
attribute jurisdiction {
list { jurisdictions+ }
}
|
## Tests whether the country variable matches the given country code
attribute country {
list { jurisdictions+ }
}
|
## Tests whether the page label matches the given label
attribute page {
list { terms.locator+ }
}
|
## Tests whether the number label matches the given label
## "number" is an anomaly
## In the Juris-M in-field abbrevs for extended locator labels,
## "no." stands for "issue".
## However, when testing for @number label, the processor
## assigns the label "number" as label to the number field
## if it has no value. So:
## no. 22 = issue 22
## 22 = number 22
attribute number {
list { terms.locator+ | "number" }
}
|
## True if the locale of the item matches the
## locale to be tested. Both are resolved before
## testing.
attribute locale {
list { xsd:language+ }
}
|
## True if the genre field of the item matches
## the respective argument, where "-" in the
## argument represents a space character.
attribute genre {
"email"
| "instant-message"
| "podcast"
| "radio-broadcast"
| "television-broadcast"
}
|
## Court class for Jurism
attribute court-class {
xsd:string
}
|
## Chapter count for two-stage formatting of chapters in bibliography
attribute container-multiple {
xsd:boolean
}
|
## Bibliography position as an item in a tracked container
attribute container-subsequent {
xsd:boolean
}
|
## Has multiple subunits separated by |
attribute has-subunit {
list { variables+ }
}
|
## Matches value of cite-form supplied by Abbrevs Filter
attribute cite-form {
xsd:integer
}
affixes =
[ a:defaultValue = "" ]
attribute prefix { string-no-leading-space }?,
[ a:defaultValue = "" ]
attribute suffix { string-no-trailing-space }?
## Add "normal" value on text-case attribute
text-case =
attribute text-case {
## display all text as lowercase
"lowercase"
|
## display all text as uppercase
"uppercase"
|
## capitalize first character; other characters
## displayed as is
"capitalize-first"
|
## capitalize first character of every word;
## other characters displayed lowercase
"capitalize-all"
|
## display as title case (the Chicago Manual
## of Style calls this "headline style")
"title"
|
## display as sentence case/sentence style
"sentence"
|
## do not perform formatting operations on input
"normal"
}?
## standard variables
variables.strings =
"abstract"
| "annote"
| "archive"
| "archive_location"
| "archive-place"
| "citation-label"
| "citation-number"
| "collection-title"
| "container-title"
| "container-title-short"
| "country"
| "dimensions"
| "DOI"
| "event"
| "event-place"
| "first-reference-note-number"
| "first-container-reference-note-number"
| "genre"
| "hereinafter"
| "ISBN"
| "ISSN"
| "jurisdiction"
| "keyword"
| "locator"
| "medium"
| "note"
| "original-publisher"
| "original-publisher-place"
| "original-title"
| "PMID"
| "PMCID"
| "publisher"
| "publisher-place"
| "references"
| "reviewed-title"
| "scale"
| "section"
| "source"
| "status"
| "title"
| "title-short"
| "title-main"
| "title-sub"
| "URL"
| "version"
| "volume-title"
| "year-suffix"
independent-style.style.info =
element cs:info {
info.title,
info.title-short?,
info.id,
independent-style.info.link.self,
independent-style.info.link.template*,
independent-style.info.link.documentation+,
info.author*,
info.contributor*,
info.category.citation-format,
info.category.field*,
info.issn?,
info.eissn?,
info.issnl?,
info.summary?,
info.published?,
info.updated,
info.rights,
info.law-module?
}
}
## Set court categories as prep for court-class condition
locale.court-class =
element cs:court-class {
attribute name { xsd:string },
attribute country { jurisdictions },
attribute courts { list { xsd:string+ } }
}
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? & locale.court-class*)
}
## Use default locale (for cs:text w/term, cs:label, and cs:date-part)
use-default-locale = ( [ a:defaultValue = "false" ] attribute default-locale { xsd:boolean }? )
info.law-module =
element cs:law-module {
attribute types {
list {
( "bill"
| "legal_case"
| "legislation"
| "bill"
| "report"
| "regulation"
| "hearing"
| "locator"
)+
}
}
}
term.form |= "static"
## Add support for locale-specific layouts
citation.layout-locale =
element cs:layout {
affixes,
delimiter,
font-formatting,
layout.locale,
rendering-element+
}
citation.layout-default =
element cs:layout {
affixes, delimiter, font-formatting, rendering-element+
}
## Add support for locale-specific layouts
bibliography.layout-locale =
element cs:layout {
affixes,
font-formatting,
layout.locale,
rendering-element+
}
layout.locale =
attribute locale {
list { xsd:language+ }
}
## Similar to label, but inherits variable from <names> tag
names.label-before =
element cs:label {
attribute form { term.form }?,
affixes-leading-name-label,
label.attributes-shared
}
names.label-after =
element cs:label {
attribute form { term.form }?,
affixes-trailing-name-label,
label.attributes-shared
}
## Institution, used to format institutional subunit names
## Institutional subunit names always follow personal names
## when this element is included in cs:names
names.institution =
element cs:institution {
institution-attributes,
## formatting and affixes of long and short
## forms may be controlled individually
element cs:institution-part {
((attribute name { "long" },
## apply formatting to long form only
## if short form is also available
attribute if-short { "true" | "false" }?)
| attribute name { "short" }),
text-case,
strip-periods,
font-formatting,
affixes-trailing-name-label
}*
}
## Attributes for use in formatting institution names
institution-attributes =
delimiter?,
attribute form { "long" | "short" }?,
attribute part-separator { text }?,
## The order of institution subunits can be reversed
attribute reverse-order { "true" | "false" }?,
(
## Include the first n institutional subunit names,
## even when a personal name is also present
attribute use-first { xsd:integer }
|
## Include the first n institutional subunit names
## only if no personal names are present
attribute substitute-use-first { xsd:integer })?,
## Controls appearance of "and"/"&". Default is "none".
attribute and { "text" | "symbol" | "none" }?,
## Always include the last n institutional subunit names,
## after first dropping subunits with stop-last
attribute use-last { xsd:integer }?,
## Always ignore the last n institutional subunit names
attribute stop-last { xsd:integer }?,
## Controls which forms of an institutional subunit name
## to include
attribute institution-parts {
"long" | "short" | "long-short" | "short-long"
}?,
## Suppress output if number of names is at or above a min,
## or at or below a max value
attribute suppress-min { xsd:integer }?,
attribute suppress-max { xsd:integer }?
## Abbreviation setting of ranges in year dates
## (by default no reformatting is applied to the input data).
style.year-range-format =
attribute year-range-format {
"expanded" | "minimal" | "minimal-two" | "chicago"
}?
style.require-comma-on-symbol =
attribute require-comma-on-symbol {
"never" | "always" | "after-number"
}?
## Strings for use in affixes
string-no-leading-space = xsd:string { pattern = "([^ ].*)*" }
string-no-trailing-space = xsd:string { pattern = "(.*[^ ])*" }
affixes-date =
attribute prefix { text }?,
attribute suffix { text }?
affixes-leading-name-label =
attribute prefix { string-no-leading-space }?,
attribute suffix { text }?
affixes-trailing-name-label =
attribute prefix { text }?,
attribute suffix { string-no-trailing-space }?
## Modifications to contents csl-terms.rnc
div {
## Add locator terms
terms.locator.testable |= "Chapter" | "Section" | "article" | "rule" | "title" | "number"
| "illustration" | "introduction" | "preamble" | "principle" | "publication" | "schedule"
| "series," | "subdivision" | "subsection" | "supplement" | "table" | "title"
| "subparagraph" | "amendment" | "annotation" | "appendix" | "bibliography" | "clause"
| "comment" | "decision" | "department" | "division" | "example" | "hypothetical" | "field"
## Add non-locator terms accompanying number variables
terms.non-locator-number-variables |=
"supplement"
|
## Extended numeric terms
xsd:string {
pattern =
"(chapter\-number|collection\-number|edition|issue|note|number|number\-of\-volumes|page|section|volume|)\-\d{2}"
}
}
## Additional item types (csl-types.rnc)
div {
item-types |=
"classic" | "gazette" | "regulation" | "treaty" | "standard" | "hearing" | "video" | "legal_commentary"
}
## Additional variables (csl-variables.rnc)
div {
## Add name variables
variables.names |= "authority" | "director" | "commenter" | "committee" | "contributor" | "alt-translator" | "dummy"
## Add date variables
variables.dates |= "available-date" | "locator-date" | "publication-date" | "alt-issued"
## Add number variables
variables.numbers |= "call-number" | "page" | "page-first" | "supplement" | "division" | "locator-extra" | "document-number"
## Add string variables
variables.strings |= "gazette-flag" | "admin-flag" | "document-name" | "archive_collection" | "language-name" | "language-name-original" | "alt-title" | "alt-container-title"
}
## For complex conditions
div {
if-simple = element cs:if { match?, condition+, rendering-element* }
if-complex = element cs:if { cs-conditions, rendering-element* }
else-if-simple = element cs:else-if { match?, condition+, rendering-element* }
else-if-complex = element cs:else-if { cs-conditions, rendering-element* }
cs-conditions = element cs:conditions { match, cs-condition+ }
cs-condition = element cs:condition { match?, condition+ }
}
div {
rendering-element.alternative =
## Use to enclose a set of rendering elements. Elements within the alternative
## scope will render in the destination locale of a translation or reprint.
## See also alternative-text.
element cs:alternative {
affixes,
delimiter,
rendering-element+
}
}
div {
rendering-element.alternative-text =
## Reruns the cs:layout scope with alternative data. Use alternative-text
## to add an annotation providing details of the source of a reprint or
## translation.
element cs:alternative-text {
affixes
}?
}
div {
exclude.types = attribute exclude-types { list { item-types+ } }
bibliography.options |= bibliography.hanging-indent,
bibliography.line-formatting-options,
bibliography.second-field-align,
bibliography.subsequent-author-substitute-options,
names-inheritable-options,
name-inheritable-options,
exclude.types?,
attribute consolidate-containers { list { item-types+ } }?
}