forked from citation-style-language/schema
-
Notifications
You must be signed in to change notification settings - Fork 1
/
csl-mlz.rnc
955 lines (846 loc) · 27.7 KB
/
csl-mlz.rnc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
namespace cs = "http://purl.org/net/xbiblio/csl"
namespace dc = "http://purl.org/dc/elements/1.1/"
dc:title [ "Citation Style Language - Extension Schema for MLZ" ]
dc:creator [ "Frank Bennett" ]
dc:creator [ "Rintze Zelle" ]
dc:rights [
"Copyright 2012 by Frank Bennett and Rintze Zelle. Permission to freely use, copy and distribute."
]
dc:description [
"Extends the official CSL schema for use with Multilingual Zotero."
]
include "csl-jurisdictions.rnc"
include "csl-repository.rnc" {
version = attribute version { "1.1mlz1" }
## Add "skip-words" attribute
locale.style-options =
element cs:style-options {
## Limit the "ordinal" form to the first day of the month.
[ a:defaultValue = "false" ]
attribute limit-day-ordinals-to-day-1 { xsd:boolean }?,
## Specify whether punctuation (a period or comma) is placed within
## or outside (default) the closing quotation mark.
[ a:defaultValue = "false" ]
attribute punctuation-in-quote { xsd:boolean }?,
## Resets the default list of skip-words. List is comma-delimited list of arbitrary strings.
attribute skip-words { text }?,
## Resets the default list of leading-noise-words. List is comma-delimited list of arbitrary strings.
attribute leading-noise-words { text }?,
## Resets
attribute name-as-sort-order { list { xsd:language+ } }?,
## Resets
attribute name-never-short { list { xsd:language+ } }?,
## Resets
attribute jurisdiction-preference { text }?
}
## Replace affixes by affixes-date on cs:date-part
locale.date.date-part =
element cs:date-part {
affixes-date, font-formatting, text-case, (day | month | year)
}
## Override definition of date to add use-default-locale
rendering-element.date =
element cs:date {
attribute variable { variables.dates },
((
## Limit the date parts rendered.
[ a:defaultValue = "year-month-day" ]
attribute date-parts {
## Year, month and day
"year-month-day"
|
## Year and month
"year-month"
|
## Year only
"year"
|
# Month and day only
"month-day"
}?,
date.form,
use-default-locale,
rendering-element.date.date-part.localized*)
| (rendering-element.date.date-part.non-localized+, delimiter)),
affixes,
display,
font-formatting,
text-case
}
## For translations and reprints
rendering-element =
rendering-element.names
| rendering-element.date
| rendering-element.label
| rendering-element.text
| rendering-element.number
| rendering-element.choose
| rendering-element.group
| rendering-element.alternative
| rendering-element.alternative-text
## Terms (adding email, instant-message, television-broadcast, radio-broadcast, and podcast)
terms =
terms.gender-assignable
| terms.gender-variants
| terms.locator
|
## Contributor roles
variables.names
| "editortranslator"
|
## Miscellaneous terms
"accessed"
| "ad"
| "and"
| "and others"
| "anonymous"
| "at"
| "available at"
| "bc"
| "by"
| "circa"
| "cited"
| "email"
| "et-al"
| "forthcoming"
| "from"
| "ibid"
| "in"
| "in press"
| "instant-message"
| "internet"
| "interview"
| "letter"
| "no date"
| "online"
| "podcast"
| "presented at"
| "radio-broadcast"
| "reference"
| "retrieved"
| "scale"
| "television-broadcast"
| "version"
|
## Punctuation
"open-quote"
| "close-quote"
| "open-inner-quote"
| "close-inner-quote"
| "page-range-delimiter"
|
## Seasons
"season-01"
| "season-02"
| "season-03"
| "season-04"
|
## (legacy; remove in CSL 1.1)
category.field
date.form =
## Select the localized date format ("text" or "numeric").
attribute form {
## Text date form (e.g., "December 15, 2005").
"text"
|
## Numeric date form (e.g., "2005-12-15").
"numeric"
|
## Add imperial date form
"imperial"
}
year =
attribute name { "year" },
## Year forms: "long" ("2005"), "short" ("05").
[ a:defaultValue = "long" ] attribute form { "short" | "long" | "numeric" | "numeric-leading-zeros" | "imperial" }?,
range-delimiter
## Add support for locale-specific layouts
style.citation =
element cs:citation {
citation.options,
sort?,
citation.layout-locale*,
citation.layout-default
}
style.bibliography =
element cs:bibliography {
bibliography.options,
sort?,
bibliography.layout-locale*,
bibliography.layout
}
## Support for complex conditions
choose.if = ( if-simple | if-complex )
choose.else-if = ( else-if-simple | else-if-complex )
## Allow cs:institution element as child element of cs:names, add
## name-label-before, name-label-after
rendering-element.names =
element cs:names {
names.attributes,
attribute require-match { xsd:boolean }?,
(names.label-before?,
names.name?,
names.et-al?,
names.institution?,
names.label-after?),
names.substitute?
}
## Replace affixes by affixes-date on cs:date-part
rendering-element.date.date-part.non-localized =
## Specify, in the desired order, the date parts that should be
## rendered and their formatting.
element cs:date-part {
affixes-date, font-formatting, text-case, (day | month | year)
}
## Allow "label-form" attribute to accompany "macro" on cs:text
## Allow "leading-noise-words" attribute to accompany "variable" on cs:text
text.attributes =
(
## Select a macro.
attribute macro { xsd:NMTOKEN },
attribute label-form { term.form }?,
[a:defaultValue = "false" ] attribute label-capitalize-if-first { xsd:boolean }?)
| (
## Select a term.
attribute term { terms },
[ a:defaultValue = "long" ] attribute form { term.form }?,
## Specify term plurality: singular ("false") or plural ("true").
[ a:defaultValue = "false" ] attribute plural { xsd:boolean }?,
## Force use of the style default locale for the term
use-default-locale)
|
## Specify verbatim text.
attribute value { text }
| (
## Select a variable.
attribute variable { variables.strings },
## Form of the variable
[ a:defaultValue = "long" ] attribute form { "short" | "long" }?,
## What to do with leading noise words
attribute leading-noise-words { "drop" | "demote" }?)
## Allow "locator" variable on, add "label-form" attribute to cs:number
number.attributes =
attribute variable { variables.numbers | "locator" },
## Number forms: "numeric" ("4"), "ordinal" ("4th"), "long-ordinal"
## ("fourth"), "roman" ("iv").
[ a:defaultValue = "numeric" ]
attribute form {
"numeric" | "ordinal" | "long-ordinal" | "roman"
}?,
attribute label-form { term.form }?,
[ a:defaultValue = "false" ] attribute label-capitalize-if-first { xsd:boolean }?,
attribute gender { "masculine" | "feminine" }?,
## Render only a substring of the number input. Forces rendering as cs:text,
## numeric attributes will be ignored when this is used.
[ a:defaultValue = "false" ]
attribute substring { xsd:integer }?
name.attributes =
## Use to separate the second-to-last and last name of a name list by
## the "and" term or ampersand.
attribute and {
## Use the "and" term (e.g., "Doe, Johnson and Smith").
"text"
|
## Use the "ampersand" (e.g., "Doe, Johnson & Smith").
"symbol"
}?,
## Specify when the name delimiter is used between a truncated name list
## and the "et-al" (or "and others") term in case of et-al abbreviation
## (e.g., "Smith, Doe et al." or "Smith, Doe, et al.").
[ a:defaultValue = "contextual" ]
attribute delimiter-precedes-et-al {
## The name delimiter is only used when the truncated name list
## consists of two or more names.
"contextual"
|
## The name delimiter is always used.
"always"
|
## The name delimiter is never used.
"never"
|
## The name delimiter is only used if the preceding name is inverted as
## a result of the "name-as-sort-order" attribute.
"after-inverted-name"
}?,
## Specify when the name delimiter is used between the second-to-last
## and last name of a non-truncated name list. Only has an effect when
## the "and" term or ampersand is used (e.g., "Doe and Smith" or "Doe,
## and Smith").
[ a:defaultValue = "contextual" ]
attribute delimiter-precedes-last {
## The name delimiter is only used when the name list consists of
## three or more names.
"contextual"
|
## The name delimiter is always used.
"always"
|
## The name delimiter is never used.
"never"
|
## The name delimiter is only used if the preceding name is inverted as
## a result of the "name-as-sort-order" attribute.
"after-inverted-name"
}?,
## Set the minimum number of names needed in a name variable to activate
## et-al abbreviation.
attribute et-al-min { xsd:integer }?,
## Set the number of names to render when et-al abbreviation is active.
attribute et-al-use-first { xsd:integer }?,
## As "et-al-min", but only affecting subsequent citations to an item.
attribute et-al-subsequent-min { xsd:integer }?,
## As "et-al-use-first", but only affecting subsequent citations to an
## item.
attribute et-al-subsequent-use-first { xsd:integer }?,
## If set to "true", the "et-al" (or "and others") term is replaced by
## an ellipsis followed by the last name of the name variable.
[ a:defaultValue = "false" ]
attribute et-al-use-last { xsd:boolean }?,
## If set to "false", names are not initialized and "initialize-with"
## only affects initials already present in the input data.
[ a:defaultValue = "true" ] attribute initialize { xsd:boolean }?,
## Activate initializing of given names. The attribute value is appended
## to each initial (e.g., with ". ", "Orson Welles" becomes "O. Welles").
attribute initialize-with { text }?,
## Specify whether (and which) names should be rendered in their sort
## order (e.g., "Doe, John" instead of "John Doe").
attribute name-as-sort-order {
## Render the first name of each name variable in sort order.
"first"
|
## Render all names in sort order.
"all"
}?,
## Sets the delimiter for name-parts that have switched positions as a
## result of "name-as-sort-order" (e.g., ", " in "Doe, John").
[ a:defaultValue = ", " ] attribute sort-separator { text }?,
## Suppress output if number of names is at or above a min,
## or at or below a max value
attribute suppress-min { xsd:integer }?,
attribute suppress-max { xsd:integer }?
## Drop affixes
label.attributes-shared =
## Specify when the plural version of a term is selected.
[ a:defaultValue = "contextual" ]
attribute plural { "always" | "never" | "contextual" }?,
font-formatting,
strip-periods,
text-case
## Add back affixes (removed from label.attributes-shared)
label.attributes =
attribute variable { variables.numbers | "locator" | "page" },
[ a:defaultValue = "long" ]
attribute form { "long" | "short" | "symbol" | "static" }?,
[ a:defaultValue = "false" ]
attribute capitalize-if-first { xsd:boolean }?,
use-default-locale,
affixes
## Add "is-parallel", "quotes", "subgroup-delimiter",
## "subgroup-delimiter-precedes-last", attribute on cs:group
group.attributes =
quotes,
attribute subgroup-delimiter { text }?,
attribute subgroup-delimiter-precedes-last {
"contextual" | "always" | "never"
}?,
attribute no-repeat {
list { variables+ }
}?,
attribute parallel-first {
list { variables+ }
}?,
attribute parallel-last {
list { variables+ }
}?,
attribute parallel-last-to-first {
list { variables+ }
}?,
attribute parallel-delimiter-override {
xsd:string
}?,
attribute parallel-delimiter-override-on-suppress {
xsd:string
}?,
attribute layout-delimiter-override {
xsd:string
}?,
attribute reject {
"comma-safe" | "comma-safe-numbers-only" | "empty-label" | "empty-label-no-decor"
}?,
attribute require {
"comma-safe" | "comma-safe-numbers-only" | "empty-label" | "empty-label-no-decor"
}?
style.options =
style.demote-non-dropping-particle,
style.initialize-with-hyphen,
style.page-range-format,
style.year-range-format,
style.require-comma-on-symbol,
names-inheritable-options,
name-inheritable-options,
attribute disable-duplicate-year-suppression {
list { jurisdictions+ }
}?,
attribute track-containers { list { item-types+ } }?
## Add conditions, allow "type" on "variable", limit "position" to one
## position
condition =
## If used, the element content is only rendered if it disambiguates two
## otherwise identical citations. This attempt at disambiguation is only
## made after all other disambiguation methods have failed.
[ a:defaultValue = "true" ] attribute disambiguate { "true" | "check-ambiguity-and-backreference" }
|
## Tests whether the given variables contain numeric text.
attribute is-numeric {
list { variables+ }
}
|
## Tests whether the given date variables contain approximate dates.
attribute is-uncertain-date {
list { variables.dates+ }
}
|
## Tests whether the locator matches the given locator types.
attribute locator {
list { (terms.locator.testable | "sub-verbo")+ }
}
|
## Tests whether the cite position matches the given positions.
attribute position {
list {
"first"
| "container-subsequent"
| "subsequent"
| "ibid"
| "ibid-with-locator"
| "near-note"
| "far-note"
}
}
|
## Tests whether the item matches the given types.
attribute type {
list { item-types+ }
}
|
## Tests whether the default ("long") forms of the given variables
## contain non-empty values.
attribute variable {
list { variables+ | "type" }
}
|
## Tests whether the statement containing the condition is being
## executed inside cs:citation or cs:bibliography
attribute context { "citation" | "bibliography" | "alternative" }
|
## False if no date value, or date contains a month or season.
attribute has-year-only {
list { variables.dates+ }
}
|
## False if no date value, no month or season value, or date contains a day.
attribute has-to-month-or-season {
list { variables.dates+ }
}
|
## False if no date value, no month value, or no day value.
attribute has-day {
list { variables.dates+ }
}
| attribute is-plural { variables.names }
|
## Tests whether the jurisdiction variable matches the given jurisdictions (deprecated,
## as it will validate and match only for exact match to country code)
attribute jurisdiction {
list { jurisdictions+ }
}
|
## Tests whether the country variable matches the given country code
attribute country {
list { jurisdictions+ }
}
|
## Tests whether the page label matches the given label
attribute page {
list { terms.locator+ }
}
|
## Tests whether the number label matches the given label
## "number" is an anomaly
## In the Juris-M in-field abbrevs for extended locator labels,
## "no." stands for "issue".
## However, when testing for @number label, the processor
## assigns the label "number" as label to the number field
## if it has no value. So:
## no. 22 = issue 22
## 22 = number 22
attribute number {
list { terms.locator+ | "number" }
}
|
## True if the locale of the item matches the
## locale to be tested. Both are resolved before
## testing.
attribute locale {
list { xsd:language+ }
}
|
## True if the genre field of the item matches
## the respective argument, where "-" in the
## argument represents a space character.
attribute genre {
"email"
| "instant-message"
| "podcast"
| "radio-broadcast"
| "television-broadcast"
}
|
## Court class for Jurism
attribute court-class {
xsd:string
}
|
## Chapter count for two-stage formatting of chapters in bibliography
attribute container-multiple {
xsd:boolean
}
|
## Bibliography position as an item in a tracked container
attribute container-subsequent {
xsd:boolean
}
|
## Has multiple subunits separated by |
attribute has-subunit {
list { variables+ }
}
|
## Matches value of cite-form supplied by Abbrevs Filter
attribute cite-form {
xsd:integer
}
affixes =
[ a:defaultValue = "" ]
attribute prefix { string-no-leading-space }?,
[ a:defaultValue = "" ]
attribute suffix { string-no-trailing-space }?
## Add "normal" value on text-case attribute
text-case =
attribute text-case {
## display all text as lowercase
"lowercase"
|
## display all text as uppercase
"uppercase"
|
## capitalize first character; other characters
## displayed as is
"capitalize-first"
|
## capitalize first character of every word;
## other characters displayed lowercase
"capitalize-all"
|
## display as title case (the Chicago Manual
## of Style calls this "headline style")
"title"
|
## display as sentence case/sentence style
"sentence"
|
## do not perform formatting operations on input
"normal"
}?
## standard variables
variables.strings =
"abstract"
| "annote"
| "archive"
| "archive_location"
| "archive-place"
| "citation-label"
| "citation-number"
| "collection-title"
| "container-title"
| "container-title-short"
| "country"
| "dimensions"
| "DOI"
| "event"
| "event-place"
| "first-reference-note-number"
| "first-container-reference-note-number"
| "genre"
| "hereinafter"
| "ISBN"
| "ISSN"
| "jurisdiction"
| "keyword"
| "locator"
| "medium"
| "note"
| "original-publisher"
| "original-publisher-place"
| "original-title"
| "PMID"
| "PMCID"
| "publisher"
| "publisher-place"
| "references"
| "reviewed-title"
| "scale"
| "section"
| "source"
| "status"
| "title"
| "title-short"
| "title-main"
| "title-sub"
| "URL"
| "version"
| "volume-title"
| "year-suffix"
independent-style.style.info =
element cs:info {
info.title,
info.title-short?,
info.id,
independent-style.info.link.self,
independent-style.info.link.template*,
independent-style.info.link.documentation+,
info.author*,
info.contributor*,
info.category.citation-format,
info.category.field*,
info.issn?,
info.eissn?,
info.issnl?,
info.summary?,
info.published?,
info.updated,
info.rights,
info.law-module?
}
}
## Set court categories as prep for court-class condition
locale.court-class =
element cs:court-class {
attribute name { xsd:string },
attribute country { jurisdictions },
attribute courts { list { xsd:string+ } }
}
style.locale |=
## Use to (re)define localized terms, dates and options.
element cs:locale {
## Specify the affected locale(s). If "xml:lang" is not set, the
## "cs:locale" element affects all locales.
attribute xml:lang { xsd:language }?,
(locale.style-options? & locale.date* & locale.terms? & locale.court-class*)
}
## Use default locale (for cs:text w/term, cs:label, and cs:date-part)
use-default-locale = ( [ a:defaultValue = "false" ] attribute default-locale { xsd:boolean }? )
info.law-module =
element cs:law-module {
attribute types {
list {
( "bill"
| "legal_case"
| "legislation"
| "bill"
| "report"
| "regulation"
| "hearing"
| "locator"
)+
}
}
}
term.form |= "static"
## Add support for locale-specific layouts
citation.layout-locale =
element cs:layout {
affixes,
delimiter,
font-formatting,
layout.locale,
rendering-element+
}
citation.layout-default =
element cs:layout {
affixes, delimiter, font-formatting, rendering-element+
}
## Add support for locale-specific layouts
bibliography.layout-locale =
element cs:layout {
affixes,
font-formatting,
layout.locale,
rendering-element+
}
layout.locale =
attribute locale {
list { xsd:language+ }
}
## Similar to label, but inherits variable from <names> tag
names.label-before =
element cs:label {
attribute form { term.form }?,
affixes-leading-name-label,
label.attributes-shared
}
names.label-after =
element cs:label {
attribute form { term.form }?,
affixes-trailing-name-label,
label.attributes-shared
}
## Institution, used to format institutional subunit names
## Institutional subunit names always follow personal names
## when this element is included in cs:names
names.institution =
element cs:institution {
institution-attributes,
## formatting and affixes of long and short
## forms may be controlled individually
element cs:institution-part {
((attribute name { "long" },
## apply formatting to long form only
## if short form is also available
attribute if-short { "true" | "false" }?)
| attribute name { "short" }),
text-case,
strip-periods,
font-formatting,
affixes-trailing-name-label
}*
}
## Attributes for use in formatting institution names
institution-attributes =
delimiter?,
attribute form { "long" | "short" }?,
attribute part-separator { text }?,
## The order of institution subunits can be reversed
attribute reverse-order { "true" | "false" }?,
(
## Include the first n institutional subunit names,
## even when a personal name is also present
attribute use-first { xsd:integer }
|
## Include the first n institutional subunit names
## only if no personal names are present
attribute substitute-use-first { xsd:integer })?,
## Controls appearance of "and"/"&". Default is "none".
attribute and { "text" | "symbol" | "none" }?,
## Always include the last n institutional subunit names,
## after first dropping subunits with stop-last
attribute use-last { xsd:integer }?,
## Always ignore the last n institutional subunit names
attribute stop-last { xsd:integer }?,
## Controls which forms of an institutional subunit name
## to include
attribute institution-parts {
"long" | "short" | "long-short" | "short-long"
}?,
## Suppress output if number of names is at or above a min,
## or at or below a max value
attribute suppress-min { xsd:integer }?,
attribute suppress-max { xsd:integer }?
## Abbreviation setting of ranges in year dates
## (by default no reformatting is applied to the input data).
style.year-range-format =
attribute year-range-format {
"expanded" | "minimal" | "minimal-two" | "chicago"
}?
style.require-comma-on-symbol =
attribute require-comma-on-symbol {
"never" | "always" | "after-number"
}?
## Strings for use in affixes
string-no-leading-space = xsd:string { pattern = "([^ ].*)*" }
string-no-trailing-space = xsd:string { pattern = "(.*[^ ])*" }
affixes-date =
attribute prefix { text }?,
attribute suffix { text }?
affixes-leading-name-label =
attribute prefix { string-no-leading-space }?,
attribute suffix { text }?
affixes-trailing-name-label =
attribute prefix { text }?,
attribute suffix { string-no-trailing-space }?
## Modifications to contents csl-terms.rnc
div {
## Add locator terms
terms.locator.testable |= "Chapter" | "Section" | "article" | "rule" | "title" | "number"
| "illustration" | "introduction" | "preamble" | "principle" | "publication" | "schedule"
| "series," | "subdivision" | "subsection" | "supplement" | "table" | "title"
| "subparagraph" | "amendment" | "annotation" | "appendix" | "bibliography" | "clause"
| "comment" | "decision" | "department" | "division" | "example" | "hypothetical" | "field"
## Add non-locator terms accompanying number variables
terms.non-locator-number-variables |=
"supplement"
|
## Extended numeric terms
xsd:string {
pattern =
"(chapter\-number|collection\-number|edition|issue|note|number|number\-of\-volumes|page|section|volume|)\-\d{2}"
}
}
## Additional item types (csl-types.rnc)
div {
item-types |=
"classic" | "gazette" | "regulation" | "treaty" | "standard" | "hearing" | "video" | "legal_commentary"
}
## Additional variables (csl-variables.rnc)
div {
## Add name variables
variables.names |= "authority" | "director" | "commenter" | "committee" | "contributor" | "alt-translator" | "dummy"
## Add date variables
variables.dates |= "available-date" | "locator-date" | "publication-date" | "alt-issued"
## Add number variables
variables.numbers |= "call-number" | "page" | "page-first" | "supplement" | "division" | "locator-extra" | "document-number"
## Add string variables
variables.strings |= "gazette-flag" | "admin-flag" | "document-name" | "archive_collection" | "language-name" | "language-name-original" | "alt-title" | "alt-container-title"
}
## For complex conditions
div {
if-simple = element cs:if { match?, condition+, rendering-element* }
if-complex = element cs:if { cs-conditions, rendering-element* }
else-if-simple = element cs:else-if { match?, condition+, rendering-element* }
else-if-complex = element cs:else-if { cs-conditions, rendering-element* }
cs-conditions = element cs:conditions { match, cs-condition+ }
cs-condition = element cs:condition { match?, condition+ }
}
div {
rendering-element.alternative =
## Use to enclose a set of rendering elements. Elements within the alternative
## scope will render in the destination locale of a translation or reprint.
## See also alternative-text.
element cs:alternative {
affixes,
delimiter,
rendering-element+
}
}
div {
rendering-element.alternative-text =
## Reruns the cs:layout scope with alternative data. Use alternative-text
## to add an annotation providing details of the source of a reprint or
## translation.
element cs:alternative-text {
affixes
}?
}
div {
exclude.types = attribute exclude-types { list { item-types+ } }
bibliography.options |= bibliography.hanging-indent,
bibliography.line-formatting-options,
bibliography.second-field-align,
bibliography.subsequent-author-substitute-options,
names-inheritable-options,
name-inheritable-options,
exclude.types?,
attribute consolidate-containers { list { item-types+ } }?
}