metanorma-standoc 1.3.28 → 1.3.29
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/macos.yml +8 -0
- data/.github/workflows/ubuntu.yml +8 -0
- data/.github/workflows/windows.yml +8 -0
- data/lib/asciidoctor/standoc/base.rb +5 -1
- data/lib/asciidoctor/standoc/biblio.rng +22 -2
- data/lib/asciidoctor/standoc/blocks.rb +7 -4
- data/lib/asciidoctor/standoc/cleanup_block.rb +3 -0
- data/lib/asciidoctor/standoc/validate.rb +8 -2
- data/lib/asciidoctor/standoc/validate_section.rb +0 -2
- data/lib/metanorma/standoc/version.rb +1 -1
- data/spec/asciidoctor-standoc/blocks_spec.rb +16 -0
- data/spec/asciidoctor-standoc/cleanup_spec.rb +29 -0
- data/spec/asciidoctor-standoc/macros_spec.rb +3 -2
- data/spec/asciidoctor-standoc/refs_spec.rb +24 -6
- data/spec/asciidoctor-standoc/validate_spec.rb +21 -7
- data/spec/assets/xref_error.adoc +7 -0
- data/spec/vcr_cassettes/dated_iso_ref_joint_iso_iec.yml +68 -68
- data/spec/vcr_cassettes/isobib_get_123.yml +35 -35
- data/spec/vcr_cassettes/isobib_get_123_2001.yml +18 -18
- data/spec/vcr_cassettes/isobib_get_124.yml +18 -18
- data/spec/vcr_cassettes/rfcbib_get_rfc8341.yml +8 -8
- data/spec/vcr_cassettes/separates_iev_citations_by_top_level_clause.yml +35 -35
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e964fb25b29d5ecbe775bf397a17f9cf264fa3709e8756be7a9025bcf043250f
|
4
|
+
data.tar.gz: d6085180737f332f6aa657eb129bf72f02ca0466b60e22276ddda03cd2cbd788
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: baccf6cbbb3c32defcac92b95911e83f10f44338a2bb631a8c6ee86a7b00833583d27161b18ad45b2d80aeec8dcbe3dd349a39b4cfa08670f6cdbe1c8492323c
|
7
|
+
data.tar.gz: 347739395332e6d3ac88ea0ec5bec557fa0d06dee7f7f2bbafa198e245131dd313c3f229f63bb3afc92c99eb4cd0cec8fc2a9f969e0cbf42a76271e45955e8eb
|
data/.github/workflows/macos.yml
CHANGED
@@ -6,15 +6,23 @@ on:
|
|
6
6
|
push:
|
7
7
|
branches: [ master ]
|
8
8
|
pull_request:
|
9
|
+
paths-ignore:
|
10
|
+
- .github/workflows/ubuntu.yml
|
11
|
+
- .github/workflows/windows.yml
|
9
12
|
|
10
13
|
jobs:
|
11
14
|
test-macos:
|
12
15
|
name: Test on Ruby ${{ matrix.ruby }} macOS
|
13
16
|
runs-on: macos-latest
|
17
|
+
continue-on-error: ${{ matrix.experimental }}
|
14
18
|
strategy:
|
15
19
|
fail-fast: false
|
16
20
|
matrix:
|
17
21
|
ruby: [ '2.6', '2.5', '2.4' ]
|
22
|
+
experimental: [false]
|
23
|
+
include:
|
24
|
+
- ruby: '2.7'
|
25
|
+
experimental: true
|
18
26
|
steps:
|
19
27
|
- uses: actions/checkout@master
|
20
28
|
- name: Use Ruby
|
@@ -6,15 +6,23 @@ on:
|
|
6
6
|
push:
|
7
7
|
branches: [ master ]
|
8
8
|
pull_request:
|
9
|
+
paths-ignore:
|
10
|
+
- .github/workflows/macos.yml
|
11
|
+
- .github/workflows/windows.yml
|
9
12
|
|
10
13
|
jobs:
|
11
14
|
test-linux:
|
12
15
|
name: Test on Ruby ${{ matrix.ruby }} Ubuntu
|
13
16
|
runs-on: ubuntu-latest
|
17
|
+
continue-on-error: ${{ matrix.experimental }}
|
14
18
|
strategy:
|
15
19
|
fail-fast: false
|
16
20
|
matrix:
|
17
21
|
ruby: [ '2.6', '2.5', '2.4' ]
|
22
|
+
experimental: [false]
|
23
|
+
include:
|
24
|
+
- ruby: '2.7'
|
25
|
+
experimental: true
|
18
26
|
steps:
|
19
27
|
- uses: actions/checkout@master
|
20
28
|
- name: Use Ruby
|
@@ -6,15 +6,23 @@ on:
|
|
6
6
|
push:
|
7
7
|
branches: [ master ]
|
8
8
|
pull_request:
|
9
|
+
paths-ignore:
|
10
|
+
- .github/workflows/macos.yml
|
11
|
+
- .github/workflows/ubuntu.yml
|
9
12
|
|
10
13
|
jobs:
|
11
14
|
test-windows:
|
12
15
|
name: Test on Ruby ${{ matrix.ruby }} Windows
|
13
16
|
runs-on: windows-latest
|
17
|
+
continue-on-error: ${{ matrix.experimental }}
|
14
18
|
strategy:
|
15
19
|
fail-fast: false
|
16
20
|
matrix:
|
17
21
|
ruby: [ '2.6', '2.5', '2.4' ]
|
22
|
+
experimental: [false]
|
23
|
+
include:
|
24
|
+
- ruby: '2.7'
|
25
|
+
experimental: true
|
18
26
|
steps:
|
19
27
|
- uses: actions/checkout@master
|
20
28
|
- name: Use Ruby
|
@@ -169,9 +169,13 @@ module Asciidoctor
|
|
169
169
|
html_converter(node).convert(@filename + ".xml")
|
170
170
|
doc_converter(node).convert(@filename + ".xml")
|
171
171
|
end
|
172
|
+
clean_exit
|
173
|
+
ret
|
174
|
+
end
|
175
|
+
|
176
|
+
def clean_exit
|
172
177
|
@log.write(@localdir + @filename + ".err") unless @novalid
|
173
178
|
@files_to_delete.each { |f| FileUtils.rm f }
|
174
|
-
ret
|
175
179
|
end
|
176
180
|
|
177
181
|
def makexml1(node)
|
@@ -88,7 +88,7 @@
|
|
88
88
|
<text/>
|
89
89
|
</element>
|
90
90
|
</define>
|
91
|
-
<define name="
|
91
|
+
<define name="LocalizedString1">
|
92
92
|
<optional>
|
93
93
|
<!-- multiple languages and scripts possible: comma delimit them if so -->
|
94
94
|
<attribute name="language"/>
|
@@ -98,6 +98,16 @@
|
|
98
98
|
</optional>
|
99
99
|
<text/>
|
100
100
|
</define>
|
101
|
+
<define name="LocalizedString">
|
102
|
+
<choice>
|
103
|
+
<ref name="LocalizedString1"/>
|
104
|
+
<oneOrMore>
|
105
|
+
<element name="variant">
|
106
|
+
<ref name="LocalizedString1"/>
|
107
|
+
</element>
|
108
|
+
</oneOrMore>
|
109
|
+
</choice>
|
110
|
+
</define>
|
101
111
|
<!--
|
102
112
|
Unlike UML, change type to format: type is overloaded
|
103
113
|
Would be need if plain were default value and could omit the attribute
|
@@ -121,7 +131,7 @@
|
|
121
131
|
</optional>
|
122
132
|
<ref name="LocalizedStringOrXsAny"/>
|
123
133
|
</define>
|
124
|
-
<define name="
|
134
|
+
<define name="LocalizedStringOrXsAny1">
|
125
135
|
<optional>
|
126
136
|
<!-- multiple languages and scripts possible: comma delimit them if so -->
|
127
137
|
<attribute name="language"/>
|
@@ -136,6 +146,16 @@
|
|
136
146
|
</choice>
|
137
147
|
</oneOrMore>
|
138
148
|
</define>
|
149
|
+
<define name="LocalizedStringOrXsAny">
|
150
|
+
<choice>
|
151
|
+
<ref name="LocalizedStringOrXsAny1"/>
|
152
|
+
<oneOrMore>
|
153
|
+
<element name="variant">
|
154
|
+
<ref name="LocalizedStringOrXsAny1"/>
|
155
|
+
</element>
|
156
|
+
</oneOrMore>
|
157
|
+
</choice>
|
158
|
+
</define>
|
139
159
|
<define name="contributor">
|
140
160
|
<element name="contributor">
|
141
161
|
<zeroOrMore>
|
@@ -21,6 +21,10 @@ module Asciidoctor
|
|
21
21
|
subsequence: node.attr("subsequence") )
|
22
22
|
end
|
23
23
|
|
24
|
+
def note_attr(node)
|
25
|
+
attr_code(id_attr(node).merge("keep-separate": node.attr("keep-separate")))
|
26
|
+
end
|
27
|
+
|
24
28
|
# We append each contained block to its parent
|
25
29
|
def open(node)
|
26
30
|
role = node.role || node.attr("style")
|
@@ -91,7 +95,7 @@ module Asciidoctor
|
|
91
95
|
|
92
96
|
def termnote(n)
|
93
97
|
noko do |xml|
|
94
|
-
xml.termnote **
|
98
|
+
xml.termnote **note_attr(n) do |ex|
|
95
99
|
wrap_in_para(n, ex)
|
96
100
|
end
|
97
101
|
end.join("\n")
|
@@ -99,7 +103,7 @@ module Asciidoctor
|
|
99
103
|
|
100
104
|
def note(n)
|
101
105
|
noko do |xml|
|
102
|
-
xml.note **
|
106
|
+
xml.note **note_attr(n) do |c|
|
103
107
|
wrap_in_para(n, c)
|
104
108
|
end
|
105
109
|
end.join("\n")
|
@@ -146,8 +150,7 @@ module Asciidoctor
|
|
146
150
|
|
147
151
|
def pseudocode_example(node)
|
148
152
|
noko do |xml|
|
149
|
-
xml.figure **
|
150
|
-
class: "pseudocode"} do |ex|
|
153
|
+
xml.figure **id_unnum_attr(node).merge(class: "pseudocode") do |ex|
|
151
154
|
figure_title(node, ex)
|
152
155
|
wrap_in_para(node, ex)
|
153
156
|
end
|
@@ -131,10 +131,13 @@ module Asciidoctor
|
|
131
131
|
def note_cleanup(xmldoc)
|
132
132
|
q = "//note[following-sibling::*[not(local-name() = 'note')]]"
|
133
133
|
xmldoc.xpath(q).each do |n|
|
134
|
+
next if n["keep-separate"] == "true"
|
134
135
|
next unless n.ancestors("table").empty?
|
135
136
|
prev = n.previous_element || next
|
136
137
|
n.parent = prev if ELEMS_ALLOW_NOTES.include? prev.name
|
137
138
|
end
|
139
|
+
xmldoc.xpath("//note[@keep-separate]").each { |n| n.delete("keep-separate") }
|
140
|
+
xmldoc.xpath("//termnote[@keep-separate]").each { |n| n.delete("keep-separate") }
|
138
141
|
end
|
139
142
|
|
140
143
|
def requirement_cleanup(x)
|
@@ -25,7 +25,6 @@ module Asciidoctor
|
|
25
25
|
@iev = init_iev or return
|
26
26
|
iev = @iev.fetch(locality, xmldoc&.at("//language")&.text || "en") or next
|
27
27
|
pref.include?(iev.downcase) or
|
28
|
-
#warn %(Term "#{pref[0]}" does not match IEV #{locality} "#{iev}")
|
29
28
|
@log.add("Bibliography", t, %(Term "#{pref[0]}" does not match IEV #{locality} "#{iev}"))
|
30
29
|
end
|
31
30
|
end
|
@@ -38,14 +37,20 @@ module Asciidoctor
|
|
38
37
|
|
39
38
|
def repeat_id_validate(doc)
|
40
39
|
ids = {}
|
40
|
+
crash = false
|
41
41
|
doc.xpath("//*[@id]").each do |x|
|
42
42
|
if ids[x["id"]]
|
43
|
-
|
43
|
+
@log.add("Anchors", x, "Anchor #{x['id']} has already been used at line #{ids[x['id']]}")
|
44
|
+
crash = true
|
44
45
|
else
|
45
46
|
ids[x["id"]] = x.line
|
46
47
|
end
|
47
48
|
end
|
49
|
+
if crash
|
50
|
+
clean_exit
|
51
|
+
abort("Cannot deal with multiple instances of same ID")
|
48
52
|
end
|
53
|
+
end
|
49
54
|
|
50
55
|
def schema_validate(doc, schema)
|
51
56
|
Tempfile.open(["tmp", ".xml"], :encoding => 'UTF-8') do |f|
|
@@ -58,6 +63,7 @@ module Asciidoctor
|
|
58
63
|
@log.add("Syntax", "XML Line #{"%06d" % error[:line]}:#{error[:column]}", error[:message])
|
59
64
|
end
|
60
65
|
rescue Jing::Error => e
|
66
|
+
clean_exit
|
61
67
|
abort "Jing failed with error: #{e}"
|
62
68
|
ensure
|
63
69
|
f.close!
|
@@ -14,7 +14,6 @@ module Asciidoctor
|
|
14
14
|
callouts = x.elements.select { |e| e.name == "callout" }
|
15
15
|
annotations = x.elements.select { |e| e.name == "annotation" }
|
16
16
|
if callouts.size != annotations.size
|
17
|
-
#warn "#{x['id']}: mismatch of callouts and annotations"
|
18
17
|
@log.add("AsciiDoc Input", x, "mismatch of callouts and annotations")
|
19
18
|
end
|
20
19
|
end
|
@@ -23,7 +22,6 @@ module Asciidoctor
|
|
23
22
|
def style_warning(node, msg, text = nil)
|
24
23
|
w = msg
|
25
24
|
w += ": #{text}" if text
|
26
|
-
#warn w
|
27
25
|
@log.add("Style Warning", node, w)
|
28
26
|
end
|
29
27
|
|
@@ -310,6 +310,11 @@ RSpec.describe Asciidoctor::Standoc do
|
|
310
310
|
=== Term1
|
311
311
|
|
312
312
|
NOTE: This is a note
|
313
|
+
|
314
|
+
[NOTE,keep-separate=true]
|
315
|
+
====
|
316
|
+
XYZ
|
317
|
+
====
|
313
318
|
INPUT
|
314
319
|
#{BLANK_HDR}
|
315
320
|
<sections>
|
@@ -321,6 +326,9 @@ RSpec.describe Asciidoctor::Standoc do
|
|
321
326
|
<termnote id="_">
|
322
327
|
<p id="_">This is a note</p>
|
323
328
|
</termnote>
|
329
|
+
<termnote id='_'>
|
330
|
+
<p id='_'>XYZ</p>
|
331
|
+
</termnote>
|
324
332
|
</term>
|
325
333
|
</terms>
|
326
334
|
</sections>
|
@@ -395,6 +403,11 @@ RSpec.describe Asciidoctor::Standoc do
|
|
395
403
|
|
396
404
|
[[ABC]]
|
397
405
|
NOTE: This is a note
|
406
|
+
|
407
|
+
[NOTE,keep-separate=true]
|
408
|
+
====
|
409
|
+
XYZ
|
410
|
+
====
|
398
411
|
INPUT
|
399
412
|
#{BLANK_HDR}
|
400
413
|
<preface><foreword id="_" obligation="informative">
|
@@ -408,6 +421,9 @@ RSpec.describe Asciidoctor::Standoc do
|
|
408
421
|
<note id="ABC">
|
409
422
|
<p id="_">This is a note</p>
|
410
423
|
</note>
|
424
|
+
<note id='_'>
|
425
|
+
<p id='_'>XYZ</p>
|
426
|
+
</note>
|
411
427
|
</clause></sections>
|
412
428
|
|
413
429
|
</standard-document>
|
@@ -293,6 +293,35 @@ RSpec.describe Asciidoctor::Standoc do
|
|
293
293
|
OUTPUT
|
294
294
|
end
|
295
295
|
|
296
|
+
it "does not move notes inside preceding blocks, if they are marked as keep-separate" do
|
297
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
298
|
+
#{ASCIIDOC_BLANK_HDR}
|
299
|
+
|
300
|
+
[stem]
|
301
|
+
++++
|
302
|
+
r = 1 %
|
303
|
+
r = 1 %
|
304
|
+
++++
|
305
|
+
|
306
|
+
[NOTE,keep-separate=true]
|
307
|
+
====
|
308
|
+
That formula does not do much
|
309
|
+
====
|
310
|
+
|
311
|
+
Indeed.
|
312
|
+
INPUT
|
313
|
+
#{BLANK_HDR}
|
314
|
+
<sections><formula id="_">
|
315
|
+
<stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>r</mi><mo>=</mo><mn>1</mn><mi>%</mi><mi>r</mi><mo>=</mo><mn>1</mn><mi>%</mi></math></stem></formula>
|
316
|
+
<note id="_">
|
317
|
+
<p id="_">That formula does not do much</p>
|
318
|
+
</note>
|
319
|
+
|
320
|
+
<p id="_">Indeed.</p></sections>
|
321
|
+
</standard-document>
|
322
|
+
OUTPUT
|
323
|
+
end
|
324
|
+
|
296
325
|
it "does not move notes inside preceding blocks, if they are at clause end" do
|
297
326
|
expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
298
327
|
#{ASCIIDOC_BLANK_HDR}
|
@@ -223,7 +223,8 @@ OUTPUT
|
|
223
223
|
expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
224
224
|
#{ASCIIDOC_BLANK_HDR}
|
225
225
|
|
226
|
-
[pseudocode]
|
226
|
+
[pseudocode,subsequence="A"]
|
227
|
+
[%unnumbered]
|
227
228
|
====
|
228
229
|
*A* +
|
229
230
|
[smallcap]#B#
|
@@ -233,7 +234,7 @@ OUTPUT
|
|
233
234
|
INPUT
|
234
235
|
#{BLANK_HDR}
|
235
236
|
<sections>
|
236
|
-
<figure id="_" class="pseudocode"><p id="_"> <strong>A</strong><br/>
|
237
|
+
<figure id="_" subsequence='A' class="pseudocode" unnumbered="true"><p id="_"> <strong>A</strong><br/>
|
237
238
|
<smallcap>B</smallcap></p>
|
238
239
|
<p id="_"> <em>C</em></p></figure>
|
239
240
|
</sections>
|
@@ -231,7 +231,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
231
231
|
== Normative References
|
232
232
|
|
233
233
|
* [[[iso123,ISO 123]]] _Standard_
|
234
|
-
* [[[
|
234
|
+
* [[[iso124,(1)ISO 123]]] _Standard_
|
235
235
|
INPUT
|
236
236
|
#{BLANK_HDR}
|
237
237
|
<sections>
|
@@ -344,7 +344,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
344
344
|
</relation>
|
345
345
|
<place>Geneva</place>
|
346
346
|
</bibitem>
|
347
|
-
<bibitem id='
|
347
|
+
<bibitem id='iso124' type='standard'>
|
348
348
|
<fetched>#{Date.today}</fetched>
|
349
349
|
<title type='title-intro' format='text/plain' language='en' script='Latn'>Rubber latex</title>
|
350
350
|
<title type='title-main' format='text/plain' language='en' script='Latn'>Sampling</title>
|
@@ -543,6 +543,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
543
543
|
<uri>www.iso.org</uri>
|
544
544
|
</organization>
|
545
545
|
</contributor>
|
546
|
+
<!--
|
546
547
|
<contributor>
|
547
548
|
<role type="publisher"/>
|
548
549
|
<organization>
|
@@ -551,6 +552,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
551
552
|
<uri>www.iec.ch</uri>
|
552
553
|
</organization>
|
553
554
|
</contributor>
|
555
|
+
-->
|
554
556
|
<edition>2</edition>
|
555
557
|
<language>en</language>
|
556
558
|
<language>fr</language>
|
@@ -643,6 +645,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
643
645
|
<uri>www.iso.org</uri>
|
644
646
|
</organization>
|
645
647
|
</contributor>
|
648
|
+
<!--
|
646
649
|
<contributor>
|
647
650
|
<role type="publisher"/>
|
648
651
|
<organization>
|
@@ -651,6 +654,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
651
654
|
<uri>www.iec.ch</uri>
|
652
655
|
</organization>
|
653
656
|
</contributor>
|
657
|
+
-->
|
654
658
|
<edition>2</edition>
|
655
659
|
<language>en</language>
|
656
660
|
<language>fr</language>
|
@@ -990,7 +994,7 @@ OUTPUT
|
|
990
994
|
</name>
|
991
995
|
<affiliation>
|
992
996
|
<organization>
|
993
|
-
<name>
|
997
|
+
<name>Internet Engineering Task Force</name>
|
994
998
|
<abbreviation>IETF</abbreviation>
|
995
999
|
</organization>
|
996
1000
|
</affiliation>
|
@@ -1004,12 +1008,19 @@ OUTPUT
|
|
1004
1008
|
</name>
|
1005
1009
|
<affiliation>
|
1006
1010
|
<organization>
|
1007
|
-
<name>
|
1011
|
+
<name>Internet Engineering Task Force</name>
|
1008
1012
|
<abbreviation>IETF</abbreviation>
|
1009
1013
|
</organization>
|
1010
1014
|
</affiliation>
|
1011
1015
|
</person>
|
1012
1016
|
</contributor>
|
1017
|
+
<contributor>
|
1018
|
+
<role type='publisher'/>
|
1019
|
+
<organization>
|
1020
|
+
<name>Internet Engineering Task Force</name>
|
1021
|
+
<abbreviation>IETF</abbreviation>
|
1022
|
+
</organization>
|
1023
|
+
</contributor>
|
1013
1024
|
<language>en</language>
|
1014
1025
|
<script>Latn</script>
|
1015
1026
|
<abstract format="text/plain" language="en" script="Latn">The standardization of network configuration interfaces for use with the Network Configuration Protocol (NETCONF) or the RESTCONF protocol requires a structured and secure operating environment that promotes human usability and multi-vendor interoperability. There is a need for standard mechanisms to restrict NETCONF or RESTCONF protocol access for particular users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content. This document defines such an access control model.This document obsoletes RFC 6536.</abstract>
|
@@ -1043,7 +1054,7 @@ OUTPUT
|
|
1043
1054
|
</name>
|
1044
1055
|
<affiliation>
|
1045
1056
|
<organization>
|
1046
|
-
<name>
|
1057
|
+
<name>Internet Engineering Task Force</name>
|
1047
1058
|
<abbreviation>IETF</abbreviation>
|
1048
1059
|
</organization>
|
1049
1060
|
</affiliation>
|
@@ -1057,12 +1068,19 @@ OUTPUT
|
|
1057
1068
|
</name>
|
1058
1069
|
<affiliation>
|
1059
1070
|
<organization>
|
1060
|
-
<name>
|
1071
|
+
<name>Internet Engineering Task Force</name>
|
1061
1072
|
<abbreviation>IETF</abbreviation>
|
1062
1073
|
</organization>
|
1063
1074
|
</affiliation>
|
1064
1075
|
</person>
|
1065
1076
|
</contributor>
|
1077
|
+
<contributor>
|
1078
|
+
<role type='publisher'/>
|
1079
|
+
<organization>
|
1080
|
+
<name>Internet Engineering Task Force</name>
|
1081
|
+
<abbreviation>IETF</abbreviation>
|
1082
|
+
</organization>
|
1083
|
+
</contributor>
|
1066
1084
|
<language>en</language>
|
1067
1085
|
<script>Latn</script>
|
1068
1086
|
<abstract format="text/plain" language="en" script="Latn">The standardization of network configuration interfaces for use with the Network Configuration Protocol (NETCONF) or the RESTCONF protocol requires a structured and secure operating environment that promotes human usability and multi-vendor interoperability. There is a need for standard mechanisms to restrict NETCONF or RESTCONF protocol access for particular users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content. This document defines such an access control model.This document obsoletes RFC 6536.</abstract>
|