csl 1.0.0.pre1 → 1.0.0.pre2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +1 -0
- data/.travis.yml +10 -1
- data/Rakefile +1 -1
- data/features/locales/ordinalize.feature +109 -0
- data/features/style/loading.feature +27 -27
- data/lib/csl.rb +9 -1
- data/lib/csl/compatibility.rb +4 -0
- data/lib/csl/errors.rb +5 -2
- data/lib/csl/info.rb +32 -5
- data/lib/csl/loader.rb +3 -3
- data/lib/csl/locale.rb +19 -2
- data/lib/csl/locale/date.rb +3 -3
- data/lib/csl/locale/term.rb +14 -4
- data/lib/csl/node.rb +41 -23
- data/lib/csl/parser.rb +15 -2
- data/lib/csl/pretty_printer.rb +11 -9
- data/lib/csl/schema.rb +95 -8
- data/lib/csl/style.rb +16 -5
- data/lib/csl/style/choose.rb +16 -0
- data/lib/csl/style/date.rb +4 -4
- data/lib/csl/style/label.rb +2 -2
- data/lib/csl/style/names.rb +3 -3
- data/lib/csl/style/number.rb +2 -1
- data/lib/csl/style/text.rb +2 -2
- data/lib/csl/version.rb +1 -1
- data/spec/csl/info_spec.rb +20 -1
- data/spec/csl/locale/term_spec.rb +45 -0
- data/spec/csl/node_spec.rb +3 -1
- data/spec/csl/schema_spec.rb +37 -4
- data/spec/csl/style/{conditional_spec.rb → choose_spec.rb} +1 -1
- data/spec/csl/style_spec.rb +4 -2
- data/spec/spec_helper.rb +2 -2
- data/vendor/schema/csl-categories.rng +47 -0
- data/vendor/schema/csl-terms.rng +144 -0
- data/vendor/schema/csl-types.rng +45 -0
- data/vendor/schema/csl-variables.rng +114 -0
- data/vendor/schema/csl.rng +1750 -0
- metadata +16 -14
- data/lib/csl/style/conditional.rb +0 -11
    
        data/spec/csl/schema_spec.rb
    CHANGED
    
    | @@ -3,6 +3,10 @@ require 'spec_helper' | |
| 3 3 | 
             
            module CSL
         | 
| 4 4 | 
             
              describe 'Schema' do
         | 
| 5 5 |  | 
| 6 | 
            +
                it 'cannot be instantiated' do
         | 
| 7 | 
            +
                  Schema.should_not respond_to(:new)
         | 
| 8 | 
            +
                end
         | 
| 9 | 
            +
                
         | 
| 6 10 | 
             
                describe '.version' do
         | 
| 7 11 | 
             
                  it 'returns a version string' do
         | 
| 8 12 | 
             
                    Schema.version.should match(/^\d+\.\d+\.\d+/)
         | 
| @@ -54,10 +58,8 @@ module CSL | |
| 54 58 |  | 
| 55 59 | 
             
                describe '.categories' do
         | 
| 56 60 | 
             
                  it 'given a field name returns the corresponding type' do
         | 
| 57 | 
            -
                    Schema.categories | 
| 58 | 
            -
             | 
| 59 | 
            -
                    Schema.categories[:abstract].should == :text
         | 
| 60 | 
            -
                    Schema.categories[:issue].should == :number
         | 
| 61 | 
            +
                    Schema.categories.values_at(:author, :issued, :abstract, :issue).should ==
         | 
| 62 | 
            +
                      [:names, :date, :text, :number]
         | 
| 61 63 | 
             
                  end
         | 
| 62 64 |  | 
| 63 65 | 
             
                  it 'accepts either string or symbol input' do
         | 
| @@ -66,5 +68,36 @@ module CSL | |
| 66 68 | 
             
                  end
         | 
| 67 69 | 
             
                end
         | 
| 68 70 |  | 
| 71 | 
            +
                describe '.validate' do
         | 
| 72 | 
            +
                  it 'accepts and validates a locale instance' do
         | 
| 73 | 
            +
                    Schema.validate(Locale.load('en-US')).should == []
         | 
| 74 | 
            +
                  end
         | 
| 75 | 
            +
                  
         | 
| 76 | 
            +
                  it 'accepts and validates a locale file path' do
         | 
| 77 | 
            +
                    Schema.validate(File.join(Locale.root, 'locales-en-US.xml')).should == []
         | 
| 78 | 
            +
                  end
         | 
| 79 | 
            +
             | 
| 80 | 
            +
                  it 'accepts and validates a locale file' do
         | 
| 81 | 
            +
                    Schema.validate(File.open(File.join(Locale.root, 'locales-en-US.xml'))).should == []
         | 
| 82 | 
            +
                  end
         | 
| 83 | 
            +
             | 
| 84 | 
            +
                  it 'accepts and validates a locale wildcard path' do
         | 
| 85 | 
            +
                    Schema.validate(File.join(Locale.root, 'locales-en-*.xml')).should == []
         | 
| 86 | 
            +
                  end
         | 
| 87 | 
            +
             | 
| 88 | 
            +
                  it 'accepts and validates a style file path' do
         | 
| 89 | 
            +
                    Schema.validate(File.join(Style.root, 'apa.csl')).should == []
         | 
| 90 | 
            +
                  end
         | 
| 91 | 
            +
             | 
| 92 | 
            +
                  it 'accepts and validates the xml contents of a style instance' do
         | 
| 93 | 
            +
                    Schema.validate(Style.load(:apa).pretty_print).should == []
         | 
| 94 | 
            +
                  end
         | 
| 95 | 
            +
             | 
| 96 | 
            +
                  it 'accepts and validates a style instance' do
         | 
| 97 | 
            +
                    Schema.validate(Style.load(:apa)).should == []
         | 
| 98 | 
            +
                  end
         | 
| 99 | 
            +
                  
         | 
| 100 | 
            +
                end
         | 
| 101 | 
            +
                
         | 
| 69 102 | 
             
              end
         | 
| 70 103 | 
             
            end
         | 
    
        data/spec/csl/style_spec.rb
    CHANGED
    
    | @@ -3,8 +3,6 @@ require 'spec_helper' | |
| 3 3 | 
             
            module CSL
         | 
| 4 4 | 
             
              describe Style do
         | 
| 5 5 |  | 
| 6 | 
            -
                it { should be }
         | 
| 7 | 
            -
                
         | 
| 8 6 | 
             
                it 'has a 1.x version by default' do
         | 
| 9 7 | 
             
                  Style.new[:version].should match(/1\.\d+(\.\d+)?/) 
         | 
| 10 8 | 
             
                end
         | 
| @@ -13,6 +11,10 @@ module CSL | |
| 13 11 | 
             
                  it 'returns an empty style' do
         | 
| 14 12 | 
             
                    Style.new.to_xml.should match(/<style[^>]*\/>/)
         | 
| 15 13 | 
             
                  end
         | 
| 14 | 
            +
                  
         | 
| 15 | 
            +
                  it 'supports round-trip for apa style' do
         | 
| 16 | 
            +
                    Style.parse(Style.load(:apa).to_xml).should be_a(Style)
         | 
| 17 | 
            +
                  end
         | 
| 16 18 | 
             
                end
         | 
| 17 19 |  | 
| 18 20 | 
             
              end
         | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    
| @@ -0,0 +1,47 @@ | |
| 1 | 
            +
            <?xml version="1.0" encoding="UTF-8"?>
         | 
| 2 | 
            +
            <grammar xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
         | 
| 3 | 
            +
              <div>
         | 
| 4 | 
            +
                <a:documentation>Categories for style metadata</a:documentation>
         | 
| 5 | 
            +
                <define name="category.citation-format">
         | 
| 6 | 
            +
                  <choice>
         | 
| 7 | 
            +
                    <value>author</value>
         | 
| 8 | 
            +
                    <value>author-date</value>
         | 
| 9 | 
            +
                    <value>label</value>
         | 
| 10 | 
            +
                    <value>note</value>
         | 
| 11 | 
            +
                    <value>numeric</value>
         | 
| 12 | 
            +
                  </choice>
         | 
| 13 | 
            +
                </define>
         | 
| 14 | 
            +
                <define name="category.field">
         | 
| 15 | 
            +
                  <a:documentation>Use "generic-base" for styles that are non-discipline specific, such as
         | 
| 16 | 
            +
            APA, Harvard, etc.</a:documentation>
         | 
| 17 | 
            +
                  <choice>
         | 
| 18 | 
            +
                    <value>anthropology</value>
         | 
| 19 | 
            +
                    <value>astronomy</value>
         | 
| 20 | 
            +
                    <value>biology</value>
         | 
| 21 | 
            +
                    <value>botany</value>
         | 
| 22 | 
            +
                    <value>chemistry</value>
         | 
| 23 | 
            +
                    <value>communications</value>
         | 
| 24 | 
            +
                    <value>engineering</value>
         | 
| 25 | 
            +
                    <value>generic-base</value>
         | 
| 26 | 
            +
                    <value>geography</value>
         | 
| 27 | 
            +
                    <value>geology</value>
         | 
| 28 | 
            +
                    <value>history</value>
         | 
| 29 | 
            +
                    <value>humanities</value>
         | 
| 30 | 
            +
                    <value>law</value>
         | 
| 31 | 
            +
                    <value>linguistics</value>
         | 
| 32 | 
            +
                    <value>literature</value>
         | 
| 33 | 
            +
                    <value>math</value>
         | 
| 34 | 
            +
                    <value>medicine</value>
         | 
| 35 | 
            +
                    <value>philosophy</value>
         | 
| 36 | 
            +
                    <value>physics</value>
         | 
| 37 | 
            +
                    <value>political_science</value>
         | 
| 38 | 
            +
                    <value>psychology</value>
         | 
| 39 | 
            +
                    <value>science</value>
         | 
| 40 | 
            +
                    <value>social_science</value>
         | 
| 41 | 
            +
                    <value>sociology</value>
         | 
| 42 | 
            +
                    <value>theology</value>
         | 
| 43 | 
            +
                    <value>zoology</value>
         | 
| 44 | 
            +
                  </choice>
         | 
| 45 | 
            +
                </define>
         | 
| 46 | 
            +
              </div>
         | 
| 47 | 
            +
            </grammar>
         | 
| @@ -0,0 +1,144 @@ | |
| 1 | 
            +
            <?xml version="1.0" encoding="UTF-8"?>
         | 
| 2 | 
            +
            <grammar xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
         | 
| 3 | 
            +
              <div>
         | 
| 4 | 
            +
                <a:documentation>Terms</a:documentation>
         | 
| 5 | 
            +
                <define name="terms">
         | 
| 6 | 
            +
                  <choice>
         | 
| 7 | 
            +
                    <ref name="category.field"/>
         | 
| 8 | 
            +
                    <ref name="terms.gender-assignable"/>
         | 
| 9 | 
            +
                    <ref name="terms.gender-variants"/>
         | 
| 10 | 
            +
                    <ref name="terms.locator"/>
         | 
| 11 | 
            +
                    <ref name="variables.names">
         | 
| 12 | 
            +
                      <a:documentation>Contributor roles</a:documentation>
         | 
| 13 | 
            +
                    </ref>
         | 
| 14 | 
            +
                    <value>editortranslator</value>
         | 
| 15 | 
            +
                    <value>accessed</value>
         | 
| 16 | 
            +
                    <a:documentation>Miscellaneous terms</a:documentation>
         | 
| 17 | 
            +
                    <value>ad</value>
         | 
| 18 | 
            +
                    <value>and</value>
         | 
| 19 | 
            +
                    <value>and others</value>
         | 
| 20 | 
            +
                    <value>anonymous</value>
         | 
| 21 | 
            +
                    <value>at</value>
         | 
| 22 | 
            +
                    <value>available at</value>
         | 
| 23 | 
            +
                    <value>bc</value>
         | 
| 24 | 
            +
                    <value>by</value>
         | 
| 25 | 
            +
                    <value>circa</value>
         | 
| 26 | 
            +
                    <value>cited</value>
         | 
| 27 | 
            +
                    <value>et-al</value>
         | 
| 28 | 
            +
                    <value>forthcoming</value>
         | 
| 29 | 
            +
                    <value>from</value>
         | 
| 30 | 
            +
                    <value>ibid</value>
         | 
| 31 | 
            +
                    <value>in</value>
         | 
| 32 | 
            +
                    <value>in press</value>
         | 
| 33 | 
            +
                    <value>internet</value>
         | 
| 34 | 
            +
                    <value>interview</value>
         | 
| 35 | 
            +
                    <value>letter</value>
         | 
| 36 | 
            +
                    <value>no date</value>
         | 
| 37 | 
            +
                    <value>online</value>
         | 
| 38 | 
            +
                    <value>presented at</value>
         | 
| 39 | 
            +
                    <value>reference</value>
         | 
| 40 | 
            +
                    <value>retrieved</value>
         | 
| 41 | 
            +
                    <value>scale</value>
         | 
| 42 | 
            +
                    <value>open-quote</value>
         | 
| 43 | 
            +
                    <a:documentation>Punctuation</a:documentation>
         | 
| 44 | 
            +
                    <value>close-quote</value>
         | 
| 45 | 
            +
                    <value>open-inner-quote</value>
         | 
| 46 | 
            +
                    <value>close-inner-quote</value>
         | 
| 47 | 
            +
                    <value>page-range-delimiter</value>
         | 
| 48 | 
            +
                    <value>season-01</value>
         | 
| 49 | 
            +
                    <a:documentation>Seasons</a:documentation>
         | 
| 50 | 
            +
                    <value>season-02</value>
         | 
| 51 | 
            +
                    <value>season-03</value>
         | 
| 52 | 
            +
                    <value>season-04</value>
         | 
| 53 | 
            +
                  </choice>
         | 
| 54 | 
            +
                </define>
         | 
| 55 | 
            +
                <define name="terms.gender-assignable">
         | 
| 56 | 
            +
                  <a:documentation>Terms to which a gender may be assigned</a:documentation>
         | 
| 57 | 
            +
                  <choice>
         | 
| 58 | 
            +
                    <value>month-01</value>
         | 
| 59 | 
            +
                    <a:documentation>Months</a:documentation>
         | 
| 60 | 
            +
                    <value>month-02</value>
         | 
| 61 | 
            +
                    <value>month-03</value>
         | 
| 62 | 
            +
                    <value>month-04</value>
         | 
| 63 | 
            +
                    <value>month-05</value>
         | 
| 64 | 
            +
                    <value>month-06</value>
         | 
| 65 | 
            +
                    <value>month-07</value>
         | 
| 66 | 
            +
                    <value>month-08</value>
         | 
| 67 | 
            +
                    <value>month-09</value>
         | 
| 68 | 
            +
                    <value>month-10</value>
         | 
| 69 | 
            +
                    <value>month-11</value>
         | 
| 70 | 
            +
                    <value>month-12</value>
         | 
| 71 | 
            +
                    <ref name="terms.non-locator-number-variables"/>
         | 
| 72 | 
            +
                    <ref name="terms.locator-number-variables"/>
         | 
| 73 | 
            +
                  </choice>
         | 
| 74 | 
            +
                </define>
         | 
| 75 | 
            +
                <define name="terms.gender-variants">
         | 
| 76 | 
            +
                  <a:documentation>Terms for which gender variants may be specified</a:documentation>
         | 
| 77 | 
            +
                  <choice>
         | 
| 78 | 
            +
                    <value>ordinal-01</value>
         | 
| 79 | 
            +
                    <a:documentation>Ordinals</a:documentation>
         | 
| 80 | 
            +
                    <value>ordinal-02</value>
         | 
| 81 | 
            +
                    <value>ordinal-03</value>
         | 
| 82 | 
            +
                    <value>ordinal-04</value>
         | 
| 83 | 
            +
                    <value>long-ordinal-01</value>
         | 
| 84 | 
            +
                    <a:documentation>Long ordinals</a:documentation>
         | 
| 85 | 
            +
                    <value>long-ordinal-02</value>
         | 
| 86 | 
            +
                    <value>long-ordinal-03</value>
         | 
| 87 | 
            +
                    <value>long-ordinal-04</value>
         | 
| 88 | 
            +
                    <value>long-ordinal-05</value>
         | 
| 89 | 
            +
                    <value>long-ordinal-06</value>
         | 
| 90 | 
            +
                    <value>long-ordinal-07</value>
         | 
| 91 | 
            +
                    <value>long-ordinal-08</value>
         | 
| 92 | 
            +
                    <value>long-ordinal-09</value>
         | 
| 93 | 
            +
                    <value>long-ordinal-10</value>
         | 
| 94 | 
            +
                  </choice>
         | 
| 95 | 
            +
                </define>
         | 
| 96 | 
            +
                <define name="terms.locator">
         | 
| 97 | 
            +
                  <a:documentation>Locators</a:documentation>
         | 
| 98 | 
            +
                  <choice>
         | 
| 99 | 
            +
                    <ref name="terms.locator.testable"/>
         | 
| 100 | 
            +
                    <value>sub verbo</value>
         | 
| 101 | 
            +
                    <a:documentation>"sub verbo" is recognized as "sub" & "verbo" in attribute lists; term
         | 
| 102 | 
            +
            should be renamed to "sub-verbo"</a:documentation>
         | 
| 103 | 
            +
                  </choice>
         | 
| 104 | 
            +
                </define>
         | 
| 105 | 
            +
                <define name="terms.locator.testable">
         | 
| 106 | 
            +
                  <a:documentation>Locator terms that can be tested with the "locator" conditional
         | 
| 107 | 
            +
            ("sub verbo" can be tested with "sub-verbo")</a:documentation>
         | 
| 108 | 
            +
                  <choice>
         | 
| 109 | 
            +
                    <value>book</value>
         | 
| 110 | 
            +
                    <value>chapter</value>
         | 
| 111 | 
            +
                    <value>column</value>
         | 
| 112 | 
            +
                    <value>figure</value>
         | 
| 113 | 
            +
                    <value>folio</value>
         | 
| 114 | 
            +
                    <value>line</value>
         | 
| 115 | 
            +
                    <value>note</value>
         | 
| 116 | 
            +
                    <value>opus</value>
         | 
| 117 | 
            +
                    <value>page</value>
         | 
| 118 | 
            +
                    <value>paragraph</value>
         | 
| 119 | 
            +
                    <value>part</value>
         | 
| 120 | 
            +
                    <value>section</value>
         | 
| 121 | 
            +
                    <value>verse</value>
         | 
| 122 | 
            +
                    <ref name="terms.locator-number-variables"/>
         | 
| 123 | 
            +
                  </choice>
         | 
| 124 | 
            +
                </define>
         | 
| 125 | 
            +
                <define name="terms.locator-number-variables">
         | 
| 126 | 
            +
                  <a:documentation>Locator terms with matching number variables</a:documentation>
         | 
| 127 | 
            +
                  <choice>
         | 
| 128 | 
            +
                    <value>issue</value>
         | 
| 129 | 
            +
                    <value>volume</value>
         | 
| 130 | 
            +
                  </choice>
         | 
| 131 | 
            +
                </define>
         | 
| 132 | 
            +
                <define name="terms.non-locator-number-variables">
         | 
| 133 | 
            +
                  <a:documentation>Non-locator terms accompanying number variables</a:documentation>
         | 
| 134 | 
            +
                  <choice>
         | 
| 135 | 
            +
                    <value>chapter-number</value>
         | 
| 136 | 
            +
                    <value>collection-number</value>
         | 
| 137 | 
            +
                    <value>edition</value>
         | 
| 138 | 
            +
                    <value>number</value>
         | 
| 139 | 
            +
                    <value>number-of-pages</value>
         | 
| 140 | 
            +
                    <value>number-of-volumes</value>
         | 
| 141 | 
            +
                  </choice>
         | 
| 142 | 
            +
                </define>
         | 
| 143 | 
            +
              </div>
         | 
| 144 | 
            +
            </grammar>
         | 
| @@ -0,0 +1,45 @@ | |
| 1 | 
            +
            <?xml version="1.0" encoding="UTF-8"?>
         | 
| 2 | 
            +
            <grammar xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
         | 
| 3 | 
            +
              <div>
         | 
| 4 | 
            +
                <a:documentation>Item types</a:documentation>
         | 
| 5 | 
            +
                <define name="item-types">
         | 
| 6 | 
            +
                  <choice>
         | 
| 7 | 
            +
                    <value>article</value>
         | 
| 8 | 
            +
                    <value>article-journal</value>
         | 
| 9 | 
            +
                    <value>article-magazine</value>
         | 
| 10 | 
            +
                    <value>article-newspaper</value>
         | 
| 11 | 
            +
                    <value>bill</value>
         | 
| 12 | 
            +
                    <value>book</value>
         | 
| 13 | 
            +
                    <value>broadcast</value>
         | 
| 14 | 
            +
                    <value>chapter</value>
         | 
| 15 | 
            +
                    <value>dataset</value>
         | 
| 16 | 
            +
                    <value>entry</value>
         | 
| 17 | 
            +
                    <value>entry-dictionary</value>
         | 
| 18 | 
            +
                    <value>entry-encyclopedia</value>
         | 
| 19 | 
            +
                    <value>figure</value>
         | 
| 20 | 
            +
                    <value>graphic</value>
         | 
| 21 | 
            +
                    <value>interview</value>
         | 
| 22 | 
            +
                    <value>legal_case</value>
         | 
| 23 | 
            +
                    <value>legislation</value>
         | 
| 24 | 
            +
                    <value>manuscript</value>
         | 
| 25 | 
            +
                    <value>map</value>
         | 
| 26 | 
            +
                    <value>motion_picture</value>
         | 
| 27 | 
            +
                    <value>musical_score</value>
         | 
| 28 | 
            +
                    <value>pamphlet</value>
         | 
| 29 | 
            +
                    <value>paper-conference</value>
         | 
| 30 | 
            +
                    <value>patent</value>
         | 
| 31 | 
            +
                    <value>personal_communication</value>
         | 
| 32 | 
            +
                    <value>post</value>
         | 
| 33 | 
            +
                    <value>post-weblog</value>
         | 
| 34 | 
            +
                    <value>report</value>
         | 
| 35 | 
            +
                    <value>review</value>
         | 
| 36 | 
            +
                    <value>review-book</value>
         | 
| 37 | 
            +
                    <value>song</value>
         | 
| 38 | 
            +
                    <value>speech</value>
         | 
| 39 | 
            +
                    <value>thesis</value>
         | 
| 40 | 
            +
                    <value>treaty</value>
         | 
| 41 | 
            +
                    <value>webpage</value>
         | 
| 42 | 
            +
                  </choice>
         | 
| 43 | 
            +
                </define>
         | 
| 44 | 
            +
              </div>
         | 
| 45 | 
            +
            </grammar>
         | 
| @@ -0,0 +1,114 @@ | |
| 1 | 
            +
            <?xml version="1.0" encoding="UTF-8"?>
         | 
| 2 | 
            +
            <grammar xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0">
         | 
| 3 | 
            +
              <div>
         | 
| 4 | 
            +
                <a:documentation>Variables</a:documentation>
         | 
| 5 | 
            +
                <define name="variables">
         | 
| 6 | 
            +
                  <a:documentation>All variables</a:documentation>
         | 
| 7 | 
            +
                  <choice>
         | 
| 8 | 
            +
                    <ref name="variables.dates"/>
         | 
| 9 | 
            +
                    <ref name="variables.names"/>
         | 
| 10 | 
            +
                    <ref name="variables.numbers"/>
         | 
| 11 | 
            +
                    <ref name="variables.strings"/>
         | 
| 12 | 
            +
                  </choice>
         | 
| 13 | 
            +
                </define>
         | 
| 14 | 
            +
                <define name="variables.standard">
         | 
| 15 | 
            +
                  <a:documentation>Standard variables</a:documentation>
         | 
| 16 | 
            +
                  <choice>
         | 
| 17 | 
            +
                    <ref name="variables.numbers"/>
         | 
| 18 | 
            +
                    <ref name="variables.strings"/>
         | 
| 19 | 
            +
                  </choice>
         | 
| 20 | 
            +
                </define>
         | 
| 21 | 
            +
                <define name="variables.dates">
         | 
| 22 | 
            +
                  <a:documentation>Date variables</a:documentation>
         | 
| 23 | 
            +
                  <choice>
         | 
| 24 | 
            +
                    <value>accessed</value>
         | 
| 25 | 
            +
                    <value>container</value>
         | 
| 26 | 
            +
                    <value>event-date</value>
         | 
| 27 | 
            +
                    <value>issued</value>
         | 
| 28 | 
            +
                    <value>original-date</value>
         | 
| 29 | 
            +
                    <value>submitted</value>
         | 
| 30 | 
            +
                  </choice>
         | 
| 31 | 
            +
                </define>
         | 
| 32 | 
            +
                <define name="variables.names">
         | 
| 33 | 
            +
                  <a:documentation>Name variables</a:documentation>
         | 
| 34 | 
            +
                  <choice>
         | 
| 35 | 
            +
                    <value>author</value>
         | 
| 36 | 
            +
                    <value>collection-editor</value>
         | 
| 37 | 
            +
                    <value>composer</value>
         | 
| 38 | 
            +
                    <value>container-author</value>
         | 
| 39 | 
            +
                    <value>director</value>
         | 
| 40 | 
            +
                    <value>editor</value>
         | 
| 41 | 
            +
                    <value>editorial-director</value>
         | 
| 42 | 
            +
                    <value>illustrator</value>
         | 
| 43 | 
            +
                    <value>interviewer</value>
         | 
| 44 | 
            +
                    <value>original-author</value>
         | 
| 45 | 
            +
                    <value>recipient</value>
         | 
| 46 | 
            +
                    <value>reviewed-author</value>
         | 
| 47 | 
            +
                    <value>translator</value>
         | 
| 48 | 
            +
                  </choice>
         | 
| 49 | 
            +
                </define>
         | 
| 50 | 
            +
                <define name="variables.numbers">
         | 
| 51 | 
            +
                  <a:documentation>Number variables</a:documentation>
         | 
| 52 | 
            +
                  <choice>
         | 
| 53 | 
            +
                    <value>chapter-number</value>
         | 
| 54 | 
            +
                    <value>collection-number</value>
         | 
| 55 | 
            +
                    <value>edition</value>
         | 
| 56 | 
            +
                    <value>issue</value>
         | 
| 57 | 
            +
                    <value>number</value>
         | 
| 58 | 
            +
                    <value>number-of-pages</value>
         | 
| 59 | 
            +
                    <value>number-of-volumes</value>
         | 
| 60 | 
            +
                    <value>volume</value>
         | 
| 61 | 
            +
                  </choice>
         | 
| 62 | 
            +
                </define>
         | 
| 63 | 
            +
                <define name="variables.strings">
         | 
| 64 | 
            +
                  <a:documentation>String variables</a:documentation>
         | 
| 65 | 
            +
                  <choice>
         | 
| 66 | 
            +
                    <value>abstract</value>
         | 
| 67 | 
            +
                    <value>annote</value>
         | 
| 68 | 
            +
                    <value>archive</value>
         | 
| 69 | 
            +
                    <value>archive_location</value>
         | 
| 70 | 
            +
                    <value>archive-place</value>
         | 
| 71 | 
            +
                    <value>authority</value>
         | 
| 72 | 
            +
                    <value>call-number</value>
         | 
| 73 | 
            +
                    <value>citation-label</value>
         | 
| 74 | 
            +
                    <value>citation-number</value>
         | 
| 75 | 
            +
                    <value>collection-title</value>
         | 
| 76 | 
            +
                    <value>container-title</value>
         | 
| 77 | 
            +
                    <value>container-title-short</value>
         | 
| 78 | 
            +
                    <value>dimensions</value>
         | 
| 79 | 
            +
                    <value>DOI</value>
         | 
| 80 | 
            +
                    <value>event</value>
         | 
| 81 | 
            +
                    <value>event-place</value>
         | 
| 82 | 
            +
                    <value>first-reference-note-number</value>
         | 
| 83 | 
            +
                    <value>genre</value>
         | 
| 84 | 
            +
                    <value>ISBN</value>
         | 
| 85 | 
            +
                    <value>ISSN</value>
         | 
| 86 | 
            +
                    <value>jurisdiction</value>
         | 
| 87 | 
            +
                    <value>keyword</value>
         | 
| 88 | 
            +
                    <value>locator</value>
         | 
| 89 | 
            +
                    <value>medium</value>
         | 
| 90 | 
            +
                    <value>note</value>
         | 
| 91 | 
            +
                    <value>original-publisher</value>
         | 
| 92 | 
            +
                    <value>original-publisher-place</value>
         | 
| 93 | 
            +
                    <value>original-title</value>
         | 
| 94 | 
            +
                    <value>page</value>
         | 
| 95 | 
            +
                    <value>page-first</value>
         | 
| 96 | 
            +
                    <value>PMID</value>
         | 
| 97 | 
            +
                    <value>PMCID</value>
         | 
| 98 | 
            +
                    <value>publisher</value>
         | 
| 99 | 
            +
                    <value>publisher-place</value>
         | 
| 100 | 
            +
                    <value>references</value>
         | 
| 101 | 
            +
                    <value>reviewed-title</value>
         | 
| 102 | 
            +
                    <value>scale</value>
         | 
| 103 | 
            +
                    <value>section</value>
         | 
| 104 | 
            +
                    <value>source</value>
         | 
| 105 | 
            +
                    <value>status</value>
         | 
| 106 | 
            +
                    <value>title</value>
         | 
| 107 | 
            +
                    <value>title-short</value>
         | 
| 108 | 
            +
                    <value>URL</value>
         | 
| 109 | 
            +
                    <value>version</value>
         | 
| 110 | 
            +
                    <value>year-suffix</value>
         | 
| 111 | 
            +
                  </choice>
         | 
| 112 | 
            +
                </define>
         | 
| 113 | 
            +
              </div>
         | 
| 114 | 
            +
            </grammar>
         |