metanorma-iso 1.8.1 → 1.8.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/rake.yml +3 -13
- data/.hound.yml +3 -1
- data/.rubocop.yml +4 -8
- data/lib/asciidoctor/iso/base.rb +1 -0
- data/lib/asciidoctor/iso/biblio.rng +1 -0
- data/lib/asciidoctor/iso/cleanup.rb +17 -5
- data/lib/asciidoctor/iso/front.rb +3 -1
- data/lib/asciidoctor/iso/front_id.rb +66 -50
- data/lib/asciidoctor/iso/isodoc.rng +209 -4
- data/lib/asciidoctor/iso/isostandard-amd.rng +3 -0
- data/lib/asciidoctor/iso/isostandard.rng +12 -0
- data/lib/asciidoctor/iso/section.rb +2 -1
- data/lib/asciidoctor/iso/validate_section.rb +16 -9
- data/lib/isodoc/iso/base_convert.rb +13 -13
- data/lib/isodoc/iso/html/isodoc.css +475 -20
- data/lib/isodoc/iso/html/isodoc.scss +456 -23
- data/lib/isodoc/iso/html/wordstyle.css +202 -31
- data/lib/isodoc/iso/html/wordstyle.scss +194 -32
- data/lib/isodoc/iso/iso.amendment.xsl +679 -473
- data/lib/isodoc/iso/iso.international-standard.xsl +679 -473
- data/lib/isodoc/iso/metadata.rb +3 -2
- data/lib/isodoc/iso/presentation_xml_convert.rb +18 -9
- data/lib/isodoc/iso/sts_convert.rb +10 -13
- data/lib/isodoc/iso/word_convert.rb +153 -39
- data/lib/isodoc/iso/xref.rb +42 -27
- data/lib/metanorma/iso/version.rb +1 -1
- data/metanorma-iso.gemspec +4 -4
- data/spec/asciidoctor/base_spec.rb +426 -334
- data/spec/asciidoctor/blocks_spec.rb +96 -34
- data/spec/asciidoctor/cleanup_spec.rb +383 -25
- data/spec/asciidoctor/section_spec.rb +0 -14
- data/spec/asciidoctor/validate_spec.rb +119 -39
- data/spec/isodoc/amd_spec.rb +193 -201
- data/spec/isodoc/blocks_spec.rb +100 -88
- data/spec/isodoc/i18n_spec.rb +36 -36
- data/spec/isodoc/inline_spec.rb +282 -2
- data/spec/isodoc/iso_spec.rb +86 -138
- data/spec/isodoc/postproc_spec.rb +492 -442
- data/spec/isodoc/ref_spec.rb +6 -6
- data/spec/isodoc/section_spec.rb +301 -306
- data/spec/isodoc/table_spec.rb +166 -231
- data/spec/isodoc/terms_spec.rb +11 -8
- data/spec/isodoc/xref_spec.rb +147 -118
- data/spec/spec_helper.rb +16 -15
- metadata +9 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5a0192dfdd4d26ab4c59d50a8b7e91e36ce83a27c9835f01221444e1ecf2c278
|
4
|
+
data.tar.gz: 4f4b37c785f3fe5c58777962943ebe8c27a38415cd178d8abab18dc95cf24192
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 91c94f57a7a8437f4c64366aeb1f14a5ede637357fd19485de1311e18d112ec22ff4325e35158c4322fc5a763292add832d4bc02b64c425e59b778e92ca757e8
|
7
|
+
data.tar.gz: 47e01118ffc205d246a082130c25893e6e3c41bc4c2ce171949d5f3e308e30a64c7ce49b903aa9f3434537eac2f275e50443f1887014b8a256a48061e38d3250
|
data/.github/workflows/rake.yml
CHANGED
@@ -4,7 +4,7 @@ name: rake
|
|
4
4
|
|
5
5
|
on:
|
6
6
|
push:
|
7
|
-
branches: [ master, main
|
7
|
+
branches: [ master, main ]
|
8
8
|
tags: [ v* ]
|
9
9
|
pull_request:
|
10
10
|
|
@@ -16,19 +16,9 @@ jobs:
|
|
16
16
|
strategy:
|
17
17
|
fail-fast: false
|
18
18
|
matrix:
|
19
|
-
ruby: [ '
|
19
|
+
ruby: [ '3.0', '2.7', '2.6', '2.5' ]
|
20
20
|
os: [ ubuntu-latest, windows-latest, macos-latest ]
|
21
21
|
experimental: [ false ]
|
22
|
-
include:
|
23
|
-
- ruby: '3.0'
|
24
|
-
os: 'ubuntu-latest'
|
25
|
-
experimental: true
|
26
|
-
- ruby: '3.0'
|
27
|
-
os: 'windows-latest'
|
28
|
-
experimental: true
|
29
|
-
- ruby: '3.0'
|
30
|
-
os: 'macos-latest'
|
31
|
-
experimental: true
|
32
22
|
steps:
|
33
23
|
- uses: actions/checkout@master
|
34
24
|
|
@@ -49,5 +39,5 @@ jobs:
|
|
49
39
|
with:
|
50
40
|
token: ${{ secrets.METANORMA_CI_PAT_TOKEN || secrets.GITHUB_TOKEN }}
|
51
41
|
repository: ${{ github.repository }}
|
52
|
-
event-type:
|
42
|
+
event-type: tests-passed
|
53
43
|
client-payload: '{"ref": "${{ github.ref }}", "sha": "${{ github.sha }}"}'
|
data/.hound.yml
CHANGED
data/.rubocop.yml
CHANGED
@@ -1,14 +1,10 @@
|
|
1
|
-
#
|
2
|
-
# https://github.com/
|
3
|
-
# All project-specific additions and overrides should be specified in this file.
|
1
|
+
# Auto-generated by Cimas: Do not edit it manually!
|
2
|
+
# See https://github.com/metanorma/cimas
|
4
3
|
inherit_from:
|
5
4
|
- https://raw.githubusercontent.com/riboseinc/oss-guides/master/ci/rubocop.yml
|
6
5
|
|
7
6
|
# local repo-specific modifications
|
7
|
+
# ...
|
8
8
|
|
9
9
|
AllCops:
|
10
|
-
|
11
|
-
StyleGuideCopsOnly: false
|
12
|
-
TargetRubyVersion: 2.4
|
13
|
-
Rails:
|
14
|
-
Enabled: true
|
10
|
+
TargetRubyVersion: 2.5
|
data/lib/asciidoctor/iso/base.rb
CHANGED
@@ -65,8 +65,12 @@ module Asciidoctor
|
|
65
65
|
super
|
66
66
|
end
|
67
67
|
|
68
|
-
TERM_CLAUSE = "//sections//terms"
|
68
|
+
TERM_CLAUSE = "//sections//terms | "\
|
69
|
+
"//sections//clause[descendant::terms][not(descendant::definitions)]"
|
70
|
+
.freeze
|
71
|
+
|
69
72
|
PUBLISHER = "./contributor[role/@type = 'publisher']/organization".freeze
|
73
|
+
|
70
74
|
OTHERIDS = "@type = 'DOI' or @type = 'metanorma' or @type = 'ISSN' or "\
|
71
75
|
"@type = 'ISBN'".freeze
|
72
76
|
|
@@ -154,12 +158,20 @@ module Asciidoctor
|
|
154
158
|
|
155
159
|
id = b.at("docidentifier").text
|
156
160
|
b.at("./language | ./script | ./abstract | ./status")
|
157
|
-
.previous =
|
158
|
-
|
159
|
-
<p>#{@i18n.under_preparation.sub(/%/, id)}</p></note>
|
160
|
-
NOTE
|
161
|
+
.previous = %(<note type="Unpublished-Status">
|
162
|
+
<p>#{@i18n.under_preparation.sub(/%/, id)}</p></note>)
|
161
163
|
end
|
162
164
|
end
|
165
|
+
|
166
|
+
def termdef_boilerplate_insert(xmldoc, isodoc, once = false)
|
167
|
+
once = true
|
168
|
+
super
|
169
|
+
end
|
170
|
+
|
171
|
+
def term_defs_boilerplate_cont(src, term, isodoc)
|
172
|
+
@vocab and src.empty? and return
|
173
|
+
super
|
174
|
+
end
|
163
175
|
end
|
164
176
|
end
|
165
177
|
end
|
@@ -115,7 +115,9 @@ module Asciidoctor
|
|
115
115
|
return unless node.attr("title-amendment-#{lang}")
|
116
116
|
|
117
117
|
xml.title(**attr_code(at.merge(type: "title-amd"))) do |t1|
|
118
|
-
t1 << Metanorma::Utils::asciidoc_sub(
|
118
|
+
t1 << Metanorma::Utils::asciidoc_sub(
|
119
|
+
node.attr("title-amendment-#{lang}")
|
120
|
+
)
|
119
121
|
end
|
120
122
|
end
|
121
123
|
|
@@ -35,22 +35,26 @@ module Asciidoctor
|
|
35
35
|
|
36
36
|
def stage_abbr(stage, substage, doctype)
|
37
37
|
return nil if stage.to_i > 60
|
38
|
+
|
38
39
|
ret = STAGE_ABBRS[stage.to_sym]
|
39
40
|
ret = "PRF" if stage == "60" && substage == "00"
|
40
41
|
ret = "AWI" if stage == "10" && substage == "99"
|
41
|
-
if %w(amendment technical-corrigendum technical-report
|
42
|
-
|
42
|
+
if %w(amendment technical-corrigendum technical-report
|
43
|
+
technical-specification).include?(doctype)
|
43
44
|
ret = "D" if stage == "40" && doctype == "amendment"
|
44
|
-
ret = "FD" if stage == "50" && %w(amendment technical-corrigendum)
|
45
|
+
ret = "FD" if stage == "50" && %w(amendment technical-corrigendum)
|
46
|
+
.include?(doctype)
|
45
47
|
end
|
46
48
|
ret
|
47
49
|
end
|
48
50
|
|
49
51
|
def stage_name(stage, substage, doctype, iteration = nil)
|
50
52
|
return "Proof" if stage == "60" && substage == "00"
|
53
|
+
|
51
54
|
ret = STAGE_NAMES[stage.to_sym]
|
52
55
|
if iteration && %w(20 30).include?(stage)
|
53
|
-
prefix = iteration.to_i.localize(@lang.to_sym)
|
56
|
+
prefix = iteration.to_i.localize(@lang.to_sym)
|
57
|
+
.to_rbnf_s("SpelloutRules", "spellout-ordinal")
|
54
58
|
ret = "#{prefix.capitalize} #{ret.downcase}"
|
55
59
|
end
|
56
60
|
ret
|
@@ -65,37 +69,39 @@ module Asciidoctor
|
|
65
69
|
end
|
66
70
|
|
67
71
|
def iso_id(node, xml)
|
68
|
-
|
72
|
+
!@amd && node.attr("docnumber") || @amd && node.attr("updates") or
|
73
|
+
return
|
74
|
+
|
69
75
|
dn = iso_id1(node)
|
70
76
|
dn1 = id_stage_prefix(dn, node, false)
|
71
77
|
dn2 = id_stage_prefix(dn, node, true)
|
72
78
|
xml.docidentifier dn1, **attr_code(type: "ISO")
|
73
|
-
xml.docidentifier
|
74
|
-
|
79
|
+
xml.docidentifier(id_langsuffix(dn1, node),
|
80
|
+
**attr_code(type: "iso-with-lang"))
|
81
|
+
xml.docidentifier(id_langsuffix(dn2, node),
|
82
|
+
**attr_code(type: "iso-reference"))
|
75
83
|
end
|
76
84
|
|
77
85
|
def iso_id1(node)
|
78
86
|
if @amd
|
79
87
|
dn = node.attr("updates")
|
80
|
-
|
88
|
+
add_amd_parts(dn, node)
|
81
89
|
else
|
82
90
|
part, subpart = node&.attr("partnumber")&.split(/-/)
|
83
|
-
|
91
|
+
add_id_parts(node.attr("docnumber"), part, subpart)
|
84
92
|
end
|
85
93
|
end
|
86
94
|
|
87
|
-
def add_amd_parts(
|
88
|
-
a = node.attr("amendment-number")
|
89
|
-
c = node.attr("corrigendum-number")
|
95
|
+
def add_amd_parts(docnum, node)
|
90
96
|
case doctype(node)
|
91
97
|
when "amendment"
|
92
|
-
"#{
|
98
|
+
"#{docnum}/Amd #{node.attr('amendment-number')}"
|
93
99
|
when "technical-corrigendum"
|
94
|
-
"#{
|
100
|
+
"#{docnum}/Cor.#{node.attr('corrigendum-number')}"
|
95
101
|
end
|
96
102
|
end
|
97
103
|
|
98
|
-
def id_langsuffix(
|
104
|
+
def id_langsuffix(docnum, node)
|
99
105
|
lang = node.attr("language") || "en"
|
100
106
|
suffix = case lang
|
101
107
|
when "en" then "(E)"
|
@@ -103,38 +109,43 @@ module Asciidoctor
|
|
103
109
|
else
|
104
110
|
"(X)"
|
105
111
|
end
|
106
|
-
"#{
|
112
|
+
"#{docnum}#{suffix}"
|
107
113
|
end
|
108
114
|
|
109
115
|
def structured_id(node, xml)
|
110
116
|
return unless node.attr("docnumber")
|
117
|
+
|
111
118
|
part, subpart = node&.attr("partnumber")&.split(/-/)
|
112
119
|
xml.structuredidentifier do |i|
|
113
|
-
i.project_number
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
120
|
+
i.project_number(node.attr("docnumber"), **attr_code(
|
121
|
+
part: part, subpart: subpart,
|
122
|
+
amendment: node.attr("amendment-number"),
|
123
|
+
corrigendum: node.attr("corrigendum-number"),
|
124
|
+
origyr: node.attr("created-date")
|
125
|
+
))
|
118
126
|
end
|
119
127
|
end
|
120
128
|
|
121
|
-
def add_id_parts(
|
122
|
-
|
123
|
-
|
124
|
-
|
129
|
+
def add_id_parts(docnum, part, subpart)
|
130
|
+
docnum += "-#{part}" if part
|
131
|
+
docnum += "-#{subpart}" if subpart
|
132
|
+
docnum
|
125
133
|
end
|
126
134
|
|
127
135
|
def id_stage_abbr(stage, substage, node, bare = false)
|
128
|
-
ret = bare
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
136
|
+
ret = if bare
|
137
|
+
IsoDoc::Iso::Metadata.new("en", "Latn", @i18n)
|
138
|
+
.status_abbrev(stage_abbr(stage, substage, doctype(node)),
|
139
|
+
substage, nil, nil, doctype(node))
|
140
|
+
else
|
141
|
+
IsoDoc::Iso::Metadata.new("en", "Latn", @i18n)
|
142
|
+
.status_abbrev(stage_abbr(stage, substage, doctype(node)),
|
143
|
+
substage, node.attr("iteration"),
|
144
|
+
node.attr("draft"), doctype(node))
|
145
|
+
end
|
146
|
+
if %w(amendment technical-corrigendum technical-report
|
147
|
+
technical-specification).include?(doctype(node))
|
148
|
+
ret = "#{ret} " unless %w(D FD).include?(ret)
|
138
149
|
end
|
139
150
|
ret
|
140
151
|
end
|
@@ -143,51 +154,56 @@ module Asciidoctor
|
|
143
154
|
stage = get_stage(node)
|
144
155
|
abbr = id_stage_abbr(get_stage(node), get_substage(node), node, true)
|
145
156
|
typeabbr = get_typeabbr(node, true)
|
146
|
-
|
157
|
+
if stage.to_i > 50 || stage.to_i == 60 && get_substage(node).to_i < 60
|
158
|
+
typeabbr = ""
|
159
|
+
end
|
147
160
|
"#{abbr}#{typeabbr}".strip
|
148
161
|
end
|
149
162
|
|
150
|
-
def id_stage_prefix(
|
163
|
+
def id_stage_prefix(docnum, node, force_year)
|
151
164
|
stage = get_stage(node)
|
152
165
|
typeabbr = get_typeabbr(node)
|
153
166
|
if stage && (stage.to_i < 60)
|
154
|
-
|
155
|
-
elsif typeabbr
|
167
|
+
docnum = unpub_stage_prefix(docnum, stage, typeabbr, node)
|
168
|
+
elsif typeabbr == "DIR " then docnum = "#{typeabbr}#{docnum}"
|
169
|
+
elsif typeabbr && !@amd then docnum = "/#{typeabbr}#{docnum}"
|
156
170
|
end
|
157
171
|
(force_year || !(stage && (stage.to_i < 60))) and
|
158
|
-
|
159
|
-
|
172
|
+
docnum = id_add_year(docnum, node)
|
173
|
+
docnum
|
160
174
|
end
|
161
175
|
|
162
|
-
def unpub_stage_prefix(
|
176
|
+
def unpub_stage_prefix(docnum, stage, typeabbr, node)
|
163
177
|
abbr = id_stage_abbr(stage, get_substage(node), node)
|
164
178
|
%w(40 50).include?(stage) && i = node.attr("iteration") and
|
165
179
|
itersuffix = ".#{i}"
|
166
|
-
return
|
167
|
-
return "/#{abbr}#{typeabbr} #{
|
168
|
-
|
180
|
+
return docnum if abbr.nil? || abbr.empty? # prefixes added in cleanup
|
181
|
+
return "/#{abbr}#{typeabbr} #{docnum}#{itersuffix}" unless @amd
|
182
|
+
|
183
|
+
a = docnum.split(%r{/})
|
169
184
|
a[-1] = "#{abbr}#{a[-1]}#{itersuffix}"
|
170
185
|
a.join("/")
|
171
186
|
end
|
172
187
|
|
173
|
-
def id_add_year(
|
188
|
+
def id_add_year(docnum, node)
|
174
189
|
year = node.attr("copyright-year")
|
175
190
|
@amd and year ||= node.attr("updated-date")&.sub(/-.*$/, "")
|
176
|
-
|
177
|
-
|
191
|
+
docnum += ":#{year}" if year
|
192
|
+
docnum
|
178
193
|
end
|
179
194
|
|
180
195
|
def get_stage(node)
|
181
|
-
|
196
|
+
node.attr("status") || node.attr("docstage") || "60"
|
182
197
|
end
|
183
198
|
|
184
199
|
def get_substage(node)
|
185
200
|
stage = get_stage(node)
|
186
|
-
node.attr("docsubstage") || (
|
201
|
+
node.attr("docsubstage") || (stage == "60" ? "60" : "00")
|
187
202
|
end
|
188
203
|
|
189
204
|
def get_typeabbr(node, amd = false)
|
190
205
|
case doctype(node)
|
206
|
+
when "directive" then "DIR "
|
191
207
|
when "technical-report" then "TR "
|
192
208
|
when "technical-specification" then "TS "
|
193
209
|
when "amendment" then (amd ? "Amd " : "")
|
@@ -45,6 +45,11 @@
|
|
45
45
|
<optional>
|
46
46
|
<attribute name="alt"/>
|
47
47
|
</optional>
|
48
|
+
<optional>
|
49
|
+
<attribute name="updatetype">
|
50
|
+
<data type="boolean"/>
|
51
|
+
</attribute>
|
52
|
+
</optional>
|
48
53
|
<text/>
|
49
54
|
</element>
|
50
55
|
</define>
|
@@ -543,6 +548,9 @@
|
|
543
548
|
</define>
|
544
549
|
<define name="BibDataExtensionType">
|
545
550
|
<ref name="doctype"/>
|
551
|
+
<optional>
|
552
|
+
<ref name="docsubtype"/>
|
553
|
+
</optional>
|
546
554
|
<optional>
|
547
555
|
<ref name="editorialgroup"/>
|
548
556
|
</optional>
|
@@ -876,8 +884,28 @@
|
|
876
884
|
</zeroOrMore>
|
877
885
|
</element>
|
878
886
|
</define>
|
887
|
+
<define name="pagebreak">
|
888
|
+
<element name="pagebreak">
|
889
|
+
<optional>
|
890
|
+
<attribute name="orientation">
|
891
|
+
<choice>
|
892
|
+
<value>landscape</value>
|
893
|
+
<value>portrait</value>
|
894
|
+
</choice>
|
895
|
+
</attribute>
|
896
|
+
</optional>
|
897
|
+
</element>
|
898
|
+
</define>
|
879
899
|
</include>
|
880
900
|
<!-- end overrides -->
|
901
|
+
<define name="docsubtype">
|
902
|
+
<element name="docsubtype">
|
903
|
+
<ref name="DocumentSubtype"/>
|
904
|
+
</element>
|
905
|
+
</define>
|
906
|
+
<define name="DocumentSubtype">
|
907
|
+
<text/>
|
908
|
+
</define>
|
881
909
|
<define name="colgroup">
|
882
910
|
<element name="colgroup">
|
883
911
|
<oneOrMore>
|
@@ -927,7 +955,24 @@
|
|
927
955
|
<define name="concept">
|
928
956
|
<element name="concept">
|
929
957
|
<optional>
|
930
|
-
<
|
958
|
+
<element name="refterm">
|
959
|
+
<zeroOrMore>
|
960
|
+
<choice>
|
961
|
+
<ref name="PureTextElement"/>
|
962
|
+
<ref name="stem"/>
|
963
|
+
</choice>
|
964
|
+
</zeroOrMore>
|
965
|
+
</element>
|
966
|
+
</optional>
|
967
|
+
<optional>
|
968
|
+
<element name="renderterm">
|
969
|
+
<zeroOrMore>
|
970
|
+
<choice>
|
971
|
+
<ref name="PureTextElement"/>
|
972
|
+
<ref name="stem"/>
|
973
|
+
</choice>
|
974
|
+
</zeroOrMore>
|
975
|
+
</element>
|
931
976
|
</optional>
|
932
977
|
<choice>
|
933
978
|
<ref name="eref"/>
|
@@ -943,8 +988,170 @@
|
|
943
988
|
<ref name="permission"/>
|
944
989
|
<ref name="imagemap"/>
|
945
990
|
<ref name="svgmap"/>
|
991
|
+
<ref name="inputform"/>
|
992
|
+
</choice>
|
993
|
+
</define>
|
994
|
+
<define name="inputform">
|
995
|
+
<element name="form">
|
996
|
+
<attribute name="id">
|
997
|
+
<data type="ID"/>
|
998
|
+
</attribute>
|
999
|
+
<attribute name="name"/>
|
1000
|
+
<attribute name="action"/>
|
1001
|
+
<zeroOrMore>
|
1002
|
+
<choice>
|
1003
|
+
<ref name="TextElement"/>
|
1004
|
+
<ref name="FormInput"/>
|
1005
|
+
</choice>
|
1006
|
+
</zeroOrMore>
|
1007
|
+
</element>
|
1008
|
+
</define>
|
1009
|
+
<define name="FormInput">
|
1010
|
+
<choice>
|
1011
|
+
<ref name="input"/>
|
1012
|
+
<ref name="formlabel"/>
|
1013
|
+
<ref name="select"/>
|
1014
|
+
<ref name="textarea"/>
|
946
1015
|
</choice>
|
947
1016
|
</define>
|
1017
|
+
<define name="InputType">
|
1018
|
+
<choice>
|
1019
|
+
<value>button</value>
|
1020
|
+
<value>checkbox</value>
|
1021
|
+
<value>date</value>
|
1022
|
+
<value>file</value>
|
1023
|
+
<value>password</value>
|
1024
|
+
<value>radio</value>
|
1025
|
+
<value>submit</value>
|
1026
|
+
<value>text</value>
|
1027
|
+
</choice>
|
1028
|
+
</define>
|
1029
|
+
<define name="input">
|
1030
|
+
<element name="input">
|
1031
|
+
<attribute name="type">
|
1032
|
+
<ref name="InputType"/>
|
1033
|
+
</attribute>
|
1034
|
+
<optional>
|
1035
|
+
<attribute name="checked">
|
1036
|
+
<data type="boolean"/>
|
1037
|
+
</attribute>
|
1038
|
+
</optional>
|
1039
|
+
<optional>
|
1040
|
+
<attribute name="disabled">
|
1041
|
+
<data type="boolean"/>
|
1042
|
+
</attribute>
|
1043
|
+
</optional>
|
1044
|
+
<optional>
|
1045
|
+
<attribute name="readonly">
|
1046
|
+
<data type="boolean"/>
|
1047
|
+
</attribute>
|
1048
|
+
</optional>
|
1049
|
+
<optional>
|
1050
|
+
<attribute name="maxlength">
|
1051
|
+
<data type="int"/>
|
1052
|
+
</attribute>
|
1053
|
+
</optional>
|
1054
|
+
<optional>
|
1055
|
+
<attribute name="minlength">
|
1056
|
+
<data type="int"/>
|
1057
|
+
</attribute>
|
1058
|
+
</optional>
|
1059
|
+
<optional>
|
1060
|
+
<attribute name="name"/>
|
1061
|
+
</optional>
|
1062
|
+
<optional>
|
1063
|
+
<attribute name="value"/>
|
1064
|
+
</optional>
|
1065
|
+
<optional>
|
1066
|
+
<attribute name="id">
|
1067
|
+
<data type="ID"/>
|
1068
|
+
</attribute>
|
1069
|
+
</optional>
|
1070
|
+
</element>
|
1071
|
+
</define>
|
1072
|
+
<define name="formlabel">
|
1073
|
+
<element name="label">
|
1074
|
+
<attribute name="for">
|
1075
|
+
<data type="IDREF"/>
|
1076
|
+
</attribute>
|
1077
|
+
<zeroOrMore>
|
1078
|
+
<ref name="PureTextElement"/>
|
1079
|
+
</zeroOrMore>
|
1080
|
+
</element>
|
1081
|
+
</define>
|
1082
|
+
<define name="select">
|
1083
|
+
<element name="select">
|
1084
|
+
<optional>
|
1085
|
+
<attribute name="name"/>
|
1086
|
+
</optional>
|
1087
|
+
<optional>
|
1088
|
+
<attribute name="value"/>
|
1089
|
+
</optional>
|
1090
|
+
<optional>
|
1091
|
+
<attribute name="id">
|
1092
|
+
<data type="ID"/>
|
1093
|
+
</attribute>
|
1094
|
+
</optional>
|
1095
|
+
<optional>
|
1096
|
+
<attribute name="disabled">
|
1097
|
+
<data type="boolean"/>
|
1098
|
+
</attribute>
|
1099
|
+
</optional>
|
1100
|
+
<optional>
|
1101
|
+
<attribute name="multiple">
|
1102
|
+
<data type="boolean"/>
|
1103
|
+
</attribute>
|
1104
|
+
</optional>
|
1105
|
+
<optional>
|
1106
|
+
<attribute name="size">
|
1107
|
+
<data type="int"/>
|
1108
|
+
</attribute>
|
1109
|
+
</optional>
|
1110
|
+
<oneOrMore>
|
1111
|
+
<ref name="option"/>
|
1112
|
+
</oneOrMore>
|
1113
|
+
</element>
|
1114
|
+
</define>
|
1115
|
+
<define name="option">
|
1116
|
+
<element name="option">
|
1117
|
+
<optional>
|
1118
|
+
<attribute name="disabled">
|
1119
|
+
<data type="boolean"/>
|
1120
|
+
</attribute>
|
1121
|
+
</optional>
|
1122
|
+
<optional>
|
1123
|
+
<attribute name="value"/>
|
1124
|
+
</optional>
|
1125
|
+
<zeroOrMore>
|
1126
|
+
<ref name="PureTextElement"/>
|
1127
|
+
</zeroOrMore>
|
1128
|
+
</element>
|
1129
|
+
</define>
|
1130
|
+
<define name="textarea">
|
1131
|
+
<element name="textarea">
|
1132
|
+
<optional>
|
1133
|
+
<attribute name="name"/>
|
1134
|
+
</optional>
|
1135
|
+
<optional>
|
1136
|
+
<attribute name="value"/>
|
1137
|
+
</optional>
|
1138
|
+
<optional>
|
1139
|
+
<attribute name="id">
|
1140
|
+
<data type="ID"/>
|
1141
|
+
</attribute>
|
1142
|
+
</optional>
|
1143
|
+
<optional>
|
1144
|
+
<attribute name="rows">
|
1145
|
+
<data type="int"/>
|
1146
|
+
</attribute>
|
1147
|
+
</optional>
|
1148
|
+
<optional>
|
1149
|
+
<attribute name="cols">
|
1150
|
+
<data type="int"/>
|
1151
|
+
</attribute>
|
1152
|
+
</optional>
|
1153
|
+
</element>
|
1154
|
+
</define>
|
948
1155
|
<define name="bibliography">
|
949
1156
|
<element name="bibliography">
|
950
1157
|
<oneOrMore>
|
@@ -1017,9 +1224,7 @@
|
|
1017
1224
|
</define>
|
1018
1225
|
<define name="IsoWorkgroup">
|
1019
1226
|
<optional>
|
1020
|
-
<attribute name="number"
|
1021
|
-
<data type="int"/>
|
1022
|
-
</attribute>
|
1227
|
+
<attribute name="number"/>
|
1023
1228
|
</optional>
|
1024
1229
|
<optional>
|
1025
1230
|
<attribute name="type"/>
|