metanorma-un 0.9.10 → 0.9.12

Sign up to get free protection for your applications and to get access to all the features.
@@ -243,6 +243,9 @@
243
243
  <fo:block role="TOCI">
244
244
  <fo:block text-align-last="justify" margin-left="12mm" text-indent="-12mm">
245
245
  <fo:basic-link internal-destination="{@id}" fox:alt-text="{@section}">
246
+ <xsl:if test="@section = ''">
247
+ <xsl:attribute name="fox:alt-text">Annex</xsl:attribute>
248
+ </xsl:if>
246
249
  <xsl:if test="@section != ''">
247
250
  <fo:inline padding-right="3mm">
248
251
  <xsl:choose>
@@ -701,7 +704,19 @@
701
704
 
702
705
  <xsl:choose>
703
706
  <xsl:when test="ancestor::un:sections">
704
- <fo:block font-size="{$font-size}" font-weight="bold" space-before="3pt" margin-bottom="12pt" margin-left="-9.5mm" line-height="108%" keep-with-next="always" role="H{$level}"> <!-- line-height="14.5pt" text-indent="-9.5mm" -->
707
+ <xsl:variable name="section">
708
+ <xsl:for-each select="..">
709
+ <xsl:call-template name="getSection"/>
710
+ </xsl:for-each>
711
+ </xsl:variable>
712
+ <xsl:variable name="margin-left">
713
+ <xsl:choose>
714
+ <xsl:when test="string-length($section) = 3">11mm</xsl:when>
715
+ <xsl:when test="string-length($section) &gt; 3">13mm</xsl:when>
716
+ <xsl:otherwise>9.5mm</xsl:otherwise>
717
+ </xsl:choose>
718
+ </xsl:variable>
719
+ <fo:block font-size="{$font-size}" font-weight="bold" space-before="3pt" margin-bottom="12pt" margin-left="-{$margin-left}" line-height="108%" keep-with-next="always" role="H{$level}"> <!-- line-height="14.5pt" text-indent="-9.5mm" -->
705
720
  <xsl:if test="$level = 1">
706
721
  <!-- <xsl:attribute name="margin-left">-8.5mm</xsl:attribute> -->
707
722
  <xsl:attribute name="margin-top">18pt</xsl:attribute>
@@ -713,7 +728,9 @@
713
728
  <xsl:if test="$level = 3">
714
729
  <xsl:attribute name="margin-top">16pt</xsl:attribute>
715
730
  </xsl:if>
716
- <xsl:call-template name="insertTitleAsListItem"/>
731
+ <xsl:call-template name="insertTitleAsListItem">
732
+ <xsl:with-param name="provisional-distance-between-starts" select="$margin-left"/>
733
+ </xsl:call-template>
717
734
  </fo:block>
718
735
  </xsl:when>
719
736
 
@@ -1311,6 +1328,11 @@
1311
1328
  </xsl:variable>
1312
1329
  <xsl:variable name="table-border" select="normalize-space($table-border_)"/>
1313
1330
 
1331
+ <xsl:variable name="table-cell-border_">
1332
+
1333
+ </xsl:variable>
1334
+ <xsl:variable name="table-cell-border" select="normalize-space($table-cell-border_)"/>
1335
+
1314
1336
  <xsl:attribute-set name="table-container-style">
1315
1337
  <xsl:attribute name="margin-left">0mm</xsl:attribute>
1316
1338
  <xsl:attribute name="margin-right">0mm</xsl:attribute>
@@ -1322,8 +1344,6 @@
1322
1344
  <xsl:attribute-set name="table-style">
1323
1345
  <xsl:attribute name="table-omit-footer-at-break">true</xsl:attribute>
1324
1346
  <xsl:attribute name="table-layout">fixed</xsl:attribute>
1325
- <xsl:attribute name="margin-left">0mm</xsl:attribute>
1326
- <xsl:attribute name="margin-right">0mm</xsl:attribute>
1327
1347
 
1328
1348
  </xsl:attribute-set><!-- table-style -->
1329
1349
 
@@ -1682,7 +1702,7 @@
1682
1702
 
1683
1703
  <xsl:attribute-set name="list-style">
1684
1704
 
1685
- <xsl:attribute name="provisional-distance-between-starts">3mm</xsl:attribute>
1705
+ <xsl:attribute name="provisional-distance-between-starts">3.5mm</xsl:attribute>
1686
1706
  <xsl:attribute name="margin-left">7mm</xsl:attribute>
1687
1707
  <xsl:attribute name="text-indent">0mm</xsl:attribute>
1688
1708
 
@@ -2424,10 +2444,18 @@
2424
2444
  <xsl:variable name="table_attributes">
2425
2445
 
2426
2446
  <xsl:element name="table_attributes" use-attribute-sets="table-style">
2447
+
2448
+ <xsl:if test="$margin-side != 0">
2449
+ <xsl:attribute name="margin-left">0mm</xsl:attribute>
2450
+ <xsl:attribute name="margin-right">0mm</xsl:attribute>
2451
+ </xsl:if>
2452
+
2427
2453
  <xsl:attribute name="width"><xsl:value-of select="normalize-space($table_width)"/></xsl:attribute>
2428
2454
 
2429
- <xsl:attribute name="margin-left"><xsl:value-of select="$margin-side"/>mm</xsl:attribute>
2430
- <xsl:attribute name="margin-right"><xsl:value-of select="$margin-side"/>mm</xsl:attribute>
2455
+ <xsl:if test="$margin-side != 0">
2456
+ <xsl:attribute name="margin-left"><xsl:value-of select="$margin-side"/>mm</xsl:attribute>
2457
+ <xsl:attribute name="margin-right"><xsl:value-of select="$margin-side"/>mm</xsl:attribute>
2458
+ </xsl:if>
2431
2459
 
2432
2460
  <xsl:if test="ancestor::*[local-name()='sections']">
2433
2461
  <xsl:attribute name="border-top">1.5pt solid black</xsl:attribute>
@@ -3185,6 +3213,10 @@
3185
3213
  <xsl:template match="*[local-name()='tr']">
3186
3214
  <fo:table-row xsl:use-attribute-sets="table-body-row-style">
3187
3215
 
3216
+ <xsl:if test="*[local-name() = 'th']">
3217
+ <xsl:attribute name="keep-with-next">always</xsl:attribute>
3218
+ </xsl:if>
3219
+
3188
3220
  <xsl:call-template name="setTableRowAttributes"/>
3189
3221
  <xsl:apply-templates/>
3190
3222
  </fo:table-row>
@@ -4244,8 +4276,17 @@
4244
4276
  </fo:inline>
4245
4277
  </xsl:template> <!-- tt -->
4246
4278
 
4279
+ <xsl:variable name="regex_url_start">^(http://|https://|www\.)?(.*)</xsl:variable>
4247
4280
  <xsl:template match="*[local-name()='tt']/text()" priority="2">
4248
- <xsl:call-template name="add_spaces_to_sourcecode"/>
4281
+ <xsl:choose>
4282
+ <xsl:when test="java:replaceAll(java:java.lang.String.new(.), '$2', '') != ''">
4283
+ <!-- url -->
4284
+ <xsl:call-template name="add-zero-spaces-link-java"/>
4285
+ </xsl:when>
4286
+ <xsl:otherwise>
4287
+ <xsl:call-template name="add_spaces_to_sourcecode"/>
4288
+ </xsl:otherwise>
4289
+ </xsl:choose>
4249
4290
  </xsl:template>
4250
4291
 
4251
4292
  <xsl:template match="*[local-name()='underline']">
@@ -4601,8 +4642,11 @@
4601
4642
 
4602
4643
  <xsl:template name="add-zero-spaces-link-java">
4603
4644
  <xsl:param name="text" select="."/>
4645
+
4646
+ <xsl:value-of select="java:replaceAll(java:java.lang.String.new($text), $regex_url_start, '$1')"/> <!-- http://. https:// or www. -->
4647
+ <xsl:variable name="url_continue" select="java:replaceAll(java:java.lang.String.new($text), $regex_url_start, '$2')"/>
4604
4648
  <!-- add zero-width space (#x200B) after characters: dash, dot, colon, equal, underscore, em dash, thin space -->
4605
- <xsl:value-of select="java:replaceAll(java:java.lang.String.new($text),'(-|\.|:|=|_|—| |,)','$1​')"/>
4649
+ <xsl:value-of select="java:replaceAll(java:java.lang.String.new($url_continue),'(-|\.|:|=|_|—| |,|/)','$1​')"/>
4606
4650
  </xsl:template>
4607
4651
 
4608
4652
  <!-- add zero space after dash character (for table's entries) -->
@@ -5159,6 +5203,9 @@
5159
5203
  <xsl:value-of select="substring($str, 2)"/>
5160
5204
  </xsl:template>
5161
5205
 
5206
+ <!-- ======================================= -->
5207
+ <!-- math -->
5208
+ <!-- ======================================= -->
5162
5209
  <xsl:template match="mathml:math">
5163
5210
  <xsl:variable name="isAdded" select="@added"/>
5164
5211
  <xsl:variable name="isDeleted" select="@deleted"/>
@@ -5209,14 +5256,57 @@
5209
5256
  <xsl:value-of select="$comment_text"/>
5210
5257
  </xsl:template>
5211
5258
 
5259
+ <xsl:template match="*[local-name() = 'asciimath']">
5260
+ <xsl:param name="process" select="'false'"/>
5261
+ <xsl:if test="$process = 'true'">
5262
+ <xsl:apply-templates/>
5263
+ </xsl:if>
5264
+ </xsl:template>
5265
+
5266
+ <xsl:template match="*[local-name() = 'latexmath']"/>
5267
+
5268
+ <xsl:template name="getMathml_asciimath_text">
5269
+ <xsl:variable name="asciimath" select="../*[local-name() = 'asciimath']"/>
5270
+ <xsl:variable name="latexmath">
5271
+
5272
+ </xsl:variable>
5273
+ <xsl:variable name="asciimath_text_following">
5274
+ <xsl:choose>
5275
+ <xsl:when test="normalize-space($latexmath) != ''">
5276
+ <xsl:value-of select="$latexmath"/>
5277
+ </xsl:when>
5278
+ <xsl:when test="normalize-space($asciimath) != ''">
5279
+ <xsl:value-of select="$asciimath"/>
5280
+ </xsl:when>
5281
+ <xsl:otherwise>
5282
+ <xsl:value-of select="following-sibling::node()[1][self::comment()]"/>
5283
+ </xsl:otherwise>
5284
+ </xsl:choose>
5285
+ </xsl:variable>
5286
+ <xsl:variable name="asciimath_text_">
5287
+ <xsl:choose>
5288
+ <xsl:when test="normalize-space($asciimath_text_following) != ''">
5289
+ <xsl:value-of select="$asciimath_text_following"/>
5290
+ </xsl:when>
5291
+ <xsl:otherwise>
5292
+ <xsl:value-of select="normalize-space(translate(.,' ⁢',' '))"/>
5293
+ </xsl:otherwise>
5294
+ </xsl:choose>
5295
+ </xsl:variable>
5296
+ <xsl:variable name="asciimath_text_2" select="java:org.metanorma.fop.Util.unescape($asciimath_text_)"/>
5297
+ <xsl:variable name="asciimath_text" select="java:trim(java:java.lang.String.new($asciimath_text_2))"/>
5298
+ <xsl:value-of select="$asciimath_text"/>
5299
+ </xsl:template>
5300
+
5212
5301
  <xsl:template name="mathml_instream_object">
5213
- <xsl:param name="comment_text"/>
5302
+ <xsl:param name="asciimath_text"/>
5214
5303
  <xsl:param name="mathml_content"/>
5215
5304
 
5216
- <xsl:variable name="comment_text_">
5305
+ <xsl:variable name="asciimath_text_">
5217
5306
  <xsl:choose>
5218
- <xsl:when test="normalize-space($comment_text) != ''"><xsl:value-of select="$comment_text"/></xsl:when>
5219
- <xsl:otherwise><xsl:call-template name="getMathml_comment_text"/></xsl:otherwise>
5307
+ <xsl:when test="normalize-space($asciimath_text) != ''"><xsl:value-of select="$asciimath_text"/></xsl:when>
5308
+ <!-- <xsl:otherwise><xsl:call-template name="getMathml_comment_text"/></xsl:otherwise> -->
5309
+ <xsl:otherwise><xsl:call-template name="getMathml_asciimath_text"/></xsl:otherwise>
5220
5310
  </xsl:choose>
5221
5311
  </xsl:variable>
5222
5312
 
@@ -5233,10 +5323,10 @@
5233
5323
  </xsl:attribute>
5234
5324
 
5235
5325
  <!-- <xsl:if test="$add_math_as_text = 'true'"> -->
5236
- <xsl:if test="normalize-space($comment_text_) != ''">
5326
+ <xsl:if test="normalize-space($asciimath_text_) != ''">
5237
5327
  <!-- put Mathin Alternate Text -->
5238
5328
  <xsl:attribute name="fox:alt-text">
5239
- <xsl:value-of select="$comment_text_"/>
5329
+ <xsl:value-of select="$asciimath_text_"/>
5240
5330
  </xsl:attribute>
5241
5331
  </xsl:if>
5242
5332
  <!-- </xsl:if> -->
@@ -5309,6 +5399,29 @@
5309
5399
  <xsl:value-of select="."/><xsl:value-of select="$zero_width_space"/>
5310
5400
  </xsl:template>
5311
5401
 
5402
+ <!-- Examples:
5403
+ <stem type="AsciiMath">x = 1</stem>
5404
+ <stem type="AsciiMath"><asciimath>x = 1</asciimath></stem>
5405
+ <stem type="AsciiMath"><asciimath>x = 1</asciimath><latexmath>x = 1</latexmath></stem>
5406
+ -->
5407
+ <xsl:template match="*[local-name() = 'stem'][@type = 'AsciiMath'][count(*) = 0]/text() | *[local-name() = 'stem'][@type = 'AsciiMath'][*[local-name() = 'asciimath']]" priority="3">
5408
+ <fo:inline xsl:use-attribute-sets="mathml-style">
5409
+
5410
+ <xsl:choose>
5411
+ <xsl:when test="self::text()"><xsl:value-of select="."/></xsl:when>
5412
+ <xsl:otherwise>
5413
+ <xsl:apply-templates>
5414
+ <xsl:with-param name="process">true</xsl:with-param>
5415
+ </xsl:apply-templates>
5416
+ </xsl:otherwise>
5417
+ </xsl:choose>
5418
+
5419
+ </fo:inline>
5420
+ </xsl:template>
5421
+ <!-- ======================================= -->
5422
+ <!-- END: math -->
5423
+ <!-- ======================================= -->
5424
+
5312
5425
  <xsl:template match="*[local-name()='localityStack']"/>
5313
5426
 
5314
5427
  <xsl:template match="*[local-name()='link']" name="link">
@@ -8016,6 +8129,10 @@
8016
8129
 
8017
8130
  <fo:list-block xsl:use-attribute-sets="list-style">
8018
8131
 
8132
+ <xsl:if test="local-name() = 'ol'">
8133
+ <xsl:attribute name="provisional-distance-between-starts">6mm</xsl:attribute>
8134
+ </xsl:if>
8135
+
8019
8136
  <xsl:if test="*[local-name() = 'name']">
8020
8137
  <xsl:attribute name="margin-top">0pt</xsl:attribute>
8021
8138
  </xsl:if>
@@ -9014,7 +9131,7 @@
9014
9131
 
9015
9132
  <xsl:variable name="element_name_keep-together_within-line">keep-together_within-line</xsl:variable>
9016
9133
 
9017
- <xsl:template match="text()[not(ancestor::*[local-name() = 'bibdata'] or ancestor::*[local-name() = 'sourcecode'] or ancestor::*[local-name() = 'math'])]" name="keep_together_standard_number" mode="update_xml_enclose_keep-together_within-line">
9134
+ <xsl:template match="text()[not(ancestor::*[local-name() = 'bibdata'] or ancestor::*[local-name() = 'link'][not(contains(.,' '))] or ancestor::*[local-name() = 'sourcecode'] or ancestor::*[local-name() = 'math'] or starts-with(., 'http://') or starts-with(., 'https://') or starts-with(., 'www.') )]" name="keep_together_standard_number" mode="update_xml_enclose_keep-together_within-line">
9018
9135
 
9019
9136
  <!-- enclose standard's number into tag 'keep-together_within-line' -->
9020
9137
  <xsl:variable name="regex_standard_reference">([A-Z]{2,}(/[A-Z]{2,})* \d+(-\d+)*(:\d{4})?)</xsl:variable>
@@ -9490,13 +9607,14 @@
9490
9607
  </xsl:template>
9491
9608
 
9492
9609
  <xsl:template name="setId">
9610
+ <xsl:param name="prefix"/>
9493
9611
  <xsl:attribute name="id">
9494
9612
  <xsl:choose>
9495
9613
  <xsl:when test="@id">
9496
- <xsl:value-of select="@id"/>
9614
+ <xsl:value-of select="concat($prefix, @id)"/>
9497
9615
  </xsl:when>
9498
9616
  <xsl:otherwise>
9499
- <xsl:value-of select="generate-id()"/>
9617
+ <xsl:value-of select="concat($prefix, generate-id())"/>
9500
9618
  </xsl:otherwise>
9501
9619
  </xsl:choose>
9502
9620
  </xsl:attribute>
@@ -1,10 +1,5 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
2
  <grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3
- <include href="biblio.rng">
4
- <start>
5
- <ref name="document"/>
6
- </start>
7
- </include>
8
3
  <define name="document">
9
4
  <element name="document">
10
5
  <optional>
@@ -1125,26 +1120,4 @@
1125
1120
  </zeroOrMore>
1126
1121
  </element>
1127
1122
  </define>
1128
- <define name="ext">
1129
- <element name="ext">
1130
- <ref name="BibDataExtensionType"/>
1131
- </element>
1132
- </define>
1133
- <define name="BibDataExtensionType">
1134
- <ref name="doctype"/>
1135
- </define>
1136
- <define name="doctype">
1137
- <element name="doctype">
1138
- <ref name="DocumentType"/>
1139
- </element>
1140
- </define>
1141
- <define name="DocumentType">
1142
- <value>document</value>
1143
- </define>
1144
- <define name="BibData">
1145
- <ref name="BibliographicItem"/>
1146
- <optional>
1147
- <ref name="ext"/>
1148
- </optional>
1149
- </define>
1150
1123
  </grammar>
@@ -0,0 +1,164 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <grammar xmlns="http://relaxng.org/ns/structure/1.0">
3
+ <!--
4
+ Add-ons to biblio.rnc for standoc model: defines the extension point BibDataExtensionType
5
+ of relaton
6
+
7
+ Specialisations as for biblio.rnc. Extension point can be redefined completely for a flavour of standoc
8
+ (SDO); but other elements in Bibdata can only be extended (more specialised vocabularies for Bibdata)
9
+ -->
10
+ <include href="biblio.rng">
11
+ <define name="BibData">
12
+ <ref name="BibliographicItem"/>
13
+ <optional>
14
+ <ref name="ext"/>
15
+ </optional>
16
+ </define>
17
+ </include>
18
+ <define name="ext">
19
+ <element name="ext">
20
+ <ref name="BibDataExtensionType"/>
21
+ </element>
22
+ </define>
23
+ <define name="BibDataExtensionType">
24
+ <optional>
25
+ <attribute name="schema-version"/>
26
+ </optional>
27
+ <ref name="doctype"/>
28
+ <optional>
29
+ <ref name="docsubtype"/>
30
+ </optional>
31
+ <optional>
32
+ <ref name="editorialgroup"/>
33
+ </optional>
34
+ <zeroOrMore>
35
+ <ref name="ics"/>
36
+ </zeroOrMore>
37
+ <zeroOrMore>
38
+ <ref name="structuredidentifier"/>
39
+ </zeroOrMore>
40
+ </define>
41
+ <define name="doctype">
42
+ <element name="doctype">
43
+ <optional>
44
+ <attribute name="abbreviation"/>
45
+ </optional>
46
+ <ref name="DocumentType"/>
47
+ </element>
48
+ </define>
49
+ <define name="DocumentType">
50
+ <value>document</value>
51
+ </define>
52
+ <define name="docsubtype">
53
+ <element name="subdoctype">
54
+ <ref name="DocumentSubtype"/>
55
+ </element>
56
+ </define>
57
+ <define name="DocumentSubtype">
58
+ <text/>
59
+ </define>
60
+ <define name="editorialgroup">
61
+ <element name="editorialgroup">
62
+ <oneOrMore>
63
+ <ref name="technical-committee"/>
64
+ </oneOrMore>
65
+ </element>
66
+ </define>
67
+ <define name="technical-committee">
68
+ <element name="technical-committee">
69
+ <ref name="IsoWorkgroup"/>
70
+ </element>
71
+ </define>
72
+ <define name="IsoWorkgroup">
73
+ <optional>
74
+ <attribute name="number"/>
75
+ </optional>
76
+ <optional>
77
+ <attribute name="type"/>
78
+ </optional>
79
+ <optional>
80
+ <attribute name="identifier"/>
81
+ </optional>
82
+ <optional>
83
+ <attribute name="prefix"/>
84
+ </optional>
85
+ <text/>
86
+ </define>
87
+ <define name="ics">
88
+ <element name="ics">
89
+ <element name="code">
90
+ <text/>
91
+ </element>
92
+ <optional>
93
+ <element name="text">
94
+ <text/>
95
+ </element>
96
+ </optional>
97
+ </element>
98
+ </define>
99
+ <define name="structuredidentifier">
100
+ <element name="structuredidentifier">
101
+ <optional>
102
+ <attribute name="type"/>
103
+ </optional>
104
+ <oneOrMore>
105
+ <element name="agency">
106
+ <text/>
107
+ </element>
108
+ </oneOrMore>
109
+ <optional>
110
+ <element name="class">
111
+ <text/>
112
+ </element>
113
+ </optional>
114
+ <element name="docnumber">
115
+ <text/>
116
+ </element>
117
+ <optional>
118
+ <element name="partnumber">
119
+ <text/>
120
+ </element>
121
+ </optional>
122
+ <optional>
123
+ <element name="edition">
124
+ <text/>
125
+ </element>
126
+ </optional>
127
+ <optional>
128
+ <element name="version">
129
+ <text/>
130
+ </element>
131
+ </optional>
132
+ <optional>
133
+ <element name="supplementtype">
134
+ <text/>
135
+ </element>
136
+ </optional>
137
+ <optional>
138
+ <element name="supplementnumber">
139
+ <text/>
140
+ </element>
141
+ </optional>
142
+ <optional>
143
+ <element name="amendment">
144
+ <text/>
145
+ </element>
146
+ </optional>
147
+ <optional>
148
+ <element name="corrigendum">
149
+ <text/>
150
+ </element>
151
+ </optional>
152
+ <optional>
153
+ <element name="language">
154
+ <text/>
155
+ </element>
156
+ </optional>
157
+ <optional>
158
+ <element name="year">
159
+ <text/>
160
+ </element>
161
+ </optional>
162
+ </element>
163
+ </define>
164
+ </grammar>
@@ -33,9 +33,10 @@
33
33
  <param name="pattern">([\+\-]?\d{4})((-?)((0[1-9]|1[0-2])((-?)([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6]))))?</param>
34
34
  </data>
35
35
  </define>
36
- <start>
37
- <ref name="bibitem"/>
38
- </start>
36
+ <!-- start = bibitem -->
37
+ <define name="BibData">
38
+ <ref name="BibliographicItem"/>
39
+ </define>
39
40
  <define name="status">
40
41
  <element name="status">
41
42
  <ref name="stage"/>
@@ -170,27 +171,30 @@
170
171
  </define>
171
172
  <define name="contributor">
172
173
  <element name="contributor">
173
- <zeroOrMore>
174
+ <oneOrMore>
174
175
  <ref name="role"/>
175
- </zeroOrMore>
176
+ </oneOrMore>
176
177
  <ref name="ContributorInfo"/>
177
178
  </element>
178
179
  </define>
179
180
  <define name="role">
180
181
  <element name="role">
181
- <optional>
182
- <attribute name="type">
183
- <choice>
184
- <value>author</value>
185
- <value>performer</value>
186
- <value>publisher</value>
187
- <value>editor</value>
188
- <value>adapter</value>
189
- <value>translator</value>
190
- <value>distributor</value>
191
- </choice>
192
- </attribute>
193
- </optional>
182
+ <attribute name="type">
183
+ <choice>
184
+ <value>author</value>
185
+ <value>performer</value>
186
+ <value>publisher</value>
187
+ <value>editor</value>
188
+ <value>adapter</value>
189
+ <value>translator</value>
190
+ <value>distributor</value>
191
+ <value>realizer</value>
192
+ <value>owner</value>
193
+ <value>authorizer</value>
194
+ <value>enabler</value>
195
+ <value>subject</value>
196
+ </choice>
197
+ </attribute>
194
198
  <zeroOrMore>
195
199
  <ref name="roledescription"/>
196
200
  </zeroOrMore>
@@ -512,6 +516,17 @@
512
516
  </define>
513
517
  <define name="localityStack">
514
518
  <element name="localityStack">
519
+ <optional>
520
+ <attribute name="connective">
521
+ <choice>
522
+ <value>and</value>
523
+ <value>or</value>
524
+ <value>from</value>
525
+ <value>to</value>
526
+ <value/>
527
+ </choice>
528
+ </attribute>
529
+ </optional>
515
530
  <zeroOrMore>
516
531
  <ref name="locality"/>
517
532
  </zeroOrMore>
@@ -524,6 +539,17 @@
524
539
  </define>
525
540
  <define name="sourceLocalityStack">
526
541
  <element name="sourceLocalityStack">
542
+ <optional>
543
+ <attribute name="connective">
544
+ <choice>
545
+ <value>and</value>
546
+ <value>or</value>
547
+ <value>from</value>
548
+ <value>to</value>
549
+ <value/>
550
+ </choice>
551
+ </attribute>
552
+ </optional>
527
553
  <zeroOrMore>
528
554
  <ref name="sourceLocality"/>
529
555
  </zeroOrMore>
@@ -626,6 +652,9 @@
626
652
  <ref name="BibItemType"/>
627
653
  </attribute>
628
654
  </optional>
655
+ <optional>
656
+ <attribute name="schema-version"/>
657
+ </optional>
629
658
  <optional>
630
659
  <ref name="fetched"/>
631
660
  </optional>
@@ -720,6 +749,9 @@
720
749
  <ref name="BibItemType"/>
721
750
  </attribute>
722
751
  </optional>
752
+ <optional>
753
+ <attribute name="schema-version"/>
754
+ </optional>
723
755
  <optional>
724
756
  <ref name="fetched"/>
725
757
  </optional>