summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/bibtex/biber/data/schemata/bcf.rng
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/bibtex/biber/data/schemata/bcf.rng')
-rw-r--r--Master/texmf-dist/source/bibtex/biber/data/schemata/bcf.rng1267
1 files changed, 1267 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/bibtex/biber/data/schemata/bcf.rng b/Master/texmf-dist/source/bibtex/biber/data/schemata/bcf.rng
new file mode 100644
index 00000000000..cca6302496e
--- /dev/null
+++ b/Master/texmf-dist/source/bibtex/biber/data/schemata/bcf.rng
@@ -0,0 +1,1267 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:bcf="https://sourceforge.net/projects/biblatex" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <start>
+ <element name="bcf:controlfile">
+ <!--
+ This is usually the same as the biblatex version string but not necessarily.
+ Sometimes the BCF format version doesn't change between biblatex releases
+ -->
+ <attribute name="version">
+ <data type="string">
+ <param name="minLength">1</param>
+ </data>
+ </attribute>
+ <!--
+ "Global" Biber options. It's not clear what a non-global biber option
+ would be but just in case, we have the option ...
+ -->
+ <element name="bcf:options">
+ <attribute name="component">
+ <value>biber</value>
+ </attribute>
+ <attribute name="type">
+ <value>global</value>
+ </attribute>
+ <ref name="bblencoding"/>
+ <ref name="bibencoding"/>
+ <ref name="debug"/>
+ <ref name="mincrossrefs"/>
+ <ref name="sortcase"/>
+ <optional>
+ <ref name="sortlocale"/>
+ </optional>
+ <ref name="sortupper"/>
+ </element>
+ <!--
+ Global BibLaTeX options. That is, options that apply to all
+ entrytypes (unless a more specifically scoped option is specified)
+ -->
+ <element name="bcf:options">
+ <attribute name="component">
+ <value>biblatex</value>
+ </attribute>
+ <attribute name="type">
+ <value>global</value>
+ </attribute>
+ <ref name="alphaothers"/>
+ <ref name="labelalpha"/>
+ <ref name="labelnamespec"/>
+ <ref name="labelyear"/>
+ <ref name="labelyearspec"/>
+ <ref name="maxitems"/>
+ <ref name="maxnames"/>
+ <ref name="minitems"/>
+ <ref name="minnames"/>
+ <ref name="singletitle"/>
+ <optional>
+ <ref name="sortalphaothers"/>
+ </optional>
+ <ref name="sortlos"/>
+ <ref name="terseinits"/>
+ <ref name="uniquename"/>
+ <ref name="useauthor"/>
+ <ref name="useeditor"/>
+ <ref name="useprefix"/>
+ <ref name="usetranslator"/>
+ </element>
+ <zeroOrMore>
+ <!-- Per-entrytype BibLaTeX options -->
+ <element name="bcf:options">
+ <attribute name="component">
+ <value>biblatex</value>
+ </attribute>
+ <attribute name="type">
+ <data type="NCName"/>
+ </attribute>
+ <optional>
+ <ref name="alphaothers"/>
+ </optional>
+ <optional>
+ <ref name="labelalpha"/>
+ </optional>
+ <optional>
+ <ref name="labelnamespec"/>
+ </optional>
+ <optional>
+ <ref name="labelyear"/>
+ </optional>
+ <optional>
+ <ref name="labelyearspec"/>
+ </optional>
+ <optional>
+ <ref name="singletitle"/>
+ </optional>
+ <optional>
+ <ref name="skipbib"/>
+ </optional>
+ <optional>
+ <ref name="skiplab"/>
+ </optional>
+ <optional>
+ <ref name="skiplos"/>
+ </optional>
+ <optional>
+ <ref name="sortalphaothers"/>
+ </optional>
+ <optional>
+ <ref name="uniquename"/>
+ </optional>
+ <optional>
+ <ref name="useauthor"/>
+ </optional>
+ <optional>
+ <ref name="useeditor"/>
+ </optional>
+ <optional>
+ <ref name="useprefix"/>
+ </optional>
+ <optional>
+ <ref name="usetranslator"/>
+ </optional>
+ </element>
+ </zeroOrMore>
+ <optional>
+ <!-- Display modes definition -->
+ <element name="bcf:displaymodes">
+ <oneOrMore>
+ <element name="bcf:displaymode">
+ <element name="bcf:target">
+ <choice>
+ <value>*</value>
+ <data type="string">
+ <param name="minLength">1</param>
+ </data>
+ </choice>
+ </element>
+ <oneOrMore>
+ <element name="bcf:mode">
+ <choice>
+ <value>original</value>
+ <value>uniform</value>
+ <value>romanised</value>
+ <value>translated</value>
+ </choice>
+ </element>
+ </oneOrMore>
+ </element>
+ </oneOrMore>
+ </element>
+ </optional>
+ <!-- Cross-reference inheritance specifications -->
+ <element name="bcf:inheritance">
+ <!-- Defaults -->
+ <element name="bcf:defaults">
+ <!-- Whether to inherit all fields -->
+ <attribute name="inherit_all">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </attribute>
+ <!-- Should we overwrite the target field if it exists? -->
+ <attribute name="override_target">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </attribute>
+ <zeroOrMore>
+ <!-- Default inherit_all and override_target settings for entrytype source/target pairs -->
+ <element name="bcf:type_pair">
+ <attribute name="source">
+ <choice>
+ <value>*</value>
+ <data type="string">
+ <param name="minLength">1</param>
+ </data>
+ </choice>
+ </attribute>
+ <attribute name="target">
+ <choice>
+ <value>*</value>
+ <data type="string">
+ <param name="minLength">1</param>
+ </data>
+ </choice>
+ </attribute>
+ <optional>
+ <attribute name="inherit_all">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="override_target">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </attribute>
+ </optional>
+ <empty/>
+ </element>
+ </zeroOrMore>
+ </element>
+ <zeroOrMore>
+ <!-- An inheritance specification -->
+ <element name="bcf:inherit">
+ <oneOrMore>
+ <!-- applies to these pairs of source/target entrytypes -->
+ <element name="bcf:type_pair">
+ <attribute name="source">
+ <choice>
+ <value>*</value>
+ <data type="string">
+ <param name="minLength">1</param>
+ </data>
+ </choice>
+ </attribute>
+ <attribute name="target">
+ <choice>
+ <value>*</value>
+ <data type="string">
+ <param name="minLength">1</param>
+ </data>
+ </choice>
+ </attribute>
+ <empty/>
+ </element>
+ </oneOrMore>
+ <oneOrMore>
+ <!-- and here are the field specifications -->
+ <element name="bcf:field">
+ <choice>
+ <!--
+ either a "skip this field" specification
+ so we can say inherit all except certain fields OR ...
+ -->
+ <group>
+ <attribute name="source">
+ <data type="string"/>
+ </attribute>
+ <attribute name="skip">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </attribute>
+ </group>
+ <!-- ... a source and target field with an optional override attribute -->
+ <group>
+ <attribute name="source">
+ <data type="string">
+ <param name="minLength">1</param>
+ </data>
+ </attribute>
+ <attribute name="target">
+ <data type="string">
+ <param name="minLength">1</param>
+ </data>
+ </attribute>
+ <optional>
+ <attribute name="override_target">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ </choice>
+ </attribute>
+ </optional>
+ </group>
+ </choice>
+ <empty/>
+ </element>
+ </oneOrMore>
+ </element>
+ </zeroOrMore>
+ </element>
+ <!-- Global sorting specification -->
+ <ref name="sorting"/>
+ <optional>
+ <!-- Structure specification -->
+ <element name="bcf:structure">
+ <!-- Valid datetypes -->
+ <element name="bcf:datetypes">
+ <oneOrMore>
+ <element name="bcf:datetype">
+ <data type="NCName"/>
+ </element>
+ </oneOrMore>
+ </element>
+ <!-- Valid entrytypes -->
+ <element name="bcf:entrytypes">
+ <oneOrMore>
+ <element name="bcf:entrytype">
+ <data type="NCName"/>
+ </element>
+ </oneOrMore>
+ </element>
+ <optional>
+ <!-- Entrytype and field alias specifications -->
+ <element name="bcf:aliases">
+ <oneOrMore>
+ <element name="bcf:alias">
+ <choice>
+ <group>
+ <!-- entrytype alias specification -->
+ <attribute name="type">
+ <value>entrytype</value>
+ </attribute>
+ <!-- alias name -->
+ <element name="bcf:name">
+ <data type="NCName"/>
+ </element>
+ <!-- canonical name -->
+ <element name="bcf:realname">
+ <data type="NCName"/>
+ </element>
+ <zeroOrMore>
+ <!--
+ Any other fields that need setting when resolving the alias
+ for example when "phdthesis" -> "thesis", we also need to set
+ "type" = "phdthesis"
+ -->
+ <element name="bcf:field">
+ <attribute name="name">
+ <data type="NCName"/>
+ </attribute>
+ <data type="NCName"/>
+ </element>
+ </zeroOrMore>
+ </group>
+ <group>
+ <!-- field alias specification -->
+ <attribute name="type">
+ <value>field</value>
+ </attribute>
+ <!-- alias name -->
+ <element name="bcf:name">
+ <data type="NCName"/>
+ </element>
+ <!-- canonical name -->
+ <element name="bcf:realname">
+ <data type="NCName"/>
+ </element>
+ </group>
+ </choice>
+ </element>
+ </oneOrMore>
+ </element>
+ </optional>
+ <!--
+ BibLaTeX field types. Biber uses this to determine how to output various types
+ to the .bbl
+ -->
+ <element name="bcf:fields">
+ <oneOrMore>
+ <element name="bcf:field">
+ <!-- fieldtype is "field" or "list" -->
+ <attribute name="fieldtype">
+ <choice>
+ <value>field</value>
+ <value>list</value>
+ </choice>
+ </attribute>
+ <!-- datatype of field content -->
+ <attribute name="datatype">
+ <choice>
+ <value>literal</value>
+ <value>name</value>
+ <value>key</value>
+ <value>date</value>
+ <value>verbatim</value>
+ <value>integer</value>
+ <value>range</value>
+ <value>special</value>
+ </choice>
+ </attribute>
+ <optional>
+ <!-- Are we allowed to output a null field value to the .bbl for this field? -->
+ <attribute name="nullok">
+ <value>true</value>
+ </attribute>
+ </optional>
+ <optional>
+ <!-- Should this field be skipped and not output to the .bbl? -->
+ <attribute name="skip_output">
+ <value>true</value>
+ </attribute>
+ </optional>
+ <data type="NCName"/>
+ </element>
+ </oneOrMore>
+ </element>
+ <oneOrMore>
+ <!--
+ Allowable fields for entrytypes
+ Only one specification per entrytype: even though it might be nice to have several
+ so that one could share information, this would be hard to manage and confusing as it
+ not be visible in one place which fields were valid for an entrytype.
+ -->
+ <element name="bcf:entryfields">
+ <oneOrMore>
+ <element name="bcf:entrytype">
+ <data type="NCName"/>
+ </element>
+ </oneOrMore>
+ <choice>
+ <element name="bcf:field">
+ <value>ALL</value>
+ </element>
+ <oneOrMore>
+ <element name="bcf:field">
+ <data type="NCName"/>
+ </element>
+ </oneOrMore>
+ </choice>
+ </element>
+ </oneOrMore>
+ <oneOrMore>
+ <!-- Constraints on field (co-)existence and format -->
+ <element name="bcf:constraints">
+ <!--
+ Set of entrytypes that this constraint applies to
+ An entrytype can be specified in multiple constraints
+
+ Special entrytype "ALL" can be used to cover, well, all entrytypes ...
+ -->
+ <choice>
+ <element name="bcf:entrytype">
+ <value>ALL</value>
+ </element>
+ <oneOrMore>
+ <element name="bcf:entrytype">
+ <data type="NCName"/>
+ </element>
+ </oneOrMore>
+ </choice>
+ <zeroOrMore>
+ <!-- A constraint specification -->
+ <element name="bcf:constraint">
+ <choice>
+ <!--
+ Conditional constraints have an antecedent and consequent
+ both of which have a quantifier. This allows you to enforce
+ constraints like:
+
+ if field a,b,c are all present then one of x,y,z must be
+ if one of field a,b,c are present then none of x,y,z must be
+ etc.
+ -->
+ <group>
+ <attribute name="type">
+ <value>conditional</value>
+ </attribute>
+ <element name="bcf:antecedent">
+ <attribute name="quant">
+ <choice>
+ <value>all</value>
+ <value>one</value>
+ <value>none</value>
+ </choice>
+ </attribute>
+ <oneOrMore>
+ <element name="bcf:field">
+ <data type="NCName"/>
+ </element>
+ </oneOrMore>
+ </element>
+ <element name="bcf:consequent">
+ <attribute name="quant">
+ <choice>
+ <value>all</value>
+ <value>one</value>
+ <value>none</value>
+ </choice>
+ </attribute>
+ <oneOrMore>
+ <element name="bcf:field">
+ <data type="NCName"/>
+ </element>
+ </oneOrMore>
+ </element>
+ </group>
+ <!-- Datatype and format constraints -->
+ <group>
+ <attribute name="type">
+ <value>data</value>
+ </attribute>
+ <optional>
+ <!--
+ datespec is a BibLaTeX date range specification
+ range* attributes are for limiting integer type range
+ -->
+ <attribute name="datatype">
+ <choice>
+ <value>integer</value>
+ <value>datespec</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rangemin">
+ <data type="int"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="rangemax">
+ <data type="int"/>
+ </attribute>
+ </optional>
+ <oneOrMore>
+ <element name="bcf:field">
+ <data type="NCName"/>
+ </element>
+ </oneOrMore>
+ </group>
+ <!-- Mandatoriness constraints which say which fields must appear -->
+ <group>
+ <attribute name="type">
+ <value>mandatory</value>
+ </attribute>
+ <oneOrMore>
+ <choice>
+ <element name="bcf:field">
+ <data type="NCName"/>
+ </element>
+ <!--
+ An XOR set of fields so you can enforce:
+
+ One (but not more) of fields a,b,c must exist
+ -->
+ <element name="bcf:fieldxor">
+ <oneOrMore>
+ <element name="bcf:field">
+ <optional>
+ <attribute name="coerce">
+ <value>true</value>
+ </attribute>
+ </optional>
+ <data type="NCName"/>
+ </element>
+ </oneOrMore>
+ </element>
+ <!--
+ An OR set of fields so you can enforce:
+
+ One (possibly more of fields a,b,c must exist
+ -->
+ <element name="bcf:fieldor">
+ <oneOrMore>
+ <element name="bcf:field">
+ <data type="NCName"/>
+ </element>
+ </oneOrMore>
+ </element>
+ </choice>
+ </oneOrMore>
+ </group>
+ </choice>
+ </element>
+ </zeroOrMore>
+ </element>
+ </oneOrMore>
+ </element>
+ </optional>
+ <oneOrMore>
+ <!-- Section specifications -->
+ <ref name="secspec"/>
+ </oneOrMore>
+ </element>
+ </start>
+ <define name="sorting">
+ <element name="bcf:sorting">
+ <oneOrMore>
+ <!-- presort default strings for different entry types -->
+ <element name="bcf:presort">
+ <optional>
+ <attribute name="type">
+ <data type="NCName"/>
+ </attribute>
+ </optional>
+ <text/>
+ </element>
+ </oneOrMore>
+ <zeroOrMore>
+ <!-- excludes of certain fields for sorting for specified types -->
+ <element name="bcf:sortexclusion">
+ <attribute name="type"/>
+ <oneOrMore>
+ <element name="bcf:exclusion">
+ <data type="NCName"/>
+ </element>
+ </oneOrMore>
+ </element>
+ </zeroOrMore>
+ <oneOrMore>
+ <ref name="sort"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="sort">
+ <oneOrMore>
+ <!-- sort specification -->
+ <element name="bcf:sort">
+ <!-- order of this specification in the set of all sort specifications -->
+ <attribute name="order">
+ <data type="integer"/>
+ </attribute>
+ <optional>
+ <!-- Should we stop generating sorting information after this item? -->
+ <attribute name="final">
+ <data type="integer"/>
+ </attribute>
+ </optional>
+ <optional>
+ <!-- Sort ascending or descending -->
+ <attribute name="sort_direction">
+ <choice>
+ <value>ascending</value>
+ <value>descending</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <!-- Sort case sensitive or not? -->
+ <attribute name="sortcase">
+ <choice>
+ <value>0</value>
+ <value>1</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <!-- Sort upper before lower? -->
+ <attribute name="sortupper">
+ <choice>
+ <value>0</value>
+ <value>1</value>
+ </choice>
+ </attribute>
+ </optional>
+ <oneOrMore>
+ <!-- A sort item specification - a field or pseudo-field to get sort information from -->
+ <element name="bcf:sortitem">
+ <!-- order of this item in the set of all other item specifications -->
+ <attribute name="order">
+ <data type="integer"/>
+ </attribute>
+ <optional>
+ <!-- Just use a part of the item information for sorting? -->
+ <attribute name="substring_side">
+ <choice>
+ <value>left</value>
+ <value>right</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="substring_width">
+ <data type="integer"/>
+ </attribute>
+ </optional>
+ <optional>
+ <!-- Pad the item information when sorting with it? -->
+ <attribute name="pad_side">
+ <choice>
+ <value>left</value>
+ <value>right</value>
+ </choice>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="pad_width">
+ <data type="integer"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="pad_char">
+ <data type="string">
+ <param name="minLength">1</param>
+ <param name="maxLength">1</param>
+ </data>
+ </attribute>
+ </optional>
+ <text/>
+ </element>
+ </oneOrMore>
+ </element>
+ </oneOrMore>
+ </define>
+ <!-- Section specification -->
+ <define name="secspec">
+ <optional>
+ <!-- data sources -->
+ <element name="bcf:bibdata">
+ <!-- which sections the datafiles are for -->
+ <attribute name="section">
+ <data type="integer"/>
+ </attribute>
+ <zeroOrMore>
+ <element name="bcf:datasource">
+ <attribute name="type">
+ <value>file</value>
+ </attribute>
+ <optional>
+ <attribute name="datatype">
+ <choice>
+ <value>bibtex</value>
+ <value>biblatexml</value>
+ <value>ris</value>
+ </choice>
+ </attribute>
+ </optional>
+ <data type="anyURI"/>
+ </element>
+ </zeroOrMore>
+ </element>
+ </optional>
+ <!-- citekeys or citekey sets in each section -->
+ <element name="bcf:section">
+ <attribute name="number">
+ <data type="integer"/>
+ </attribute>
+ <zeroOrMore>
+ <element name="bcf:citekey">
+ <choice>
+ <group>
+ <attribute name="type">
+ <value>set</value>
+ </attribute>
+ <attribute name="members">
+ <data type="string">
+ <param name="minLength">1</param>
+ </data>
+ </attribute>
+ <data type="string">
+ <param name="minLength">1</param>
+ </data>
+ </group>
+ <data type="string">
+ <param name="minLength">1</param>
+ </data>
+ </choice>
+ </element>
+ </zeroOrMore>
+ <zeroOrMore>
+ <element name="bcf:sectionlist">
+ <attribute name="label">
+ <data type="string">
+ <param name="minLength">1</param>
+ </data>
+ </attribute>
+ <attribute name="type">
+ <choice>
+ <value>entry</value>
+ <value>key</value>
+ <value>shorthand</value>
+ </choice>
+ </attribute>
+ <zeroOrMore>
+ <choice>
+ <ref name="filter"/>
+ <ref name="orfilter"/>
+ </choice>
+ </zeroOrMore>
+ <optional>
+ <element name="bcf:sorting">
+ <oneOrMore>
+ <ref name="sort"/>
+ </oneOrMore>
+ </element>
+ </optional>
+ </element>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="orfilter">
+ <element name="bcf:orfilter">
+ <oneOrMore>
+ <ref name="filter"/>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="filter">
+ <element name="bcf:filter">
+ <attribute name="type">
+ <choice>
+ <value>type</value>
+ <value>nottype</value>
+ <value>subtype</value>
+ <value>notsubtype</value>
+ <value>keyword</value>
+ <value>notkeyword</value>
+ <value>field</value>
+ <value>notfield</value>
+ </choice>
+ </attribute>
+ <data type="string">
+ <param name="minLength">1</param>
+ </data>
+ </element>
+ </define>
+ <!-- option definitions -->
+ <define name="terseinits">
+ <element name="bcf:option">
+ <attribute name="type">
+ <value>singlevalued</value>
+ </attribute>
+ <element name="bcf:key">
+ <value>terseinits</value>
+ </element>
+ <element name="bcf:value">
+ <choice>
+ <value>0</value>
+ <value>1</value>
+ </choice>
+ </element>
+ </element>
+ </define>
+ <define name="useprefix">
+ <element name="bcf:option">
+ <attribute name="type">
+ <value>singlevalued</value>
+ </attribute>
+ <element name="bcf:key">
+ <value>useprefix</value>
+ </element>
+ <element name="bcf:value">
+ <choice>
+ <value>0</value>
+ <value>1</value>
+ </choice>
+ </element>
+ </element>
+ </define>
+ <define name="useauthor">
+ <element name="bcf:option">
+ <attribute name="type">
+ <value>singlevalued</value>
+ </attribute>
+ <element name="bcf:key">
+ <value>useauthor</value>
+ </element>
+ <element name="bcf:value">
+ <choice>
+ <value>0</value>
+ <value>1</value>
+ </choice>
+ </element>
+ </element>
+ </define>
+ <define name="useeditor">
+ <element name="bcf:option">
+ <attribute name="type">
+ <value>singlevalued</value>
+ </attribute>
+ <element name="bcf:key">
+ <value>useeditor</value>
+ </element>
+ <element name="bcf:value">
+ <choice>
+ <value>0</value>
+ <value>1</value>
+ </choice>
+ </element>
+ </element>
+ </define>
+ <define name="usetranslator">
+ <element name="bcf:option">
+ <attribute name="type">
+ <value>singlevalued</value>
+ </attribute>
+ <element name="bcf:key">
+ <value>usetranslator</value>
+ </element>
+ <element name="bcf:value">
+ <choice>
+ <value>0</value>
+ <value>1</value>
+ </choice>
+ </element>
+ </element>
+ </define>
+ <define name="labelalpha">
+ <element name="bcf:option">
+ <attribute name="type">
+ <value>singlevalued</value>
+ </attribute>
+ <element name="bcf:key">
+ <value>labelalpha</value>
+ </element>
+ <element name="bcf:value">
+ <choice>
+ <value>0</value>
+ <value>1</value>
+ </choice>
+ </element>
+ </element>
+ </define>
+ <define name="labelyear">
+ <element name="bcf:option">
+ <attribute name="type">
+ <value>singlevalued</value>
+ </attribute>
+ <element name="bcf:key">
+ <value>labelyear</value>
+ </element>
+ <element name="bcf:value">
+ <choice>
+ <value>0</value>
+ <value>1</value>
+ </choice>
+ </element>
+ </element>
+ </define>
+ <define name="labelyearspec">
+ <element name="bcf:option">
+ <attribute name="type">
+ <value>multivalued</value>
+ </attribute>
+ <element name="bcf:key">
+ <value>labelyearspec</value>
+ </element>
+ <oneOrMore>
+ <element name="bcf:value">
+ <attribute name="order">
+ <data type="integer"/>
+ </attribute>
+ <data type="NCName"/>
+ </element>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="singletitle">
+ <element name="bcf:option">
+ <attribute name="type">
+ <value>singlevalued</value>
+ </attribute>
+ <element name="bcf:key">
+ <value>singletitle</value>
+ </element>
+ <element name="bcf:value">
+ <choice>
+ <value>0</value>
+ <value>1</value>
+ </choice>
+ </element>
+ </element>
+ </define>
+ <define name="skipbib">
+ <element name="bcf:option">
+ <attribute name="type">
+ <value>singlevalued</value>
+ </attribute>
+ <element name="bcf:key">
+ <value>skipbib</value>
+ </element>
+ <element name="bcf:value">
+ <choice>
+ <value>0</value>
+ <value>1</value>
+ </choice>
+ </element>
+ </element>
+ </define>
+ <define name="skiplab">
+ <element name="bcf:option">
+ <attribute name="type">
+ <value>singlevalued</value>
+ </attribute>
+ <element name="bcf:key">
+ <value>skiplab</value>
+ </element>
+ <element name="bcf:value">
+ <choice>
+ <value>0</value>
+ <value>1</value>
+ </choice>
+ </element>
+ </element>
+ </define>
+ <define name="skiplos">
+ <element name="bcf:option">
+ <attribute name="type">
+ <value>singlevalued</value>
+ </attribute>
+ <element name="bcf:key">
+ <value>skiplos</value>
+ </element>
+ <element name="bcf:value">
+ <choice>
+ <value>0</value>
+ <value>1</value>
+ </choice>
+ </element>
+ </element>
+ </define>
+ <define name="uniquename">
+ <element name="bcf:option">
+ <attribute name="type">
+ <value>singlevalued</value>
+ </attribute>
+ <element name="bcf:key">
+ <value>uniquename</value>
+ </element>
+ <element name="bcf:value">
+ <choice>
+ <value>0</value>
+ <value>1</value>
+ <value>2</value>
+ </choice>
+ </element>
+ </element>
+ </define>
+ <define name="maxitems">
+ <element name="bcf:option">
+ <attribute name="type">
+ <value>singlevalued</value>
+ </attribute>
+ <element name="bcf:key">
+ <value>maxitems</value>
+ </element>
+ <element name="bcf:value">
+ <data type="integer"/>
+ </element>
+ </element>
+ </define>
+ <define name="maxnames">
+ <element name="bcf:option">
+ <attribute name="type">
+ <value>singlevalued</value>
+ </attribute>
+ <element name="bcf:key">
+ <value>maxnames</value>
+ </element>
+ <element name="bcf:value">
+ <data type="integer"/>
+ </element>
+ </element>
+ </define>
+ <define name="minitems">
+ <element name="bcf:option">
+ <attribute name="type">
+ <value>singlevalued</value>
+ </attribute>
+ <element name="bcf:key">
+ <value>minitems</value>
+ </element>
+ <element name="bcf:value">
+ <data type="integer"/>
+ </element>
+ </element>
+ </define>
+ <define name="minnames">
+ <element name="bcf:option">
+ <attribute name="type">
+ <value>singlevalued</value>
+ </attribute>
+ <element name="bcf:key">
+ <value>minnames</value>
+ </element>
+ <element name="bcf:value">
+ <data type="integer"/>
+ </element>
+ </element>
+ </define>
+ <define name="sortlos">
+ <element name="bcf:option">
+ <attribute name="type">
+ <value>singlevalued</value>
+ </attribute>
+ <element name="bcf:key">
+ <value>sortlos</value>
+ </element>
+ <element name="bcf:value">
+ <choice>
+ <value>0</value>
+ <value>1</value>
+ </choice>
+ </element>
+ </element>
+ </define>
+ <define name="labelnamespec">
+ <element name="bcf:option">
+ <attribute name="type">
+ <value>multivalued</value>
+ </attribute>
+ <element name="bcf:key">
+ <value>labelnamespec</value>
+ </element>
+ <oneOrMore>
+ <element name="bcf:value">
+ <attribute name="order">
+ <data type="integer"/>
+ </attribute>
+ <data type="NCName"/>
+ </element>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="mincrossrefs">
+ <element name="bcf:option">
+ <attribute name="type">
+ <value>singlevalued</value>
+ </attribute>
+ <element name="bcf:key">
+ <value>mincrossrefs</value>
+ </element>
+ <element name="bcf:value">
+ <data type="integer"/>
+ </element>
+ </element>
+ </define>
+ <define name="debug">
+ <element name="bcf:option">
+ <attribute name="type">
+ <value>singlevalued</value>
+ </attribute>
+ <element name="bcf:key">
+ <value>debug</value>
+ </element>
+ <element name="bcf:value">
+ <choice>
+ <value>0</value>
+ <value>1</value>
+ </choice>
+ </element>
+ </element>
+ </define>
+ <define name="wrapline">
+ <element name="bcf:option">
+ <attribute name="type">
+ <value>singlevalued</value>
+ </attribute>
+ <element name="bcf:key">
+ <value>wrapline</value>
+ </element>
+ <element name="bcf:value">
+ <data type="integer"/>
+ </element>
+ </element>
+ </define>
+ <define name="bblencoding">
+ <element name="bcf:option">
+ <attribute name="type">
+ <value>singlevalued</value>
+ </attribute>
+ <element name="bcf:key">
+ <value>bblencoding</value>
+ </element>
+ <element name="bcf:value">
+ <data type="NCName"/>
+ </element>
+ </element>
+ </define>
+ <define name="bibencoding">
+ <element name="bcf:option">
+ <attribute name="type">
+ <value>singlevalued</value>
+ </attribute>
+ <element name="bcf:key">
+ <value>bibencoding</value>
+ </element>
+ <element name="bcf:value">
+ <data type="NCName"/>
+ </element>
+ </element>
+ </define>
+ <define name="sortcase">
+ <element name="bcf:option">
+ <attribute name="type">
+ <value>singlevalued</value>
+ </attribute>
+ <element name="bcf:key">
+ <value>sortcase</value>
+ </element>
+ <element name="bcf:value">
+ <choice>
+ <value>0</value>
+ <value>1</value>
+ </choice>
+ </element>
+ </element>
+ </define>
+ <define name="alphaothers">
+ <element name="bcf:option">
+ <attribute name="type">
+ <value>singlevalued</value>
+ </attribute>
+ <element name="bcf:key">
+ <value>alphaothers</value>
+ </element>
+ <element name="bcf:value">
+ <data type="normalizedString">
+ <param name="pattern">\S+</param>
+ </data>
+ </element>
+ </element>
+ </define>
+ <!-- This is xsd:language but also allows underscore separators -->
+ <define name="sortlocale">
+ <element name="bcf:option">
+ <attribute name="type">
+ <value>singlevalued</value>
+ </attribute>
+ <element name="bcf:key">
+ <value>sortlocale</value>
+ </element>
+ <element name="bcf:value">
+ <data type="normalizedString">
+ <param name="pattern">([a-zA-Z]{2}|[iI][\-_][a-zA-Z]+|[xX][\-_][a-zA-Z]{1,10})([\-_][a-zA-Z]{1,10})*</param>
+ </data>
+ </element>
+ </element>
+ </define>
+ <define name="sortupper">
+ <element name="bcf:option">
+ <attribute name="type">
+ <value>singlevalued</value>
+ </attribute>
+ <element name="bcf:key">
+ <value>sortupper</value>
+ </element>
+ <element name="bcf:value">
+ <choice>
+ <value>0</value>
+ <value>1</value>
+ </choice>
+ </element>
+ </element>
+ </define>
+ <define name="sortalphaothers">
+ <element name="bcf:option">
+ <attribute name="type">
+ <value>singlevalued</value>
+ </attribute>
+ <element name="bcf:key">
+ <value>sortalphaothers</value>
+ </element>
+ <element name="bcf:value">
+ <data type="normalizedString">
+ <param name="pattern">\S+</param>
+ </data>
+ </element>
+ </element>
+ </define>
+ <define name="nonsortprefixes">
+ <a:documentation>these are perl regexes</a:documentation>
+ <element name="bcf:nonsortprefixes">
+ <oneOrMore>
+ <element name="bcf:item">
+ <text/>
+ </element>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="nonsortdiacritics">
+ <element name="bcf:nonsortdiacritics">
+ <oneOrMore>
+ <element name="bcf:item">
+ <text/>
+ </element>
+ </oneOrMore>
+ </element>
+ </define>
+</grammar>