Created
May 19, 2011 17:42
-
-
Save rmzelle/981311 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
namespace atom = "http://www.w3.org/2005/Atom" | |
namespace cs = "http://purl.org/net/xbiblio/csl" | |
namespace dc = "http://purl.org/dc/elements/1.1/" | |
namespace s = "http://www.ascc.net/xml/schematron" | |
namespace xhtml = "http://www.w3.org/1999/xhtml" | |
dc:title [ "Citation Style Language" ] | |
dc:creator [ "Bruce D'Arcus" ] | |
dc:creator [ "Simon Kornblith" ] | |
dc:copyright [ "Bruce D'Arcus and Simon Kornblith, 2007" ] | |
dc:rights [ "Permission to freely use, copy and distribute." ] | |
dc:description [ | |
"Citation Style Language (CSL) schema for describing bibliographic and citation formatting." | |
] | |
start = style | |
## The CSL data model consists of resources and variables. Primary resources are the | |
## citation object itself, as well as related agents and events. Variables are | |
## attributes of the resource: titles, dates, volume numbers, and so forth. From the | |
## perspective of CSL, resources templates involve a list of variables. By contrast, | |
## a variable can be accessed directly. | |
## In addition, CSL also contains structures for macros and parameter options. | |
div { | |
style = | |
element cs:style { | |
attribute xml:lang { xsd:language }?, | |
## Refers to the default locale for the style; should generally | |
## be set for any academic journal, since it can be used to ensure | |
## proper quote formatting and such. | |
attribute default-locale { xsd:language }?, | |
attribute class { "in-text" | "note" }, | |
info, | |
(terms? & macro* & citation & bibliography?)? | |
} | |
} | |
## info element | |
div { | |
## The Content model for the metadata is borrowed from Atom. | |
info = | |
element cs:info { | |
info-author* | |
& info-category* | |
& info-contributor* | |
& info-id | |
& info-issn? | |
& info-link* | |
& info-published? | |
& info-rights? | |
& info-source? | |
& info-summary? | |
& info-title | |
& info-updated | |
} | |
info-text = | |
attribute xml:lang { xsd:language }?, | |
text | |
info-author = element cs:author { info-Contributor-pattern } | |
info-Contributor-pattern = | |
element cs:name { text } | |
& element cs:email { text }? | |
& element cs:uri { xsd:anyURI }? | |
div { | |
## The schema attribute should be understood to specify the controlled | |
## CSL category list. The terms thus typically include further logic, | |
## such as the broader categories to which they belong ("humanities", | |
## "social sciences") as well as the class of style ("author-date", "note", etc.). | |
info-category = | |
element cs:category { | |
attribute term { info-fields | info-classes }, | |
attribute scheme { xsd:anyURI }?, | |
attribute label { text }? | |
} | |
## Add one or more field categories. The "generic-base" category is reserved | |
## for the handful of truly generic styles (APA, Harvard, etc.) from which most descend. | |
info-fields = | |
"anthropology" | |
| "astronomy" | |
| "biology" | |
| "botany" | |
| "chemistry" | |
| "communications" | |
| "engineering" | |
| "generic-base" | |
| "geography" | |
| "geology" | |
| "history" | |
| "humanities" | |
| "law" | |
| "linguistics" | |
| "literature" | |
| "math" | |
| "medicine" | |
| "philosophy" | |
| "physics" | |
| "psychology" | |
| "sociology" | |
| "science" | |
| "political_science" | |
| "social_science" | |
| "theology" | |
| "zoology" | |
| info-categories.extension | |
info-classes = "author-date" | "numeric" | "label" | "note" | "in-text" | |
## You can override in a customization schema, though please report | |
## obvious gaps for inclusion in the schema. | |
info-categories.extension = notAllowed | |
} | |
info-contributor = element cs:contributor { info-Contributor-pattern } | |
info-translator = element cs:translator { info-Contributor-pattern } | |
## As in Atom, the cs:id element is a required URI that is globally-unique | |
## and persistant. Once assigned it should never change. Ideally, of course, | |
## the URI resolves to the correct CSL file. | |
info-id = element cs:id { string } | |
info-link = | |
element cs:link { | |
attribute href { xsd:anyURI }, | |
## For transformation to Atom, the rel values should be expanded to include the | |
## base URI <http://purl.org/net/xbiblio/csl/relations#>. | |
attribute rel { | |
## The CSL file URI whose configuration content should be | |
## used for processing. To be used where, for example, a | |
## journal may use a generic publisher style that is shared | |
## with other journals. | |
"source" | |
| | |
## The CSL file URI on which the style is based. Since most | |
## styles are based on a handful of core styles, this can be | |
## useful metadata to see those relationships. | |
"template" | |
| | |
## The homepage URI for the style. | |
"homepage" | |
| | |
## A documentation URI for a style. | |
"documentation" | |
}?, | |
# type borrows from Atom schema pattern | |
## media-type | |
attribute type { | |
xsd:string { pattern = ".+/.+" } | |
}?, | |
attribute hreflang { xsd:language }?, | |
attribute title { text }?, | |
attribute length { text }?, | |
string | |
} | |
info-published = element cs:published { xsd:dateTime } | |
info-rights = element cs:rights { info-text } | |
info-source = element cs:source { info-title & info-link? & info-id } | |
info-summary = element cs:summary { info-text } | |
info-title = element cs:title { info-text } | |
## the issn for the journal the style corresponds to | |
# might use a regular expression pattern to validate content? | |
info-issn = element cs:issn { text } | |
info-updated = element cs:updated { xsd:dateTime? } | |
} | |
## Terms and forms | |
div { | |
cs-terms = | |
## Miscellaneous Terms | |
"accessed" | |
| "anonymous" | |
| "and" | |
| "and others" | |
| "at" | |
| "et-al" | |
| "forthcoming" | |
| "from" | |
| "in press" | |
| "ibid" | |
| "in" | |
| "no date" | |
| "references" | |
| "retrieved" | |
| "letter" | |
| "interview" | |
| "online" | |
| "cited" | |
| "edition" | |
| "internet" | |
| "presented at" | |
| | |
## Roles | |
"editor" | |
| "translator" | |
| "interviewer" | |
| "recipient" | |
| | |
## Months | |
"month-01" | |
| "month-02" | |
| "month-03" | |
| "month-04" | |
| "month-05" | |
| "month-06" | |
| "month-07" | |
| "month-08" | |
| "month-09" | |
| "month-10" | |
| "month-11" | |
| "month-12" | |
| | |
## Other | |
cs-terms.locator | |
| cs-terms.extension | |
| info-fields | |
## Locators | |
cs-terms.locator = | |
"book" | |
| "chapter" | |
| "column" | |
| "figure" | |
| "folio" | |
| "issue" | |
| "line" | |
| "note" | |
| "opus" | |
| "page" | |
| | |
## a synonym for "page" (to be deprecated) | |
"page-range" | |
| "page-first" | |
| "paragraph" | |
| "part" | |
| "section" | |
| "sub verbo" | |
| "volume" | |
| "verse" | |
## "symbol" and reverts to "short" if no term exists | |
## "verb-short" reverts to "verb" if no term exists | |
## all others revert to "long" if no term exists | |
cs-term-forms = "long" | "verb" | "short" | "verb-short" | "symbol" | cs-term-forms.extension | |
## include-period adds a period after a term if and only if the | |
## term used (not necessarily term specified; see above) is | |
## of form "short" or "verb-short" | |
include-period = attribute include-period { xsd:boolean }? | |
## Extension structures. You may override these in a customization | |
## schema. If you do, please contact the xbiblio project to add | |
## the term or form to the formal controlled list in the schema. | |
div { | |
cs-terms.extension = notAllowed | |
cs-term-forms.extension = notAllowed | |
} | |
} | |
## Locales | |
div { | |
## Terms are localized strings used as content for the cs:text field. | |
## It is only needed where you need to add a term not supported by | |
## default, or override an existing one. | |
terms = element cs:terms { locale+ } | |
## A language-specific wrapper. | |
locale = | |
element cs:locale { | |
## Where localization is other than that of the style, use the | |
## xml:lang attribute. | |
attribute xml:lang { xsd:language }?, | |
(simple-term | compound-term)+ | |
} | |
term-attributes = | |
attribute form { cs-term-forms }?, | |
attribute name { cs-terms }, | |
include-period | |
## Simple terms are basic strings, used to represent genres, media, etc. | |
simple-term = element cs:term { term-attributes, text } | |
## Compound terms are those whose output can be either singular or plural. | |
## Typically used for things like page number or editor labels. | |
compound-term = element cs:term { term-attributes, single-term, multiple-term } | |
multiple-term = element cs:multiple { text } | |
single-term = element cs:single { text } | |
} | |
## Names is a data type holding a text of authors, editors, or translators. | |
div { | |
names-attributes = | |
formatting, | |
delimiter, | |
attribute variable { | |
list { cs-names+ } | |
} | |
names = element cs:names { names-attributes, (name & name-label*), substitute? } | |
## Short version of "names" element, without children, allowed in <substitute> | |
names-short = element cs:names { names-attributes } | |
name = | |
element cs:name { | |
formatting, | |
## Indicates long (first name + last name, for Western names) or short | |
## (last name only, for Western names) form of name. Default is long | |
## form | |
attribute form { "long" | "short" }?, | |
## Controls appearance of "and"/"&". To disable, do not specify. | |
attribute and { "text" | "symbol" }?, | |
## Delimiter between names (delimiter between variables is on <names> | |
## tag, where it should be). This is ", " in "J. Doe, S. Smith." | |
delimiter, | |
## delimiter for the last name is a list | |
attribute delimiter-precedes-last { | |
## The "always" value means that result is "J. Doe, and T. Timmons" | |
"always" | |
| | |
## Default behavior; would result in "J. Doe and T. Timmons," but "J. Doe, | |
## S. Smith, and T. Timmons" (note comma preceding 'and'). | |
"never" | |
}?, | |
## Sets the first-author name order to correspond to the sort order of | |
## the bibliography; e.g. Doe, John (name-as-sort-order) vs. John Doe (w/o | |
## attribute). | |
attribute name-as-sort-order { "first" | "all" }?, | |
## The delimiter for personal name parts where sort order differs from | |
## display order (for example, in standard Western names). This is the | |
## ", " in "Doe, John." | |
attribute sort-separator { text }?, | |
## Indicates whether given name parts ought to be given as initials | |
## (e.g., J. K. Rowling) and the text to follow each initial. | |
attribute initialize-with { text }? | |
} | |
## Similar to label as below, but inherits variable from <names> tag | |
name-label = element cs:label { label-primitives } | |
## Substitutions, if the name does not exist | |
substitute = element cs:substitute { (names-short | cs-element)+ } | |
cs-names = | |
"author" | |
| "editor" | |
| "translator" | |
| "recipient" | |
| "interviewer" | |
| "publisher" | |
| "composer" | |
| "original-publisher" | |
| "original-author" | |
| | |
## to be used when citing a section of a book, for example, to distinguish the author | |
## proper from the author of the containing work | |
"container-author" | |
| | |
## use for series editor | |
"collection-editor" | |
} | |
## date | |
div { | |
date = | |
element cs:date { | |
attribute variable { | |
list { cs-date-tokens+ } | |
}, | |
formatting, | |
delimiter, | |
date-part+ | |
} | |
date-part = element cs:date-part { formatting, (month | day | year-other) } | |
## Month formats: | |
## long (default): January | |
## short: Jan | |
## numeric: 1 | |
## numeric-leading-zeros: 01 | |
month = | |
attribute name { "month" }, | |
(attribute form { "long" | "short" | "numeric" | "numeric-leading-zeros" }?, | |
include-period) | |
## Day formats: | |
## numeric (default): 5 | |
## numeric-leading-zeros: 05 | |
## ordinal: 5th | |
day = | |
attribute name { "day" }, | |
attribute form { "numeric" | "numeric-leading-zeros" | "ordinal" }? | |
## Year formats: | |
## long (default): 2005 | |
## short: 05 | |
## Other represents any non-month/day/year date part | |
year-other = | |
attribute name { "year" | "other" }, | |
attribute form { "short" | "long" }? | |
cs-date-tokens = "issued" | "event" | "accessed" | "container" | "original-date" | "submitted" | |
} | |
## The cs:text element is the main formatting element used to layout down content. | |
div { | |
cs-text = | |
element cs:text { | |
formatting, | |
(((( | |
## adds a variable belonging to this item | |
attribute variable { | |
list { variables+ } | |
} | |
& delimiter) | |
| | |
## adds the results of a macro, as specified in the main body of the CSL | |
attribute macro { token } | |
| | |
## A descriptor that locates sub-item content within a cited resource. Used | |
## in some styles to indicate specific page numbers for excerpted | |
## content, for example. | |
attribute point-locator { cs-terms.locator }), | |
attribute form { "short" | "long" }?) | |
| ( | |
## adds a localized term | |
attribute term { cs-terms }, | |
attribute form { cs-term-forms }?, | |
include-period, | |
plural?) | |
| | |
## adds the text in the value field. use sparingly. | |
## when dealing with localizable text, <text term="(term)"/> should be | |
## used, even if this means defining a new term. | |
attribute value { text }) | |
} | |
## The number markup directive matches the first number found in a field, | |
## and returns only that component. If no number is detected, the result | |
## is empty. A non-empty number may be subject to further formatting consisting | |
## of a form attribute whose value may be numeric, ordinal or roman to format | |
## it as a simple number (the default), an ordinal number (1st, 2nd, 3rd etc) | |
## or roman (i, ii, iii, iv etc). The text-case can also apply to capitalize | |
## the roman numbers for instance. The other normal formatting rules apply | |
## too (font-style, ...). When used in a conditional, number tests if | |
## there is a number present, allowing conditional formatting. | |
cs-number = | |
element cs:number { | |
formatting, | |
attribute variable { "edition" | "volume" | "issue" | "number" | "number-of-volumes" }, | |
attribute form { "numeric" | "ordinal" | "roman" }? | |
} | |
variables = | |
## the primary title for the cited item | |
"title" | |
| | |
## the secondary title for the cited item; for a book chapter, this | |
## would be a book title, for an article the journal title, etc. | |
"container-title" | |
| | |
## the tertiary title for the cited item; for example, a series title | |
"collection-title" | |
| | |
## collection number; for example, series number | |
"collection-number" | |
| | |
## title of a related original version; often useful in cases of translation | |
"original-title" | |
| | |
## the name of the publisher | |
"publisher" | |
| | |
## the location of the publisher | |
"publisher-place" | |
| | |
## the name of the archive | |
"archive" | |
| | |
## the location of the archive | |
"archive-place" | |
| | |
## the location within an archival collection (for example, box and folder) | |
"archive_location" | |
| | |
## issuing authority (for patents) or judicial authority (such as court | |
## for legal cases) | |
"authority" | |
| | |
## the name or title of a related event such as a conference or hearing | |
"event" | |
| | |
## the location or place for the related event | |
"event-place" | |
| | |
## | |
"page" | |
| | |
## a description to locate an item within some larger container or | |
## collection; a volume or issue number is a kind of locator, for example. | |
"locator" | |
| | |
## version description | |
"version" | |
| | |
## volume number for the container periodical | |
"volume" | |
| | |
## refers to the number of items in multi-volume books and such | |
"number-of-volumes" | |
| | |
## refers to the number of pages in a book or other document | |
"number-of-pages" | |
| | |
## the issue number for the container publication | |
"issue" | |
| | |
## | |
"chapter-number" | |
| | |
## medium description (DVD, CD, etc.) | |
"medium" | |
| | |
## the (typically publication) status of an item; for example "forthcoming" | |
"status" | |
| | |
## an edition description | |
"edition" | |
| | |
## a section description (for newspapers, etc.) | |
"section" | |
| | |
## | |
"genre" | |
| | |
## a short inline note, often used to refer to additional details of the resource | |
"note" | |
| | |
## notes made by a reader about the content of the resource | |
"annote" | |
| | |
## | |
"abstract" | |
| | |
## | |
"keyword" | |
| | |
## a document number; useful for reports and such | |
"number" | |
| | |
## for related referenced resources; this is here for legal case | |
## histories, but may be relevant for other contexts. | |
"references" | |
| | |
## | |
"URL" | |
| | |
## | |
"DOI" | |
| | |
## | |
"ISBN" | |
| | |
## | |
"call-number" | |
| | |
## the number used for the in-text citation mark in numeric styles | |
"citation-number" | |
| | |
## the label used for the in-text citation mark in label styles | |
"citation-label" | |
| | |
## The number of a preceding note containing the first reference to | |
## this item. Relevant only for note-based styles, and null for first references. | |
"first-reference-note-number" | |
| | |
## The year suffix for author-date styles; e.g. the 'a' in '1999a'. | |
"year-suffix" | |
} | |
## The cs:label element. | |
div { | |
## The label element is used to print text terms that depend on document content | |
## for pluralization. For labeling pages, this is preferable, as pages may be | |
## either singular or plural (p. or pp.) | |
label = | |
element cs:label { | |
label-primitives, | |
attribute variable { "page" | "locator" } | |
} | |
label-primitives = | |
formatting, | |
include-period?, | |
attribute form { cs-term-forms }, | |
## On cs:label, use to modify default pluralization behavior. | |
plural? | |
## modifies plualization behavior [ a:defaultValue = "contextual" ] | |
plural = attribute plural { xsd:boolean } | |
} | |
## The cs:macro element | |
div { | |
## The macro element works something like in BibTeX, and provides a ready-made | |
## bundle of formatting templates that can be easily reusesd elsewhere. | |
macro = | |
element cs:macro { | |
attribute name { token }, | |
cs-element+ | |
} | |
} | |
## The cs:group element | |
div { | |
## Group is used to provide delimiters and a common prefix/suffix. It is syntactic | |
## sugar for a conditional that tests for the presence of any non-null child variable | |
## or macro call results. So if there are no such results, then any <text term="(term)"> | |
## content will not be printed. | |
group = | |
element cs:group { | |
formatting, | |
delimiter, | |
## the class attribute can be used to pass on styling hooks for CSS and such | |
attribute class { token }?, | |
cs-element+ | |
} | |
} | |
div { | |
layout = element cs:layout { formatting, delimiter, cs-element } | |
cs-element = (names | date | label | cs-text | cs-number | choose | group)+ | |
} | |
## The cs:citation element | |
div { | |
## The cs:citation handles printing of citations. A citation may consist of | |
## one-or-more references to bibliographic sources. These references can either | |
## be simple in-text keys [doe99] or numeric markers [1], or more complex short | |
## descriptors generated at runtime common in author-date (Doe, 1999a) or note-based | |
## styles. | |
## note: one issue unique to note-based styles is that a citation reference | |
## effectively may become a full sentence. Implementers should consider this in | |
## their design and insert the final formatted citation in the correct title form. | |
## For example, if a citation is footnoted without any additional text, the first | |
## character of the output should be uppercased. By contrast, if the citation is | |
## within a pre-existing footnote, and preceded by non-citation text, then it should | |
## be printed as is. | |
citation = element cs:citation { (citation-options* & sort?), layout } | |
} | |
## The cs:bibliography element | |
div { | |
bibliography = element cs:bibliography { (bibliography-options* & sort?), layout } | |
} | |
## The cs:option element | |
div { | |
citation-options = et-al | et-al-subsequent | disambiguate | collapse | |
bibliography-options = | |
et-al | hanging-indent | second-field-align | subsequent-author-substitute | line-formatting | group-by | |
## Pattern for options that are either true or false | |
option-tf = attribute value { xsd:boolean } | |
## Sorting and grouping by author assumes by default that the string includes the entire list | |
## of authors. This option allows you to instead use first author only. | |
group-by = | |
element cs:option { | |
attribute name { "group-by" }, | |
attribute value { "first-author" } | |
} | |
## sets the bibliographic entries to be rendered with hanging-indents | |
hanging-indent = | |
element cs:option { | |
attribute name { "hanging-indent" }, | |
option-tf | |
} | |
## "citation-number" collapses numeric citations from [1, 2, 3] to [1-3] | |
## "year" collapses authors from (Doe 2000, Doe 2001) to (Doe 2000, | |
## 2001) | |
## "year-suffix" collapses as "year", but also collapses (Doe 2000a, | |
## Doe 2000b) to (Doe 2000a, b) (ignored if | |
## disambiguate-add-year-suffix is missing) | |
collapse = | |
element cs:option { | |
attribute name { "collapse" }, | |
attribute value { "citation-number" | "year" | "year-suffix" } | |
} | |
## second-field-align is useful for formatting a numbered list. It aligns | |
## any subsequent lines of a bibliography entry with the beginning of the | |
## second field. For example, if the first field is | |
## <text variable="citation-number" suffix=". "/> | |
## | |
## 1. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do | |
## eiusmod | |
## | |
## If set to "margin," then the first field is put in the margin and all | |
## subsequent lines of text are aligned with the margin. This is useful for | |
## IEEE style. | |
second-field-align = | |
element cs:option { | |
attribute name { "second-field-align" }, | |
attribute value { "true" | "margin" } | |
} | |
## substitutes subsequent recurrences of an author for a given string | |
subsequent-author-substitute = | |
element cs:option { | |
attribute name { "subsequent-author-substitute" }, | |
attribute value { text } | |
} | |
## defines parameters relating to "et al" formatting: | |
## et-al-min: the minimum number of contributors to use "et al" | |
## et-al-use-first: the number of contributors to explicitly print under | |
## "et al" conditions | |
## et-al-subsequent-*: same as above, but for subsequent references | |
## (citation only) | |
et-al = | |
element cs:option { | |
attribute name { "et-al-min" | "et-al-use-first" }, | |
attribute value { xsd:integer } | |
} | |
et-al-subsequent = | |
element cs:option { | |
attribute name { "et-al-subsequent-min" | "et-al-subsequent-use-first" }, | |
attribute value { xsd:integer } | |
} | |
## defines parameters relating to disambiguation, followed in the order given | |
## below until a citation is disambiguated | |
## disambiguate-add-names: add additional names, disregarding | |
## the "et-al" setting, to disambiguate the citations | |
## disambiguate-add-givenname: add a given name to a citation | |
## to disambiguate it (e.g., John Doe, 2005 vs. Doe, 2005) | |
## disambiguate-add-year-suffix: add a suffix to the year (e.g., | |
## 2007a) when there are two works by the same author published in | |
## the same year included in one bibliography | |
disambiguate = | |
element cs:option { | |
attribute name { | |
"disambiguate-add-givenname" | "disambiguate-add-names" | "disambiguate-add-year-suffix" | |
}, | |
option-tf | |
} | |
# defines spacing between entries and between lines | |
# line-spacing: in units of lines; default 1 | |
# entry-spacing: in units of line-spacing; default 1 | |
line-formatting = | |
element cs:option { | |
attribute name { "line-spacing" | "entry-spacing" }, | |
attribute value { xsd:integer } | |
} | |
} | |
## The cs:sort element | |
div { | |
all-variables = variables | cs-date-tokens | cs-names | |
## The sort element specifies the sort order for a citation or for the | |
## bibliography. If it is not added, citations are sorted according to user | |
## preferences, and bibliography is sorted according to order cited. | |
sort = element cs:sort { key+ } | |
key = | |
element cs:key { | |
(attribute variable { all-variables } | |
| attribute macro { token }), | |
## Default sort order is ascending | |
attribute sort { "ascending" | "descending" }? | |
} | |
} | |
## The cs:choose element | |
div { | |
## The choose elements provides a simple conditional structure. | |
choose = element cs:choose { if, else-if*, else? } | |
if = element cs:if { condition, cs-element* } | |
else-if = element cs:else-if { condition, cs-element* } | |
else = element cs:else { cs-element+ } | |
condition = | |
## If the entry is of a given type, this is true | |
attribute type { | |
list { cs-types+ } | |
}?, | |
## If a given variable exists, this is true | |
attribute variable { | |
list { all-variables+ } | |
}?, | |
## If a given variable contains numeric data, this is true | |
attribute is-numeric { | |
list { all-variables+ } | |
}?, | |
## If a given variable contains a date, this s true | |
attribute is-date { | |
list { all-variables+ } | |
}?, | |
## The position of a citation. Whenever position="ibid-with-locator" | |
## is true, position="ibid" is also true, and whenever position="ibid" | |
## is true, position="subsequent" is also true | |
attribute position { | |
list { ("first" | "subsequent" | "ibid" | "ibid-with-locator")+ } | |
}?, | |
## If text inside an <if disambiguate="true"> block can be used to | |
## differentiate two otherwise identical citations, it will be added. | |
## If the citations remain identical after its addition, it will not | |
## be added. | |
attribute disambiguate { xsd:boolean }?, | |
## A conditional on the locator for this specific entry | |
attribute locator { | |
list { cs-terms.locator+ } | |
}?, | |
attribute match { "all" | "any" | "none" }? | |
} | |
## variables and types; needs some more thought | |
div { | |
cs-types = | |
"article" | |
| "article-magazine" | |
| "article-newspaper" | |
| "article-journal" | |
| "bill" | |
| "book" | |
| "broadcast" | |
| "chapter" | |
| "entry" | |
| "entry-dictionary" | |
| "entry-encyclopedia" | |
| "figure" | |
| "graphic" | |
| "interview" | |
| "legislation" | |
| "legal_case" | |
| "manuscript" | |
| "map" | |
| "motion_picture" | |
| "musical_score" | |
| "pamphlet" | |
| "paper-conference" | |
| "patent" | |
| "post" | |
| "post-weblog" | |
| "personal_communication" | |
| "report" | |
| "review" | |
| "review-book" | |
| "song" | |
| "speech" | |
| "thesis" | |
| "treaty" | |
| "webpage" | |
} | |
## Formatting attributes. | |
div { | |
delimiter = attribute delimiter { text }? | |
## attributes are drawn directly from CSS and FO where possible | |
formatting = | |
attribute prefix { text }?, | |
attribute suffix { text }?, | |
attribute font-family { text }?, | |
attribute font-style { "italic" | "normal" | "oblique" }?, | |
attribute font-variant { "normal" | "small-caps" }?, | |
attribute font-weight { "normal" | "bold" | "light" }?, | |
attribute text-decoration { "none" | "underline" }?, | |
attribute vertical-align { "baseline" | "sup" | "sub" }?, | |
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" | |
}?, | |
## For examples such as abstracts and notes in annotated bibliographies | |
## use the "block" display value. Otherwise, content is displayed inline. | |
attribute display { "block" | "inline-block" }?, | |
attribute quotes { xsd:boolean }? | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment