asciidoctor-iso 0.7.0 → 0.7.1

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.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +12 -10
  3. data/asciidoctor-iso.gemspec +1 -1
  4. data/lib/asciidoctor/iso/base.rb +6 -3
  5. data/lib/asciidoctor/iso/blocks.rb +4 -18
  6. data/lib/asciidoctor/iso/cleanup.rb +20 -11
  7. data/lib/asciidoctor/iso/cleanup_block.rb +38 -21
  8. data/lib/asciidoctor/iso/cleanup_ref.rb +17 -4
  9. data/lib/asciidoctor/iso/converter.rb +0 -1
  10. data/lib/asciidoctor/iso/front.rb +23 -14
  11. data/lib/asciidoctor/iso/html/html_iso_intro.html +0 -36
  12. data/lib/asciidoctor/iso/html/isodoc.css +5 -0
  13. data/lib/asciidoctor/iso/inline.rb +14 -2
  14. data/lib/asciidoctor/iso/isodoc.rng +38 -6
  15. data/lib/asciidoctor/iso/isostandard.rng +16 -11
  16. data/lib/asciidoctor/iso/lists.rb +28 -23
  17. data/lib/asciidoctor/iso/section.rb +4 -14
  18. data/lib/asciidoctor/iso/table.rb +0 -3
  19. data/lib/asciidoctor/iso/utils.rb +2 -0
  20. data/lib/asciidoctor/iso/validate.rb +2 -2
  21. data/lib/asciidoctor/iso/validate_section.rb +62 -4
  22. data/lib/asciidoctor/iso/validate_style.rb +24 -15
  23. data/lib/asciidoctor/iso/version.rb +1 -1
  24. data/spec/asciidoctor-iso/base_spec.rb +32 -6
  25. data/spec/asciidoctor-iso/blocks_spec.rb +10 -0
  26. data/spec/asciidoctor-iso/cleanup_spec.rb +26 -18
  27. data/spec/asciidoctor-iso/inline_spec.rb +2 -0
  28. data/spec/asciidoctor-iso/lists_spec.rb +1 -0
  29. data/spec/asciidoctor-iso/refs_spec.rb +44 -11
  30. data/spec/asciidoctor-iso/validate_spec.rb +1 -0
  31. data/spec/examples/rice.doc +2751 -2732
  32. data/spec/examples/rice.html +184 -205
  33. data/spec/examples/rice.xml +244 -212
  34. data/spec/spec_helper.rb +6 -3
  35. metadata +6 -6
@@ -24,8 +24,6 @@ module Asciidoctor
24
24
  def table_name(node, xml_table)
25
25
  if node.title?
26
26
  xml_table.name node.title
27
- else
28
- style_warning(node, "Table should have title", nil)
29
27
  end
30
28
  end
31
29
 
@@ -34,7 +32,6 @@ module Asciidoctor
34
32
  thd << cell.content
35
33
  else
36
34
  thd << cell.text
37
- style(cell, cell.text)
38
35
  end
39
36
  end
40
37
 
@@ -19,6 +19,8 @@ module Asciidoctor
19
19
  def current_location(n)
20
20
  return "Line #{n.lineno}" if n.respond_to?(:lineno) &&
21
21
  !n.lineno.nil? && !n.lineno.empty?
22
+ return "Line #{n.line}" if n.respond_to?(:line) &&
23
+ !n.line.nil?
22
24
  return "ID #{n.id}" if n.respond_to?(:id) && !n.id.nil?
23
25
  while !n.nil? &&
24
26
  (!n.respond_to?(:level) || n.level.positive?) &&
@@ -75,8 +75,8 @@ module Asciidoctor
75
75
  notitle = false
76
76
  withtitle = false
77
77
  xpath.each do |s|
78
- sublabel = s&.at("./title")&.text || s["id"]
79
- title_all_siblings(s.xpath("./subsection | ./terms"), sublabel)
78
+ title_all_siblings(s.xpath("./subsection | ./terms"),
79
+ s&.at("./title")&.text || s["id"])
80
80
  subtitle = s.at("./title")
81
81
  notitle = notitle || (!subtitle || subtitle.text.empty?)
82
82
  withtitle = withtitle || !subtitle&.text&.empty?
@@ -8,6 +8,9 @@ module Asciidoctor
8
8
  normref_validate(doc.root)
9
9
  symbols_validate(doc.root)
10
10
  sections_sequence_validate(doc.root)
11
+ section_style(doc.root)
12
+ sourcecode_style(doc.root)
13
+ asset_style(doc.root)
11
14
  end
12
15
 
13
16
  def foreword_validate(root)
@@ -51,7 +54,7 @@ module Asciidoctor
51
54
 
52
55
  # spec of permissible section sequence
53
56
  # we skip normative references, it goes to end of list
54
- SEQ =
57
+ SEQ =
55
58
  [
56
59
  {
57
60
  msg: "Initial section must be (content) Foreword",
@@ -71,9 +74,9 @@ module Asciidoctor
71
74
  "Terms and Definitions",
72
75
  val: [
73
76
  { tag: "terms", title: "Terms and Definitions" },
74
- {
77
+ {
75
78
  tag: "terms",
76
- title: "Terms, Definitions, Symbols and Abbreviated Terms"
79
+ title: "Terms, Definitions, Symbols and Abbreviated Terms",
77
80
  },
78
81
  ],
79
82
  },
@@ -103,7 +106,8 @@ module Asciidoctor
103
106
  return
104
107
  end
105
108
  n[:tag] == "clause" ||
106
- warn("ISO style: Document must contain clause after Terms and Definitions")
109
+ warn("ISO style: Document must contain clause after "\
110
+ "Terms and Definitions")
107
111
  n == { tag: "clause", title: "Scope" } &&
108
112
  warn("ISO style: Scope must occur before Terms and Definitions")
109
113
  n = names.shift || return
@@ -132,6 +136,60 @@ module Asciidoctor
132
136
  names.empty? ||
133
137
  warn("ISO style: There are sections after the final Bibliography")
134
138
  end
139
+
140
+ NORM_ISO_WARN = "non-ISO/IEC reference not expected as normative".freeze
141
+ SCOPE_WARN = "Scope contains subsections: should be succint".freeze
142
+
143
+ def section_style(root)
144
+ foreword_style(root.at("//foreword"))
145
+ introduction_style(root.at("//introduction"))
146
+ scope_style(root.at("//clause[title = 'Scope']"))
147
+ scope = root.at("//clause[title = 'Scope']/subsection")
148
+ scope.nil? || style_warning(scope, SCOPE_WARN, nil)
149
+ end
150
+
151
+ def sourcecode_style(root)
152
+ root.xpath("//sourcecode").each do |x|
153
+ callouts = x.elements.select { |e| e.name == "callout" }
154
+ annotations = x.elements.select { |e| e.name == "annotation" }
155
+ if callouts.size != annotations.size
156
+ warn "#{x['id']}: mismatch of callouts and annotations"
157
+ end
158
+ end
159
+ end
160
+
161
+ ASSETS_TO_STYLE =
162
+ "//termsource | //formula | //termnote | //p | //li[not(p)] | "\
163
+ "//dt | //dd[not(p)] | //td[not(p)] | //th[not(p)]".freeze
164
+
165
+ NORM_BIBITEMS =
166
+ "//references[title = 'Normative References']/bibitem".freeze
167
+
168
+ def asset_title_style(root)
169
+ root.xpath("//figure[image][not(title)]").each do |node|
170
+ style_warning(node, "Figure should have title", nil)
171
+ end
172
+ root.xpath("//table[not(title)]").each do |node|
173
+ style_warning(node, "Table should have title", nil)
174
+ end
175
+ end
176
+
177
+ def norm_bibitem_style(root)
178
+ root.xpath(NORM_BIBITEMS).each do |b|
179
+ if b.at(Cleanup::ISO_PUBLISHER_XPATH).nil?
180
+ Utils::warning(b, NORM_ISO_WARN, b.text)
181
+ end
182
+ end
183
+ end
184
+
185
+ def asset_style(root)
186
+ root.xpath("//example | //termexample").each { |e| example_style(e) }
187
+ root.xpath("//note").each { |e| note_style(e) }
188
+ root.xpath("//fn").each { |e| footnote_style(e) }
189
+ root.xpath(ASSETS_TO_STYLE).each { |e| style(e, extract_text(e)) }
190
+ asset_title_style(root)
191
+ norm_bibitem_style(root)
192
+ end
135
193
  end
136
194
  end
137
195
  end
@@ -5,38 +5,47 @@ require "pp"
5
5
  module Asciidoctor
6
6
  module ISO
7
7
  module Validate
8
- def foreword_style(node, text)
8
+ def extract_text(node)
9
+ return "" if node.nil?
10
+ node1 = node.dup
11
+ node1.xpath("//link | //locality").each(&:remove)
12
+ ret = ""
13
+ node1.traverse { |x| ret += x.text if x.text? }
14
+ ret
15
+ end
16
+
17
+ def foreword_style(node)
9
18
  return if @novalid
10
- style_no_guidance(node, text, "Foreword")
19
+ style_no_guidance(node, extract_text(node), "Foreword")
11
20
  end
12
21
 
13
- def scope_style(node, text)
22
+ def scope_style(node)
14
23
  return if @novalid
15
- style_no_guidance(node, text, "Scope")
24
+ style_no_guidance(node, extract_text(node), "Scope")
16
25
  end
17
26
 
18
- def introduction_style(node, text)
27
+ def introduction_style(node)
19
28
  return if @novalid
20
- r = requirement(text)
29
+ r = requirement(extract_text(node))
21
30
  style_warning(node, "Introduction may contain requirement", r) if r
22
31
  end
23
32
 
24
- def termexample_style(node, text)
33
+ def example_style(node)
25
34
  return if @novalid
26
- style_no_guidance(node, text, "Term Example")
27
- style(node, text)
35
+ style_no_guidance(node, extract_text(node), "Term Example")
36
+ style(node, extract_text(node))
28
37
  end
29
38
 
30
- def note_style(node, text)
39
+ def note_style(node)
31
40
  return if @novalid
32
- style_no_guidance(node, text, "Note")
33
- style(node, text)
41
+ style_no_guidance(node, extract_text(node), "Note")
42
+ style(node, extract_text(node))
34
43
  end
35
44
 
36
- def footnote_style(node, text)
45
+ def footnote_style(node)
37
46
  return if @novalid
38
- style_no_guidance(node, text, "Footnote")
39
- style(node, text)
47
+ style_no_guidance(node, extract_text(node), "Footnote")
48
+ style(node, extract_text(node))
40
49
  end
41
50
 
42
51
  def style_warning(node, msg, text)
@@ -1,5 +1,5 @@
1
1
  module Asciidoctor
2
2
  module ISO
3
- VERSION = "0.7.0".freeze
3
+ VERSION = "0.7.1".freeze
4
4
  end
5
5
  end
@@ -89,13 +89,15 @@ RSpec.describe Asciidoctor::ISO do
89
89
  <contributor>
90
90
  <role type="author"/>
91
91
  <organization>
92
- <name>ISO</name>
92
+ <name>International Organization for Standardization</name>
93
+ <abbreviation>ISO</abbreviation>
93
94
  </organization>
94
95
  </contributor>
95
96
  <contributor>
96
97
  <role type="publisher"/>
97
98
  <organization>
98
- <name>ISO</name>
99
+ <name>International Organization for Standardization</name>
100
+ <abbreviation>ISO</abbreviation>
99
101
  </organization>
100
102
  </contributor>
101
103
  <language>en</language>
@@ -108,7 +110,8 @@ RSpec.describe Asciidoctor::ISO do
108
110
  <from>2001</from>
109
111
  <owner>
110
112
  <organization>
111
- <name>ISO</name>
113
+ <name>International Organization for Standardization</name>
114
+ <abbreviation>ISO</abbreviation>
112
115
  </organization>
113
116
  </owner>
114
117
  </copyright>
@@ -141,13 +144,16 @@ RSpec.describe Asciidoctor::ISO do
141
144
  :tc-docnumber: 2000
142
145
  :language: el
143
146
  :script: Grek
147
+ :publisher: IEC,IETF
144
148
  INPUT
145
149
  <?xml version="1.0" encoding="UTF-8"?>
146
150
  <iso-standard xmlns="http://riboseinc.com/isoxml">
147
151
  <bibdata type="article">
148
152
  <title>
153
+
149
154
  </title>
150
155
  <title>
156
+
151
157
  </title>
152
158
  <docidentifier>
153
159
  <project-number part="1" subpart="1">1000</project-number>
@@ -156,13 +162,25 @@ RSpec.describe Asciidoctor::ISO do
156
162
  <contributor>
157
163
  <role type="author"/>
158
164
  <organization>
159
- <name>ISO</name>
165
+ <name>IEC</name>
166
+ </organization>
167
+ </contributor>
168
+ <contributor>
169
+ <role type="author"/>
170
+ <organization>
171
+ <name>IETF</name>
160
172
  </organization>
161
173
  </contributor>
162
174
  <contributor>
163
175
  <role type="publisher"/>
164
176
  <organization>
165
- <name>ISO</name>
177
+ <name>IEC</name>
178
+ </organization>
179
+ </contributor>
180
+ <contributor>
181
+ <role type="publisher"/>
182
+ <organization>
183
+ <name>IETF</name>
166
184
  </organization>
167
185
  </contributor>
168
186
  <language>el</language>
@@ -175,7 +193,15 @@ RSpec.describe Asciidoctor::ISO do
175
193
  <from>2018</from>
176
194
  <owner>
177
195
  <organization>
178
- <name>ISO</name>
196
+ <name>IEC</name>
197
+ </organization>
198
+ </owner>
199
+ </copyright>
200
+ <copyright>
201
+ <from>2018</from>
202
+ <owner>
203
+ <organization>
204
+ <name>IETF</name>
179
205
  </organization>
180
206
  </owner>
181
207
  </copyright>
@@ -28,6 +28,11 @@ RSpec.describe Asciidoctor::ISO do
28
28
  r = 1 %
29
29
  r = 1 %
30
30
  ++++
31
+
32
+ [stem]
33
+ ++++
34
+ <mml:math><mml:msub xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math"> <mml:mrow> <mml:mrow> <mml:mi mathvariant="bold-italic">F</mml:mi> </mml:mrow> </mml:mrow> <mml:mrow> <mml:mrow> <mml:mi mathvariant="bold-italic">&#x0391;</mml:mi> </mml:mrow> </mml:mrow> </mml:msub> </mml:math>
35
+ ++++
31
36
  INPUT
32
37
  #{BLANK_HDR}
33
38
  <sections>
@@ -35,6 +40,11 @@ RSpec.describe Asciidoctor::ISO do
35
40
  <stem type="AsciiMath">r = 1 %
36
41
  r = 1 %</stem>
37
42
  </formula>
43
+
44
+ <formula id="_">
45
+ <stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><msub> <mrow> <mrow> <mi mathvariant="bold-italic">F</mi> </mrow> </mrow> <mrow> <mrow> <mi mathvariant="bold-italic">Α</mi> </mrow> </mrow> </msub> </math></stem>
46
+ </stem>
47
+ </formula>
38
48
  </sections>
39
49
  </iso-standard>
40
50
  OUTPUT
@@ -122,25 +122,27 @@ RSpec.describe Asciidoctor::ISO do
122
122
  OUTPUT
123
123
  end
124
124
 
125
- it "moves notes inside preceding blocks, if they are not at clause end" do
125
+ it "moves notes inside preceding blocks, if they are not at clause end, and the blocks are not delimited" do
126
126
  expect(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :iso, header_footer: true))).to be_equivalent_to <<~"OUTPUT"
127
127
  #{ASCIIDOC_BLANK_HDR}
128
- [source,ruby]
129
- [1...x].each do |y|
130
- puts y
131
- end
128
+ [stem]
129
+ ++++
130
+ r = 1 %
131
+ r = 1 %
132
+ ++++
132
133
 
133
- NOTE: That loop does not do much
134
+ NOTE: That formula does not do much
134
135
 
135
136
  Indeed.
136
137
  INPUT
137
138
  #{BLANK_HDR}
138
- <sections><sourcecode id="_">[1...x].each do |y|
139
- puts y
140
- end<note id="_">
141
- <p id="_">That loop does not do much</p>
142
- </note></sourcecode>
143
-
139
+ <sections><formula id="_">
140
+ <stem type="AsciiMath">r = 1 %
141
+ r = 1 %</stem>
142
+ <note id="_">
143
+ <p id="_">That formula does not do much</p>
144
+ </note></formula>
145
+
144
146
  <p id="_">Indeed.</p></sections>
145
147
  </iso-standard>
146
148
  OUTPUT
@@ -188,11 +190,14 @@ RSpec.describe Asciidoctor::ISO do
188
190
  <bibitem id="iso216" type="standard">
189
191
  <title format="text/plain">Reference</title>
190
192
  <docidentifier>ISO 216</docidentifier>
191
- <date type="published">2001</date>
193
+ <date type="published">
194
+ <from>2001</from>
195
+ </date>
192
196
  <contributor>
193
197
  <role type="publisher"/>
194
198
  <organization>
195
- <name>ISO</name>
199
+ <name>International Organization for Standardization</name>
200
+ <abbreviation>ISO</abbreviation>
196
201
  </organization>
197
202
  </contributor>
198
203
  </bibitem>
@@ -225,7 +230,8 @@ RSpec.describe Asciidoctor::ISO do
225
230
  <contributor>
226
231
  <role type="publisher"/>
227
232
  <organization>
228
- <name>ISO</name>
233
+ <name>International Organization for Standardization</name>
234
+ <abbreviation>ISO</abbreviation>
229
235
  </organization>
230
236
  </contributor>
231
237
  </bibitem>
@@ -309,7 +315,8 @@ RSpec.describe Asciidoctor::ISO do
309
315
  <contributor>
310
316
  <role type="publisher"/>
311
317
  <organization>
312
- <name>ISO</name>
318
+ <name>International Organization for Standardization</name>
319
+ <abbreviation>ISO</abbreviation>
313
320
  </organization>
314
321
  </contributor>
315
322
  </bibitem></references>
@@ -640,11 +647,12 @@ RSpec.describe Asciidoctor::ISO do
640
647
  <bibitem id="iso123" type="standard">
641
648
  <title format="text/plain">Standard</title>
642
649
  <docidentifier>ISO 123</docidentifier>
643
- <date type="published">--</date>
650
+ <date type="published"><from>--</from></date>
644
651
  <contributor>
645
652
  <role type="publisher"/>
646
653
  <organization>
647
- <name>ISO</name>
654
+ <name>International Organization for Standardization</name>
655
+ <abbreviation>ISO</abbreviation>
648
656
  </organization>
649
657
  </contributor>
650
658
  <note format="text/plain" reference="2">ISO DATE: The standard is in press</note>
@@ -12,6 +12,7 @@ RSpec.describe Asciidoctor::ISO do
12
12
  super^script^
13
13
  sub~script~
14
14
  stem:[a_90]
15
+ stem:[<mml:math><mml:msub xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math"> <mml:mrow> <mml:mrow> <mml:mi mathvariant="bold-italic">F</mml:mi> </mml:mrow> </mml:mrow> <mml:mrow> <mml:mrow> <mml:mi mathvariant="bold-italic">&#x391;</mml:mi> </mml:mrow> </mml:mrow> </mml:msub> </mml:math>]
15
16
  [alt]#alt#
16
17
  [deprecated]#deprecated#
17
18
  [domain]#domain#
@@ -28,6 +29,7 @@ RSpec.describe Asciidoctor::ISO do
28
29
  super<sup>script</sup>
29
30
  sub<sub>script</sub>
30
31
  <stem type="AsciiMath">a_90</stem>
32
+ <stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><msub> <mrow> <mrow> <mi mathvariant="bold-italic">F</mi> </mrow> </mrow> <mrow> <mrow> <mi mathvariant="bold-italic">Α</mi> </mrow> </mrow> </msub> </math></stem>
31
33
  <admitted>alt</admitted>
32
34
  <deprecates>deprecated</deprecates>
33
35
  <domain>domain</domain>
@@ -173,6 +173,7 @@ RSpec.describe Asciidoctor::ISO do
173
173
 
174
174
  INPUT
175
175
  #{BLANK_HDR}
176
+ <sections>
176
177
  <ul id="id1">
177
178
  <li id="id2">
178
179
  <p id="_">List item</p>
@@ -19,7 +19,8 @@ RSpec.describe Asciidoctor::ISO do
19
19
  <contributor>
20
20
  <role type="publisher"/>
21
21
  <organization>
22
- <name>ISO</name>
22
+ <name>International Organization for Standardization</name>
23
+ <abbreviation>ISO</abbreviation>
23
24
  </organization>
24
25
  </contributor>
25
26
  </bibitem>
@@ -55,26 +56,52 @@ RSpec.describe Asciidoctor::ISO do
55
56
  OUTPUT
56
57
  end
57
58
 
58
- it "processes dated ISO reference" do
59
+ it "processes dated ISO reference and joint ISO/IEC references" do
59
60
  expect(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :iso, header_footer: true))).to be_equivalent_to <<~"OUTPUT"
60
61
  #{ASCIIDOC_BLANK_HDR}
61
62
  [bibliography]
62
63
  == Normative References
63
64
 
64
- * [[[iso123,ISO 123:1066]]] _Standard_
65
+ * [[[iso123,ISO/IEC 123:1066]]] _Standard_
66
+ * [[[iso124,ISO 124:1066-1067]]] _Standard_
65
67
  INPUT
66
68
  #{BLANK_HDR}
67
69
  <sections>
68
- </sections><references id="_" obligation="informative">
70
+
71
+ </sections><references id="_" obligation="informative">
69
72
  <title>Normative References</title>
70
73
  <bibitem id="iso123" type="standard">
71
74
  <title format="text/plain">Standard</title>
72
- <docidentifier>ISO 123</docidentifier>
73
- <date type="published">1066</date>
75
+ <docidentifier>ISO/IEC 123</docidentifier>
76
+ <date type="published">
77
+ <from>1066</from>
78
+ </date>
79
+ <contributor>
80
+ <role type="publisher"/>
81
+ <organization>
82
+ <name>International Organization for Standardization</name>
83
+ <abbreviation>ISO</abbreviation>
84
+ </organization>
85
+ </contributor>
86
+ <contributor>
87
+ <role type="publisher"/>
88
+ <organization>
89
+ <name>IEC</name>
90
+ </organization>
91
+ </contributor>
92
+ </bibitem>
93
+ <bibitem id="iso124" type="standard">
94
+ <title format="text/plain">Standard</title>
95
+ <docidentifier>ISO 124</docidentifier>
96
+ <date type="published">
97
+ <from>1066</from>
98
+ <to>1067</to>
99
+ </date>
74
100
  <contributor>
75
101
  <role type="publisher"/>
76
102
  <organization>
77
- <name>ISO</name>
103
+ <name>International Organization for Standardization</name>
104
+ <abbreviation>ISO</abbreviation>
78
105
  </organization>
79
106
  </contributor>
80
107
  </bibitem>
@@ -98,11 +125,14 @@ RSpec.describe Asciidoctor::ISO do
98
125
  <bibitem id="iso123" type="standard">
99
126
  <title format="text/plain">Standard</title>
100
127
  <docidentifier>ISO 123</docidentifier>
101
- <date type="published">--</date>
128
+ <date type="published">
129
+ <from>--</from>
130
+ </date>
102
131
  <contributor>
103
132
  <role type="publisher"/>
104
133
  <organization>
105
- <name>ISO</name>
134
+ <name>International Organization for Standardization</name>
135
+ <abbreviation>ISO</abbreviation>
106
136
  </organization>
107
137
  </contributor>
108
138
  <note format="text/plain" reference="1">ISO DATE: The standard is in press</note>
@@ -128,11 +158,14 @@ RSpec.describe Asciidoctor::ISO do
128
158
  <bibitem id="iso123" type="standard">
129
159
  <title format="text/plain">Standard</title>
130
160
  <docidentifier>ISO 123:All Parts</docidentifier>
131
- <date type="published">1066</date>
161
+ <date type="published">
162
+ <from>1066</from>
163
+ </date>
132
164
  <contributor>
133
165
  <role type="publisher"/>
134
166
  <organization>
135
- <name>ISO</name>
167
+ <name>International Organization for Standardization</name>
168
+ <abbreviation>ISO</abbreviation>
136
169
  </organization>
137
170
  </contributor>
138
171
  </bibitem>