isodoc 0.10.4 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,16 +3,10 @@ module IsoDoc::Function
3
3
 
4
4
  def table_title_parse(node, out)
5
5
  name = node.at(ns("./name"))
6
- out.p **{ class: "TableTitle", align: "center" } do |p|
6
+ out.p **{ class: "TableTitle", style: "text-align:center;" } do |p|
7
7
  lbl = anchor(node['id'], :label, false)
8
8
  lbl.nil? or p << l10n("#{@table_lbl} #{lbl}")
9
9
  name and !lbl.nil? and p << l10n("&nbsp;&mdash; ")
10
- =begin
11
- get_anchors[node['id']][:label].nil? or
12
- p << l10n("#{@table_lbl} #{get_anchors[node['id']][:label]}")
13
- name and !get_anchors[node['id']][:label].nil? and
14
- p << l10n("&nbsp;&mdash; ")
15
- =end
16
10
  name and name.children.each { |n| parse(n, p) }
17
11
  end
18
12
  end
@@ -52,9 +46,7 @@ module IsoDoc::Function
52
46
  attr_code(
53
47
  id: node["id"],
54
48
  class: "MsoISOTable",
55
- border: 1,
56
- cellspacing: 0,
57
- cellpadding: 0,
49
+ style: "border-width:1px;border-spacing:0;",
58
50
  title: node["alt"]
59
51
  )
60
52
  end
@@ -81,20 +73,21 @@ module IsoDoc::Function
81
73
 
82
74
  def make_tr_attr(td, row, totalrows)
83
75
  style = td.name == "th" ? "font-weight:bold;" : ""
76
+ td["align"] and style += "text-align:#{td['align']};"
84
77
  rowmax = td["rowspan"] ? row + td["rowspan"].to_i - 1 : row
85
78
  style += <<~STYLE
86
79
  border-top:#{row.zero? ? "#{SW} 1.5pt;" : 'none;'}
87
80
  border-bottom:#{SW} #{rowmax == totalrows ? '1.5' : '1.0'}pt;
81
+ padding:0;
88
82
  STYLE
89
83
  { rowspan: td["rowspan"], colspan: td["colspan"],
90
- align: td["align"], style: style.gsub(/\n/, "") }
84
+ style: style.gsub(/\n/, "") }
91
85
  end
92
86
 
93
87
  def tr_parse(node, out, ord, totalrows, _header)
94
88
  out.tr do |r|
95
89
  node.elements.each do |td|
96
90
  attrs = make_tr_attr(td, ord, totalrows - 1)
97
- # i, node.elements.size - 1, header)
98
91
  r.send td.name, **attr_code(attrs) do |entry|
99
92
  td.children.each { |n| parse(n, entry) }
100
93
  end
@@ -42,7 +42,6 @@ module IsoDoc::Function
42
42
  # is inserted before this CSS.
43
43
  def define_head(html, filename, _dir)
44
44
  html.head do |head|
45
- #head.title { |t| t << filename }
46
45
  if @standardstylesheet
47
46
  head.style do |style|
48
47
  stylesheet = File.read(@standardstylesheet, encoding: "utf-8").
@@ -53,8 +52,11 @@ module IsoDoc::Function
53
52
  end
54
53
  end
55
54
 
55
+ def body_attr
56
+ { lang: "#{@lang}" }
57
+ end
58
+
56
59
  def make_body(xml, docxml)
57
- body_attr = { lang: "EN-US", link: "blue", vlink: "#954F72" }
58
60
  xml.body **body_attr do |body|
59
61
  make_body1(body, docxml)
60
62
  make_body2(body, docxml)
@@ -6,18 +6,22 @@ module IsoDoc::HtmlFunction
6
6
  end
7
7
 
8
8
  def comments(div)
9
+ =begin
9
10
  return if @comments.empty?
10
11
  div.div **{ style: "mso-element:comment-list" } do |div1|
11
12
  @comments.each { |fn| div1.parent << fn }
12
13
  end
14
+ =end
13
15
  end
14
16
 
15
17
  def review_note_parse(node, out)
18
+ =begin
16
19
  fn = @comments.length + 1
17
20
  make_comment_link(out, fn, node)
18
21
  @in_comment = true
19
22
  @comments << make_comment_text(node, fn)
20
23
  @in_comment = false
24
+ =end
21
25
  end
22
26
 
23
27
  def comment_link_attrs(fn, node)
@@ -51,9 +55,11 @@ module IsoDoc::HtmlFunction
51
55
  end
52
56
 
53
57
  def comment_cleanup(docxml)
58
+ =begin
54
59
  move_comment_link_to_from(docxml)
55
60
  reorder_comments_by_comment_link(docxml)
56
61
  embed_comment_in_comment_list(docxml)
62
+ =end
57
63
  end
58
64
 
59
65
  COMMENT_IN_COMMENT_LIST =
@@ -44,12 +44,14 @@ module IsoDoc::HtmlFunction
44
44
  def toHTML(result, filename)
45
45
  result = (from_xhtml(html_cleanup(to_xhtml(result))))
46
46
  result = populate_template(result, :html)
47
- #result = script_cdata(from_xhtml(move_images(to_xhtml(result))))
48
47
  result = from_xhtml(move_images(to_xhtml(result)))
49
- result = script_cdata(inject_script(result))
50
- File.open("#{filename}.html", "w:UTF-8") do |f|
51
- f.write(result)
52
- end
48
+ result = html5(script_cdata(inject_script(result)))
49
+ File.open("#{filename}.html", "w:UTF-8") { |f| f.write(result) }
50
+ end
51
+
52
+ def html5(doc)
53
+ doc.sub(%r{<!DOCTYPE html [^>]+>}, "<!DOCTYPE html>").
54
+ sub(%r{<\?xml[^>]+>}, "")
53
55
  end
54
56
 
55
57
  def html_cleanup(x)
@@ -63,9 +65,7 @@ module IsoDoc::HtmlFunction
63
65
  MATHJAX = <<~"MATHJAX".freeze
64
66
  <script type="text/x-mathjax-config">
65
67
  MathJax.Hub.Config({
66
- asciimath2jax: {
67
- delimiters: [['OPEN', 'CLOSE']]
68
- }
68
+ asciimath2jax: { delimiters: [['OPEN', 'CLOSE']] }
69
69
  });
70
70
  </script>
71
71
  <script src="#{MATHJAX_ADDR}?config=AM_HTMLorMML" async="async"></script>
@@ -91,15 +91,6 @@ module IsoDoc::HtmlFunction
91
91
  HEAD
92
92
  end
93
93
 
94
- def toclevel
95
- <<~HEAD.freeze
96
- function toclevel() { var i; var text = "";
97
- for(i = 1; i <= #{@htmlToClevels}; i++) {
98
- if (i > 1) { text += ","; } text += "h" + i + ":not(:empty):not(.TermNum)"; }
99
- return text;}
100
- HEAD
101
- end
102
-
103
94
  def html_head()
104
95
  <<~HEAD.freeze
105
96
  <title>{{ doctitle }}</title>
@@ -155,12 +146,10 @@ module IsoDoc::HtmlFunction
155
146
 
156
147
  def sourcecode_parse(node, out)
157
148
  name = node.at(ns("./name"))
158
- out.pre **attr_code(id: node["id"],
159
- class: "prettyprint #{sourcecodelang(node&.at(ns('./@lang'))&.value)}") do |div|
149
+ class1 = "prettyprint #{sourcecodelang(node&.at(ns('./@lang'))&.value)}"
150
+ out.pre **attr_code(id: node["id"], class: class1) do |div|
160
151
  @sourcecode = true
161
- node.children.each do |n|
162
- parse(n, div) unless n.name == "name"
163
- end
152
+ node.children.each { |n| parse(n, div) unless n.name == "name" }
164
153
  @sourcecode = false
165
154
  sourcecode_name_parse(node, div, name) if name
166
155
  end
@@ -171,10 +160,6 @@ module IsoDoc::HtmlFunction
171
160
  html_intro(docxml) if @htmlintropage
172
161
  docxml.at("//body") << mathjax(@openmathdelim, @closemathdelim)
173
162
  docxml.at("//body") << sourcecode_highlighter
174
- #if @scripts
175
- # scripts = File.read(@scripts, encoding: "UTF-8")
176
- # a = docxml.at("//body").add_child docxml.create_cdata(scripts)
177
- #end
178
163
  html_main(docxml)
179
164
  docxml
180
165
  end
@@ -186,17 +171,15 @@ module IsoDoc::HtmlFunction
186
171
  end
187
172
 
188
173
  def html_cover(docxml)
189
- cover = File.read(@htmlcoverpage, encoding: "UTF-8")
190
- coverxml = to_xhtml_fragment(cover)
174
+ doc = to_xhtml_fragment(File.read(@htmlcoverpage, encoding: "UTF-8"))
191
175
  d = docxml.at('//div[@class="title-section"]')
192
- d.children.first.add_previous_sibling coverxml.to_xml(encoding: "US-ASCII")
176
+ d.children.first.add_previous_sibling doc.to_xml(encoding: "US-ASCII")
193
177
  end
194
178
 
195
179
  def html_intro(docxml)
196
- intro = File.read(@htmlintropage, encoding: "UTF-8")
197
- introxml = to_xhtml_fragment(intro)
180
+ doc = to_xhtml_fragment(File.read(@htmlintropage, encoding: "UTF-8"))
198
181
  d = docxml.at('//div[@class="prefatory-section"]')
199
- d.children.first.add_previous_sibling introxml.to_xml(encoding: "US-ASCII")
182
+ d.children.first.add_previous_sibling doc.to_xml(encoding: "US-ASCII")
200
183
  end
201
184
 
202
185
  def htmlstylesheet
@@ -210,11 +193,14 @@ module IsoDoc::HtmlFunction
210
193
  return docxml unless @htmlstylesheet
211
194
  title = docxml.at("//*[local-name() = 'head']/*[local-name() = 'title']")
212
195
  head = docxml.at("//*[local-name() = 'head']")
196
+ =begin
213
197
  css = htmlstylesheet
214
198
  if title.nil? then head.children.first.add_previous_sibling css
215
199
  else
216
200
  title.add_next_sibling css
217
201
  end
202
+ =end
203
+ head << htmlstylesheet
218
204
  docxml
219
205
  end
220
206
 
@@ -293,21 +279,33 @@ module IsoDoc::HtmlFunction
293
279
  end
294
280
 
295
281
  def html_toc_entry(level, header)
296
- %(<li class="h#{level}"><a href="##{header['id']}">#{header_strip(header)}</a></li>)
282
+ %(<li class="#{level}"><a href="##{header['id']}">\
283
+ #{header_strip(header)}</a></li>)
297
284
  end
298
285
 
286
+ def toclevel_classes
287
+ (1..@htmlToClevels).inject([]) { |m, i| m << "h#{i}" }
288
+ end
289
+
290
+ def toclevel
291
+ ret = toclevel_classes.map { |l| "#{l}:not(:empty):not(.TermNum):not(.noTOC)" }
292
+ <<~HEAD.freeze
293
+ function toclevel() { return "#{ret.join(',')}";}
294
+ HEAD
295
+ end
296
+
297
+ # needs to be same output as toclevel
299
298
  def html_toc(docxml)
300
- =begin
301
299
  idx = docxml.at("//div[@id = 'toc']") or return docxml
302
300
  toc = "<ul>"
303
- tocidx = 0
304
- docxml.xpath("//main//h1 | //main//h2[not(@class = 'TermNum')]").each do |h|
301
+ path = toclevel_classes.map do |l|
302
+ "//main//#{l}[not(@class = 'TermNum')][not(@class = 'noTOC')][not(text())]"
303
+ end
304
+ docxml.xpath(path.join(" | ")).each_with_index do |h, tocidx|
305
305
  h["id"] ||= "toc#{tocidx}"
306
- toc += html_toc_entry(h.name == "h1" ? 1 : 2, h)
307
- tocidx += 1
306
+ toc += html_toc_entry(h.name, h)
308
307
  end
309
308
  idx.children = "#{toc}</ul>"
310
- =end
311
309
  docxml
312
310
  end
313
311
  end
@@ -1,3 +1,3 @@
1
1
  module IsoDoc
2
- VERSION = "0.10.4".freeze
2
+ VERSION = "1.0.0".freeze
3
3
  end
@@ -13,6 +13,10 @@ module IsoDoc::WordFunction
13
13
  end
14
14
  end
15
15
 
16
+ def body_attr
17
+ { lang: "EN-US", link: "blue", vlink: "#954F72" }
18
+ end
19
+
16
20
  def make_body1(body, _docxml)
17
21
  FileUtils.rm_rf tmpimagedir
18
22
  FileUtils.mkdir tmpimagedir
@@ -235,12 +239,12 @@ module IsoDoc::WordFunction
235
239
 
236
240
 
237
241
  def make_table_attr(node)
238
- {
242
+ super.merge({
239
243
  style: "mso-table-lspace:15.0cm;margin-left:423.0pt;"\
240
244
  "mso-table-rspace:15.0cm;margin-right:423.0pt;mso-table-bspace:14.2pt;"\
241
245
  "mso-table-anchor-vertical:paragraph;mso-table-anchor-horizontal:column;"\
242
- "mso-table-overlap:never;"
243
- }.merge(super)
246
+ "mso-table-overlap:never;border-spacing:0;border-width:1px;"
247
+ })
244
248
  end
245
249
 
246
250
  def table_parse(node, out)
@@ -60,6 +60,7 @@ xmlns:m="http://schemas.microsoft.com/office/2004/12/omml">
60
60
  word_table_separator(docxml)
61
61
  word_admonition_images(docxml)
62
62
  word_list_continuations(docxml)
63
+ word_example_cleanup(docxml)
63
64
  docxml
64
65
  end
65
66
 
@@ -96,6 +97,12 @@ xmlns:m="http://schemas.microsoft.com/office/2004/12/omml">
96
97
  def word_annex_cleanup(docxml)
97
98
  end
98
99
 
100
+ def word_example_cleanup(docxml)
101
+ docxml.xpath("//div[@class = 'example']//p[not(@class)]").each do |p|
102
+ p["class"] = "example"
103
+ end
104
+ end
105
+
99
106
  def word_preface(docxml)
100
107
  word_cover(docxml) if @wordcoverpage
101
108
  word_intro(docxml, @wordToClevels) if @wordintropage
@@ -263,16 +263,16 @@ B</pre>
263
263
  <p id="_">The time <span class="stem">(#(t_90)#)</span> was estimated to be 18,2 min for this example.</p>
264
264
  </div></aside>
265
265
  <p><b>Key</b></p><dl><dt><p>A</p></dt><dd><p>B</p></dd></dl>
266
- <p class="FigureTitle" align="center">Figure 1&#160;&#8212; Split-it-right <i>sample</i> divider</p></div>
266
+ <p class="FigureTitle" style="text-align:center;">Figure 1&#160;&#8212; Split-it-right <i>sample</i> divider</p></div>
267
267
  <div class="figure" id="figure-B">
268
268
  <pre>A &lt;
269
269
  B</pre>
270
- <p class="FigureTitle" align="center">Figure 2</p>
270
+ <p class="FigureTitle" style="text-align:center;">Figure 2</p>
271
271
  </div>
272
272
  <div class="figure" id="figure-C">
273
273
  <pre>A &lt;
274
274
  B</pre>
275
- <p class="FigureTitle" align="center"/>
275
+ <p class="FigureTitle" style="text-align:center;"/>
276
276
  </div>
277
277
  </div>
278
278
  <p class="zzSTDTitle1"/>
@@ -326,11 +326,11 @@ B</pre>
326
326
  <p id="_">The time <span class="stem">(#(t_90)#)</span> was estimated to be 18,2 min for this example.</p>
327
327
  </div></aside>
328
328
  <p><b>Key</b></p><table class="dl"><tr><td valign="top" align="left"><p align="left" style="margin-left:0pt;text-align:left;">A</p></td><td valign="top"><p>B</p></td></tr></table>
329
- <p class="FigureTitle" align="center">Figure 1&#160;&#8212; Split-it-right sample divider</p></div>
329
+ <p class="FigureTitle" style="text-align:center;">Figure 1&#160;&#8212; Split-it-right sample divider</p></div>
330
330
  <div class="figure" id="figure-B">
331
331
  <pre>A &lt;
332
332
  B</pre>
333
- <p class="FigureTitle" align="center">Figure 2</p>
333
+ <p class="FigureTitle" style="text-align:center;">Figure 2</p>
334
334
  </div>
335
335
  </div>
336
336
  <p>&#160;</p>
@@ -426,7 +426,7 @@ B</pre>
426
426
  <br/>
427
427
  <div>
428
428
  <h1 class="ForewordTitle">Foreword</h1>
429
- <pre id="samplecode" class="prettyprint lang-rb"><br/>&#160;&#160;&#160; <br/>&#160; puts x<br/><p class="SourceTitle" align="center">Ruby <i>code</i></p></pre>
429
+ <pre id="samplecode" class="prettyprint lang-rb"><br/>&#160;&#160;&#160; <br/>&#160; puts x<br/><p class="SourceTitle" style="text-align:center;">Ruby <i>code</i></p></pre>
430
430
  </div>
431
431
  <p class="zzSTDTitle1"/>
432
432
  </div>
@@ -461,7 +461,7 @@ B</pre>
461
461
  </p>
462
462
  <div>
463
463
  <h1 class="ForewordTitle">Foreword</h1>
464
- <p id="samplecode" class="Sourcecode"><br/>&#160;&#160;&#160; <br/>&#160; puts x<br/><p class="SourceTitle" align="center">Ruby <i>code</i></p></p>
464
+ <p id="samplecode" class="Sourcecode"><br/>&#160;&#160;&#160; <br/>&#160; puts x<br/><p class="SourceTitle" style="text-align:center;">Ruby <i>code</i></p></p>
465
465
  </div>
466
466
  <p>&#160;</p>
467
467
  </div>
@@ -491,7 +491,7 @@ B</pre>
491
491
  <br/>
492
492
  <div>
493
493
  <h1 class="ForewordTitle">Foreword</h1>
494
- <pre id="samplecode" class="prettyprint "><br/>&#160;&#160;&#160; <br/>&#160; &lt;xml&gt;<br/><p class="SourceTitle" align="center">XML code</p></pre>
494
+ <pre id="samplecode" class="prettyprint "><br/>&#160;&#160;&#160; <br/>&#160; &lt;xml&gt;<br/><p class="SourceTitle" style="text-align:center;">XML code</p></pre>
495
495
  </div>
496
496
  <p class="zzSTDTitle1"/>
497
497
  </div>
@@ -508,7 +508,7 @@ B</pre>
508
508
  %w{a b c}.each do |x|
509
509
  puts x <callout target="B">2</callout>
510
510
  end<annotation id="A">
511
- <p id="_">This is one callout</p>
511
+ <p id="_">This is <em>one</em> callout</p>
512
512
  </annotation><annotation id="B">
513
513
  <p id="_">This is another callout</p>
514
514
  </annotation></sourcecode>
@@ -519,11 +519,7 @@ B</pre>
519
519
  <br/>
520
520
  <div>
521
521
  <h1 class="ForewordTitle">Foreword</h1>
522
- <pre id="_" class="prettyprint ">puts "Hello, world." &lt;1&gt;<br/>&#160;&#160; %w{a b c}.each do |x|<br/>&#160;&#160;&#160;&#160; puts x &lt;2&gt;<br/>&#160;&#160; end<span class="zzMoveToFollowing">&lt;1&gt; </span>
523
- <p class="Sourcecode" id="_">This is one callout</p>
524
- <span class="zzMoveToFollowing">&lt;2&gt; </span>
525
- <p class="Sourcecode" id="_">This is another callout</p>
526
- </pre>
522
+ <pre id="_" class="prettyprint ">puts "Hello, world." &lt;1&gt;<br/>&#160;&#160; %w{a b c}.each do |x|<br/>&#160;&#160;&#160;&#160; puts x &lt;2&gt;<br/>&#160;&#160; end<br/><br/>&lt;1&gt; This is one callout<br/>&lt;2&gt; This is another callout</pre>
527
523
  </div>
528
524
  <p class="zzSTDTitle1"/>
529
525
  </div>
@@ -546,7 +542,7 @@ B</pre>
546
542
  <br/>
547
543
  <div>
548
544
  <h1 class="ForewordTitle">Foreword</h1>
549
- <div class="Admonition"><p class="AdmonitionTitle" align="center">CAUTION</p>
545
+ <div class="Admonition"><p class="AdmonitionTitle" style="text-align:center;">CAUTION</p>
550
546
  <p id="_e94663cc-2473-4ccc-9a72-983a74d989f2">Only use paddy or parboiled rice for the determination of husked rice yield.</p>
551
547
  </div>
552
548
  </div>
@@ -572,7 +568,7 @@ B</pre>
572
568
  <br/>
573
569
  <div>
574
570
  <h1 class="ForewordTitle">Foreword</h1>
575
- <div class="Admonition"><p class="AdmonitionTitle" align="center">Title</p>
571
+ <div class="Admonition"><p class="AdmonitionTitle" style="text-align:center;">Title</p>
576
572
  <p id="_e94663cc-2473-4ccc-9a72-983a74d989f2">Only use paddy or parboiled rice for the determination of husked rice yield.</p>
577
573
  </div>
578
574
  </div>
@@ -645,11 +641,11 @@ World</p>
645
641
  <br/>
646
642
  <div>
647
643
  <h1 class="ForewordTitle">Foreword</h1>
648
- <p id="_08bfe952-d57f-4150-9c95-5d52098cc2a8" align="left" style="text-align:left">Vache Equipment<br/>
644
+ <p id="_08bfe952-d57f-4150-9c95-5d52098cc2a8" style="text-align:left;">Vache Equipment<br/>
649
645
  Fictitious<br/>
650
646
  World
651
647
  </p>
652
- <p style="text-align:justify">Justify</p>
648
+ <p style="text-align:justify;">Justify</p>
653
649
  </div>
654
650
  <p class="zzSTDTitle1"/>
655
651
  </div>
@@ -773,12 +769,12 @@ World</p>
773
769
  <table id="_">
774
770
  <tbody>
775
771
  <tr>
776
- <td align="left">Object</td>
777
- <td align="left">Value</td>
772
+ <td style="text-align:left;">Object</td>
773
+ <td style="text-align:left;">Value</td>
778
774
  </tr>
779
775
  <tr>
780
- <td align="left">Mission</td>
781
- <td align="left">Accomplished</td>
776
+ <td style="text-align:left;">Mission</td>
777
+ <td style="text-align:left;">Accomplished</td>
782
778
  </tr>
783
779
  </tbody>
784
780
  </table>
@@ -812,6 +808,7 @@ World</p>
812
808
  <div>
813
809
  <h1 class="ForewordTitle">Foreword</h1>
814
810
  <div class="permission"><p class="AdmonitionTitle">Permission 1:<br/>/ogc/recommendation/wfs/2</p>
811
+ <p><i>Subject: user<br/>Control-class: Technical<br/>Priority: P0<br/>Family: System and Communications Protection<br/>Family: System and Communications Protocols</i></p>
815
812
 
816
813
  <div class="requirement-inherit">/ss/584/2015/level/1</div>
817
814
  <div class="requirement-description">
@@ -858,12 +855,12 @@ World</p>
858
855
  <table id="_">
859
856
  <tbody>
860
857
  <tr>
861
- <td align="left">Object</td>
862
- <td align="left">Value</td>
858
+ <td style="text-align:left;">Object</td>
859
+ <td style="text-align:left;">Value</td>
863
860
  </tr>
864
861
  <tr>
865
- <td align="left">Mission</td>
866
- <td align="left">Accomplished</td>
862
+ <td style="text-align:left;">Mission</td>
863
+ <td style="text-align:left;">Accomplished</td>
867
864
  </tr>
868
865
  </tbody>
869
866
  </table>
@@ -896,7 +893,7 @@ World</p>
896
893
  <br/>
897
894
  <div>
898
895
  <h1 class="ForewordTitle">Foreword</h1>
899
- <div class="require"><p class="AdmonitionTitle">Requirement:<br/>/ogc/recommendation/wfs/2. A New Requirement</p>
896
+ <div class="require"><p class="AdmonitionTitle">Requirement:<br/>/ogc/recommendation/wfs/2. A New Requirement</p><p><i>Subject: user</i></p>
900
897
 
901
898
  <div class="requirement-inherit">/ss/584/2015/level/1</div>
902
899
  <div class="requirement-description">
@@ -930,9 +927,11 @@ World</p>
930
927
  expect(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true)).to be_equivalent_to <<~"OUTPUT"
931
928
  <iso-standard xmlns="http://riboseinc.com/isoxml">
932
929
  <preface><foreword>
933
- <recommendation id="_">
930
+ <recommendation id="_" obligation="shall,could">
934
931
  <label>/ogc/recommendation/wfs/2</label>
935
932
  <inherit>/ss/584/2015/level/1</inherit>
933
+ <classification><tag>type</tag><value>text</value></classification>
934
+ <classification><tag>language</tag><value>BASIC</value></classification>
936
935
  <subject>user</subject>
937
936
  <description>
938
937
  <p id="_">I recommend <em>this</em>.</p>
@@ -942,12 +941,12 @@ World</p>
942
941
  <table id="_">
943
942
  <tbody>
944
943
  <tr>
945
- <td align="left">Object</td>
946
- <td align="left">Value</td>
944
+ <td style="text-align:left;">Object</td>
945
+ <td style="text-align:left;">Value</td>
947
946
  </tr>
948
947
  <tr>
949
- <td align="left">Mission</td>
950
- <td align="left">Accomplished</td>
948
+ <td style="text-align:left;">Mission</td>
949
+ <td style="text-align:left;">Accomplished</td>
951
950
  </tr>
952
951
  </tbody>
953
952
  </table>
@@ -980,8 +979,7 @@ World</p>
980
979
  <br/>
981
980
  <div>
982
981
  <h1 class="ForewordTitle">Foreword</h1>
983
- <div class="recommend"><p class="AdmonitionTitle">Recommendation 1:<br/>/ogc/recommendation/wfs/2</p>
984
-
982
+ <div class="recommend"><p class="AdmonitionTitle">Recommendation 1:<br/>/ogc/recommendation/wfs/2</p><p><i>Obligation: shall,could<br/>Subject: user<br/>Type: text<br/>Language: BASIC</i></p>
985
983
  <div class="requirement-inherit">/ss/584/2015/level/1</div>
986
984
  <div class="requirement-description">
987
985
  <p id="_">I recommend <i>this</i>.</p>