asciidoctor-gb 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.hound.yml +3 -0
- data/.oss-guides.rubocop.yml +1077 -0
- data/.rubocop.ribose.yml +65 -0
- data/.rubocop.tb.yml +640 -0
- data/.rubocop.yml +15 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +11 -0
- data/README.adoc +77 -0
- data/Rakefile +6 -0
- data/asciidoctor-gb.gemspec +52 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/lib/asciidoctor/gb/agencies.rb +186 -0
- data/lib/asciidoctor/gb/converter.rb +179 -0
- data/lib/asciidoctor/gb/front.rb +179 -0
- data/lib/asciidoctor/gb/gbconvert.rb +86 -0
- data/lib/asciidoctor/gb/gbstandard.rng +297 -0
- data/lib/asciidoctor/gb/html/blank.png +0 -0
- data/lib/asciidoctor/gb/html/footer.png +0 -0
- data/lib/asciidoctor/gb/html/gb-logos/gb-standard-db.gif +0 -0
- data/lib/asciidoctor/gb/html/gb-logos/gb-standard-db.png +0 -0
- data/lib/asciidoctor/gb/html/gb-logos/gb-standard-db.svg +1 -0
- data/lib/asciidoctor/gb/html/gb-logos/gb-standard-gb.gif +0 -0
- data/lib/asciidoctor/gb/html/gb-logos/gb-standard-gb.png +0 -0
- data/lib/asciidoctor/gb/html/gb-logos/gb-standard-gb.svg +1 -0
- data/lib/asciidoctor/gb/html/gb-logos/gb-standard-gjb.gif +0 -0
- data/lib/asciidoctor/gb/html/gb-logos/gb-standard-gjb.png +0 -0
- data/lib/asciidoctor/gb/html/gb-logos/gb-standard-gjb.svg +1 -0
- data/lib/asciidoctor/gb/html/gb-logos/gb-standard-gm.gif +0 -0
- data/lib/asciidoctor/gb/html/gb-logos/gb-standard-gm.png +0 -0
- data/lib/asciidoctor/gb/html/gb-logos/gb-standard-gm.svg +1 -0
- data/lib/asciidoctor/gb/html/gb-logos/gb-standard-jjf.gif +0 -0
- data/lib/asciidoctor/gb/html/gb-logos/gb-standard-jjf.png +0 -0
- data/lib/asciidoctor/gb/html/gb-logos/gb-standard-jjf.svg +1 -0
- data/lib/asciidoctor/gb/html/gb-logos/gb-standard-zb.gif +0 -0
- data/lib/asciidoctor/gb/html/gb-logos/gb-standard-zb.png +0 -0
- data/lib/asciidoctor/gb/html/gb-logos/gb-standard-zb.svg +13 -0
- data/lib/asciidoctor/gb/html/gb.css +642 -0
- data/lib/asciidoctor/gb/html/header.html +216 -0
- data/lib/asciidoctor/gb/html/html_gb_intro.html +45 -0
- data/lib/asciidoctor/gb/html/html_gb_titlepage.html +98 -0
- data/lib/asciidoctor/gb/html/htmlstyle.css +187 -0
- data/lib/asciidoctor/gb/html/logo.png +0 -0
- data/lib/asciidoctor/gb/html/word_gb_intro.html +3 -0
- data/lib/asciidoctor/gb/html/word_gb_titlepage.html +234 -0
- data/lib/asciidoctor/gb/html/wordstyle.css +2367 -0
- data/lib/asciidoctor/gb/isodoc.rng +1563 -0
- data/lib/asciidoctor/gb/isostandard.rng +845 -0
- data/lib/asciidoctor/gb/metadata.rb +186 -0
- data/lib/asciidoctor/gb/section_input.rb +168 -0
- data/lib/asciidoctor/gb/section_output.rb +38 -0
- data/lib/asciidoctor/gb/version.rb +5 -0
- data/lib/asciidoctor/gb/xref_gen.rb +25 -0
- data/lib/asciidoctor/gb.rb +7 -0
- data/lib/asciidoctor-gb.rb +4 -0
- metadata +411 -0
@@ -0,0 +1,179 @@
|
|
1
|
+
module Asciidoctor
|
2
|
+
module Gb
|
3
|
+
class Converter < ISO::Converter
|
4
|
+
def metadata_author(_node, xml)
|
5
|
+
xml.contributor do |c|
|
6
|
+
c.role **{ type: "author" }
|
7
|
+
c.organization do |a|
|
8
|
+
a.name "GB"
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def metadata_publisher(_node, xml)
|
14
|
+
xml.contributor do |c|
|
15
|
+
c.role **{ type: "publisher" }
|
16
|
+
c.organization do |a|
|
17
|
+
a.name "GB"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def metadata_copyright(node, xml)
|
23
|
+
from = node.attr("copyright-year") || Date.today.year
|
24
|
+
xml.copyright do |c|
|
25
|
+
c.from from
|
26
|
+
c.owner do |owner|
|
27
|
+
owner.organization do |o|
|
28
|
+
o.name "GB"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def metadata_committee(node, xml)
|
35
|
+
attrs = { type: node.attr("technical-committee-type") }
|
36
|
+
xml.gbcommittee **attr_code(attrs) do |a|
|
37
|
+
a << node.attr("technical-committee")
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def metadata_equivalence(node, xml)
|
42
|
+
isostd = node.attr("iso-standard") || return
|
43
|
+
type = node.attr("equivalence") || "equivalent"
|
44
|
+
m = /^(?<code>[^,]+),?(?<title>.*)$/.match isostd
|
45
|
+
title = m[:title].empty? ? "[not supplied]" : m[:title]
|
46
|
+
xml.relation **{ type: type } do |r|
|
47
|
+
r.bibitem do |b|
|
48
|
+
b.title { |t| t << title }
|
49
|
+
b.docidentifier m[:code]
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def metadata_obsoletes(node, xml)
|
55
|
+
std = node.attr("obsoletes") || return
|
56
|
+
m = /^(?<code>[^,]+),?(?<title>.*)$/.match std
|
57
|
+
title = m[:title].empty? ? "[not supplied]" : m[:title]
|
58
|
+
xml.relation **{ type: "obsoletes" } do |r|
|
59
|
+
r.bibitem do |b|
|
60
|
+
b.title { |t| t << title }
|
61
|
+
b.docidentifier m[:code]
|
62
|
+
end
|
63
|
+
r.bpart node.attr("obsoletes-parts") if node.attr("obsoletes-parts")
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def get_scope(node)
|
68
|
+
unless scope = node.attr("scope")
|
69
|
+
scope = "national"
|
70
|
+
warn "GB: no scope supplied, defaulting to National"
|
71
|
+
end
|
72
|
+
scope
|
73
|
+
end
|
74
|
+
|
75
|
+
def get_prefix(node)
|
76
|
+
scope = get_scope(node)
|
77
|
+
unless prefix = node.attr("prefix")
|
78
|
+
prefix = "GB"
|
79
|
+
scope = "national"
|
80
|
+
warn "GB: no prefix supplied, defaulting to GB"
|
81
|
+
end
|
82
|
+
[scope, prefix]
|
83
|
+
end
|
84
|
+
|
85
|
+
def get_mandate(node)
|
86
|
+
unless mandate = node.attr("mandate")
|
87
|
+
mandate = "mandatory"
|
88
|
+
warn "GB: no mandate supplied, defaulting to mandatory"
|
89
|
+
end
|
90
|
+
mandate
|
91
|
+
end
|
92
|
+
|
93
|
+
def metadata_gbtype(node, xml)
|
94
|
+
xml.gbtype do |t|
|
95
|
+
scope, prefix = get_prefix(node)
|
96
|
+
t.gbscope { |s| s << scope }
|
97
|
+
t.gbprefix { |p| p << prefix }
|
98
|
+
t.gbmandate { |m| m << get_mandate(node) }
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
def metadata_date(node, xml)
|
103
|
+
pubdate = node.attr("published-date")
|
104
|
+
activdate = node.attr("activated-date")
|
105
|
+
xml.date(pubdate, **{ type: "published" }) if pubdate
|
106
|
+
xml.date(activdate, **{ type: "activated" }) if activdate
|
107
|
+
end
|
108
|
+
|
109
|
+
def metadata_gblibraryids(node, xml)
|
110
|
+
ics = node.attr("library-ics")
|
111
|
+
l = node.attr("library-l")
|
112
|
+
if ics || l
|
113
|
+
xml.gblibraryids do |g|
|
114
|
+
xml.ics ics if ics
|
115
|
+
xml.l l if l
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
def metadata(node, xml)
|
121
|
+
title node, xml
|
122
|
+
metadata_id(node, xml)
|
123
|
+
metadata_date(node, xml)
|
124
|
+
metadata_author(node, xml)
|
125
|
+
metadata_publisher(node, xml)
|
126
|
+
xml.language (node.attr("language") || "zh")
|
127
|
+
xml.script (node.attr("script") || "Hans")
|
128
|
+
metadata_status(node, xml)
|
129
|
+
metadata_copyright(node, xml)
|
130
|
+
metadata_equivalence(node, xml)
|
131
|
+
metadata_obsoletes(node, xml)
|
132
|
+
metadata_committee(node, xml)
|
133
|
+
metadata_gbtype(node, xml)
|
134
|
+
metadata_gblibraryids(node, xml)
|
135
|
+
end
|
136
|
+
|
137
|
+
def title(node, xml)
|
138
|
+
["en", "zh"].each do |lang|
|
139
|
+
xml.title do |t|
|
140
|
+
at = { language: lang, format: "plain" }
|
141
|
+
node.attr("title-intro-#{lang}") and
|
142
|
+
t.title_intro **attr_code(at) do |t1|
|
143
|
+
t1 << node.attr("title-intro-#{lang}")
|
144
|
+
end
|
145
|
+
t.title_main **attr_code(at) do |t1|
|
146
|
+
t1 << node.attr("title-main-#{lang}")
|
147
|
+
end
|
148
|
+
node.attr("title-part-#{lang}") and
|
149
|
+
t.title_part **attr_code(at) do |t1|
|
150
|
+
t1 << node.attr("title-part-#{lang}")
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
def title_intro_validate(root)
|
157
|
+
title_intro_en = root.at("//title-intro[@language='en']")
|
158
|
+
title_intro_zh = root.at("//title-intro[@language='zh']")
|
159
|
+
if title_intro_en.nil? && !title_intro_zh.nil?
|
160
|
+
warn "No English Title Intro!"
|
161
|
+
end
|
162
|
+
if !title_intro_en.nil? && title_intro_zh.nil?
|
163
|
+
warn "No Chinese Title Intro!"
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
def title_part_validate(root)
|
168
|
+
title_part_en = root.at("//title-part[@language='en']")
|
169
|
+
title_part_zh = root.at("//title-part[@language='zh']")
|
170
|
+
if title_part_en.nil? && !title_part_zh.nil?
|
171
|
+
warn "No English Title Part!"
|
172
|
+
end
|
173
|
+
if !title_part_en.nil? && title_part_zh.nil?
|
174
|
+
warn "No Chinese Title Part!"
|
175
|
+
end
|
176
|
+
end
|
177
|
+
end
|
178
|
+
end
|
179
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
require "isodoc"
|
2
|
+
require_relative "./xref_gen.rb"
|
3
|
+
require_relative "./metadata.rb"
|
4
|
+
require_relative "./agencies.rb"
|
5
|
+
require_relative "./section_output.rb"
|
6
|
+
|
7
|
+
module Asciidoctor
|
8
|
+
module Gb
|
9
|
+
# A {Converter} implementation that generates GB output, and a document
|
10
|
+
# schema encapsulation of the document for validation
|
11
|
+
class GbConvert < IsoDoc::Convert
|
12
|
+
def initialize(options)
|
13
|
+
super
|
14
|
+
end
|
15
|
+
|
16
|
+
def error_parse(node, out)
|
17
|
+
# catch elements not defined in ISO
|
18
|
+
case node.name
|
19
|
+
when "string" then string_parse(node, out)
|
20
|
+
else
|
21
|
+
super
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def string_parse(node, out)
|
26
|
+
if node["script"] == "Hant"
|
27
|
+
out.span **{ class: "Hant" } do |s|
|
28
|
+
node.children.each { |c| parse(c, s) }
|
29
|
+
end
|
30
|
+
else
|
31
|
+
node.children.each { |c| parse(c, out) }
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def fileloc(loc)
|
36
|
+
File.join(File.dirname(__FILE__), loc)
|
37
|
+
end
|
38
|
+
|
39
|
+
def generate_header(filename, dir)
|
40
|
+
super
|
41
|
+
system "cp #{fileloc(File.join('html', 'blank.png'))} blank.png"
|
42
|
+
end
|
43
|
+
|
44
|
+
def cleanup(docxml)
|
45
|
+
super
|
46
|
+
# intro_cleanup(docxml)
|
47
|
+
terms_cleanup(docxml)
|
48
|
+
end
|
49
|
+
|
50
|
+
def term_merge(docxml, term_class)
|
51
|
+
docxml.xpath("//p[@class = '#{term_class}']").each do |t|
|
52
|
+
t1 = t.next_element || next
|
53
|
+
if t1.name == "p" && t1["class"] == term_class
|
54
|
+
t.add_child(" ")
|
55
|
+
t.add_child(t1.remove.children)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def terms_cleanup(docxml)
|
61
|
+
term_merge(docxml, "Terms")
|
62
|
+
term_merge(docxml, "AltTerms")
|
63
|
+
term_merge(docxml, "DeprecatedTerms")
|
64
|
+
docxml
|
65
|
+
end
|
66
|
+
|
67
|
+
def intro_cleanup(docxml)
|
68
|
+
# insert tab for purposes of ToC lining up
|
69
|
+
docxml.xpath("//h1[@class = 'IntroTitle']").each do |h1|
|
70
|
+
if h1.content == "引言"
|
71
|
+
h1.add_child('<span style="mso-tab-count:1">  </span>')
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def toWord(result, filename, dir)
|
77
|
+
result = from_xhtml(word_cleanup(to_xhtml(result)))
|
78
|
+
result = populate_template(result, :word)
|
79
|
+
Html2Doc.process(result, filename: filename, stylesheet: @wordstylesheet,
|
80
|
+
header_file: "header.html", dir: dir,
|
81
|
+
asciimathdelims: [@openmathdelim, @closemathdelim],
|
82
|
+
liststyles: {ul: "l7", ol: "l10"})
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
@@ -0,0 +1,297 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
3
|
+
<!-- default namespace = "http://riboseinc.com/gbstandard" -->
|
4
|
+
<!--
|
5
|
+
Currently we inherit from a namespaced grammar, isostandard. Unless we inherit from isodoc,
|
6
|
+
we cannot have a new default namespace: we will end up with a grammar with two different
|
7
|
+
namespaces, one for isostandard and one for csd additions. And we do not want that.
|
8
|
+
-->
|
9
|
+
<include href="isostandard.rng">
|
10
|
+
<start>
|
11
|
+
<ref name="gb-standard"/>
|
12
|
+
</start>
|
13
|
+
<define name="language">
|
14
|
+
<element name="language">
|
15
|
+
<choice>
|
16
|
+
<value>zh</value>
|
17
|
+
<value>en</value>
|
18
|
+
</choice>
|
19
|
+
</element>
|
20
|
+
</define>
|
21
|
+
<define name="script">
|
22
|
+
<element name="script">
|
23
|
+
<choice>
|
24
|
+
<value>Hans</value>
|
25
|
+
<value>Latn</value>
|
26
|
+
</choice>
|
27
|
+
</element>
|
28
|
+
</define>
|
29
|
+
<define name="preferred">
|
30
|
+
<element name="preferred">
|
31
|
+
<ref name="ZhEnLocalizedString"/>
|
32
|
+
</element>
|
33
|
+
</define>
|
34
|
+
<define name="admitted">
|
35
|
+
<element name="admitted">
|
36
|
+
<ref name="ZhEnLocalizedString"/>
|
37
|
+
</element>
|
38
|
+
</define>
|
39
|
+
<define name="deprecates">
|
40
|
+
<element name="deprecates">
|
41
|
+
<ref name="ZhEnLocalizedString"/>
|
42
|
+
</element>
|
43
|
+
</define>
|
44
|
+
<define name="term">
|
45
|
+
<element name="term">
|
46
|
+
<optional>
|
47
|
+
<attribute name="id">
|
48
|
+
<data type="ID"/>
|
49
|
+
</attribute>
|
50
|
+
</optional>
|
51
|
+
<oneOrMore>
|
52
|
+
<ref name="preferred"/>
|
53
|
+
</oneOrMore>
|
54
|
+
<zeroOrMore>
|
55
|
+
<ref name="admitted"/>
|
56
|
+
</zeroOrMore>
|
57
|
+
<zeroOrMore>
|
58
|
+
<ref name="deprecates"/>
|
59
|
+
</zeroOrMore>
|
60
|
+
<optional>
|
61
|
+
<ref name="termdomain"/>
|
62
|
+
</optional>
|
63
|
+
<ref name="definition"/>
|
64
|
+
<zeroOrMore>
|
65
|
+
<ref name="termnote"/>
|
66
|
+
</zeroOrMore>
|
67
|
+
<zeroOrMore>
|
68
|
+
<ref name="termexample"/>
|
69
|
+
</zeroOrMore>
|
70
|
+
<zeroOrMore>
|
71
|
+
<ref name="termsource"/>
|
72
|
+
</zeroOrMore>
|
73
|
+
</element>
|
74
|
+
</define>
|
75
|
+
<define name="BibliographicItem">
|
76
|
+
<optional>
|
77
|
+
<attribute name="type">
|
78
|
+
<ref name="BibItemType"/>
|
79
|
+
</attribute>
|
80
|
+
</optional>
|
81
|
+
<choice>
|
82
|
+
<oneOrMore>
|
83
|
+
<ref name="btitle"/>
|
84
|
+
</oneOrMore>
|
85
|
+
<ref name="formattedref"/>
|
86
|
+
</choice>
|
87
|
+
<optional>
|
88
|
+
<ref name="source"/>
|
89
|
+
</optional>
|
90
|
+
<zeroOrMore>
|
91
|
+
<ref name="docidentifier"/>
|
92
|
+
</zeroOrMore>
|
93
|
+
<zeroOrMore>
|
94
|
+
<ref name="bdate"/>
|
95
|
+
</zeroOrMore>
|
96
|
+
<zeroOrMore>
|
97
|
+
<ref name="contributor"/>
|
98
|
+
</zeroOrMore>
|
99
|
+
<optional>
|
100
|
+
<ref name="edition"/>
|
101
|
+
</optional>
|
102
|
+
<zeroOrMore>
|
103
|
+
<ref name="biblionote"/>
|
104
|
+
</zeroOrMore>
|
105
|
+
<zeroOrMore>
|
106
|
+
<ref name="partof"/>
|
107
|
+
</zeroOrMore>
|
108
|
+
<zeroOrMore>
|
109
|
+
<ref name="language"/>
|
110
|
+
</zeroOrMore>
|
111
|
+
<zeroOrMore>
|
112
|
+
<ref name="script"/>
|
113
|
+
</zeroOrMore>
|
114
|
+
<optional>
|
115
|
+
<ref name="abstract"/>
|
116
|
+
</optional>
|
117
|
+
<optional>
|
118
|
+
<ref name="status"/>
|
119
|
+
</optional>
|
120
|
+
<optional>
|
121
|
+
<ref name="copyright"/>
|
122
|
+
</optional>
|
123
|
+
<zeroOrMore>
|
124
|
+
<ref name="docrelation"/>
|
125
|
+
</zeroOrMore>
|
126
|
+
<optional>
|
127
|
+
<ref name="editorialgroup"/>
|
128
|
+
</optional>
|
129
|
+
<optional>
|
130
|
+
<ref name="gbcommittee"/>
|
131
|
+
</optional>
|
132
|
+
<optional>
|
133
|
+
<ref name="gbtype"/>
|
134
|
+
</optional>
|
135
|
+
<optional>
|
136
|
+
<ref name="gblibraryids"/>
|
137
|
+
</optional>
|
138
|
+
</define>
|
139
|
+
<define name="BibData">
|
140
|
+
<optional>
|
141
|
+
<attribute name="type">
|
142
|
+
<ref name="BibItemType"/>
|
143
|
+
</attribute>
|
144
|
+
</optional>
|
145
|
+
<oneOrMore>
|
146
|
+
<ref name="btitle"/>
|
147
|
+
</oneOrMore>
|
148
|
+
<optional>
|
149
|
+
<ref name="formattedref"/>
|
150
|
+
</optional>
|
151
|
+
<optional>
|
152
|
+
<ref name="source"/>
|
153
|
+
</optional>
|
154
|
+
<zeroOrMore>
|
155
|
+
<ref name="docidentifier"/>
|
156
|
+
</zeroOrMore>
|
157
|
+
<zeroOrMore>
|
158
|
+
<ref name="bdate"/>
|
159
|
+
</zeroOrMore>
|
160
|
+
<zeroOrMore>
|
161
|
+
<ref name="contributor"/>
|
162
|
+
</zeroOrMore>
|
163
|
+
<optional>
|
164
|
+
<ref name="edition"/>
|
165
|
+
</optional>
|
166
|
+
<zeroOrMore>
|
167
|
+
<ref name="biblionote"/>
|
168
|
+
</zeroOrMore>
|
169
|
+
<zeroOrMore>
|
170
|
+
<ref name="partof"/>
|
171
|
+
</zeroOrMore>
|
172
|
+
<zeroOrMore>
|
173
|
+
<ref name="language"/>
|
174
|
+
</zeroOrMore>
|
175
|
+
<zeroOrMore>
|
176
|
+
<ref name="script"/>
|
177
|
+
</zeroOrMore>
|
178
|
+
<optional>
|
179
|
+
<ref name="abstract"/>
|
180
|
+
</optional>
|
181
|
+
<optional>
|
182
|
+
<ref name="status"/>
|
183
|
+
</optional>
|
184
|
+
<ref name="copyright"/>
|
185
|
+
<zeroOrMore>
|
186
|
+
<ref name="docrelation"/>
|
187
|
+
</zeroOrMore>
|
188
|
+
<optional>
|
189
|
+
<ref name="editorialgroup"/>
|
190
|
+
</optional>
|
191
|
+
<ref name="gbcommittee"/>
|
192
|
+
<ref name="gbtype"/>
|
193
|
+
<optional>
|
194
|
+
<ref name="gblibraryids"/>
|
195
|
+
</optional>
|
196
|
+
</define>
|
197
|
+
</include>
|
198
|
+
<!-- identical structure to iso-standard -->
|
199
|
+
<define name="gb-standard">
|
200
|
+
<element name="gb-standard">
|
201
|
+
<ref name="bibdata"/>
|
202
|
+
<optional>
|
203
|
+
<ref name="version"/>
|
204
|
+
</optional>
|
205
|
+
<ref name="foreword"/>
|
206
|
+
<optional>
|
207
|
+
<ref name="introduction"/>
|
208
|
+
</optional>
|
209
|
+
<oneOrMore>
|
210
|
+
<ref name="sections"/>
|
211
|
+
</oneOrMore>
|
212
|
+
<zeroOrMore>
|
213
|
+
<ref name="annex"/>
|
214
|
+
</zeroOrMore>
|
215
|
+
<oneOrMore>
|
216
|
+
<ref name="references"/>
|
217
|
+
</oneOrMore>
|
218
|
+
</element>
|
219
|
+
</define>
|
220
|
+
<define name="gblibraryids">
|
221
|
+
<element name="gblibraryids">
|
222
|
+
<ref name="gblibraryidics"/>
|
223
|
+
<ref name="gblibraryidl"/>
|
224
|
+
</element>
|
225
|
+
</define>
|
226
|
+
<define name="gblibraryidics">
|
227
|
+
<element name="ics">
|
228
|
+
<text/>
|
229
|
+
</element>
|
230
|
+
</define>
|
231
|
+
<define name="gblibraryidl">
|
232
|
+
<element name="l">
|
233
|
+
<text/>
|
234
|
+
</element>
|
235
|
+
</define>
|
236
|
+
<define name="gbcommittee">
|
237
|
+
<element name="gbcommittee">
|
238
|
+
<attribute name="type">
|
239
|
+
<choice>
|
240
|
+
<value>technical</value>
|
241
|
+
<value>provisional</value>
|
242
|
+
</choice>
|
243
|
+
</attribute>
|
244
|
+
<text/>
|
245
|
+
</element>
|
246
|
+
</define>
|
247
|
+
<define name="gbtype">
|
248
|
+
<element name="gbtype">
|
249
|
+
<ref name="gbscope"/>
|
250
|
+
<ref name="gbprefix"/>
|
251
|
+
<ref name="gbmandate"/>
|
252
|
+
</element>
|
253
|
+
</define>
|
254
|
+
<define name="gbscope">
|
255
|
+
<element name="gbscope">
|
256
|
+
<choice>
|
257
|
+
<value>national</value>
|
258
|
+
<value>sector</value>
|
259
|
+
<value>professional</value>
|
260
|
+
<value>local</value>
|
261
|
+
<value>enterprise</value>
|
262
|
+
</choice>
|
263
|
+
</element>
|
264
|
+
</define>
|
265
|
+
<define name="gbmandate">
|
266
|
+
<element name="gbmandate">
|
267
|
+
<choice>
|
268
|
+
<value>mandatory</value>
|
269
|
+
<value>recommended</value>
|
270
|
+
<value>guidelines</value>
|
271
|
+
</choice>
|
272
|
+
</element>
|
273
|
+
</define>
|
274
|
+
<define name="gbprefix">
|
275
|
+
<element name="gbprefix">
|
276
|
+
<text/>
|
277
|
+
</element>
|
278
|
+
</define>
|
279
|
+
<define name="ZhEnLocalizedString">
|
280
|
+
<!-- multiple languages and scripts possible: comma delimit them if so -->
|
281
|
+
<attribute name="language">
|
282
|
+
<choice>
|
283
|
+
<value>zh</value>
|
284
|
+
<value>en</value>
|
285
|
+
</choice>
|
286
|
+
</attribute>
|
287
|
+
<optional>
|
288
|
+
<attribute name="script">
|
289
|
+
<choice>
|
290
|
+
<value>Hans</value>
|
291
|
+
<value>Latn</value>
|
292
|
+
</choice>
|
293
|
+
</attribute>
|
294
|
+
</optional>
|
295
|
+
<text/>
|
296
|
+
</define>
|
297
|
+
</grammar>
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 133.2 66.6"><title>gb-standard-db</title><path d="M56.5,0H0V66.6H56.5A8.5,8.5,0,0,0,65,58.1V8.5A8.5,8.5,0,0,0,56.5,0ZM42.4,56.3a2.9,2.9,0,0,1-2.9,2.9H22.8V7.5H39.5a2.8,2.8,0,0,1,2.9,2.8Z"/><path d="M133.2,24.7V8.5A8.5,8.5,0,0,0,124.7,0H68.2V66.6h56.5a8.5,8.5,0,0,0,8.5-8.5V41.3a8.6,8.6,0,0,0-6.9-8.3A8.6,8.6,0,0,0,133.2,24.7ZM110.6,56.3a2.9,2.9,0,0,1-2.9,2.9H91.1v-22h16.6a2.9,2.9,0,0,1,2.9,2.8Zm0-29.6a2.9,2.9,0,0,1-2.9,2.9H91.1V7.5h16.6a2.8,2.8,0,0,1,2.9,2.8Z"/></svg>
|
Binary file
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 232.1 117"><defs><style>.cls-1{fill:#fff;}.cls-1,.cls-2,.cls-3{stroke:#000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.32px;}.cls-3{fill:none;}</style></defs><title>gb-standard-gb</title><path class="cls-1" d="M201.6,36.5c0,5.6-4.3,8.4-8.8,8.4H147.9L136,58.5h55.2c14,0,22.7-9.1,23.7-19.8.7-6.5-.9-14.1-6-19l-9.6,11A7.6,7.6,0,0,1,201.6,36.5Z"/><path class="cls-1" d="M133.6,102.7V14.6h61c6.4,0,11,2,14.3,5.1L218.1,9C212.5,4.1,204.4.7,192.8.7H120.1V116.3l13.6-13.6Z"/><path class="cls-1" d="M216.6,81.1c0-11.9-7.1-16-7.1-16a82,82,0,0,1-9.5,9.5,6.1,6.1,0,0,1,2.3,5c0,3.3-.7,8.9-12.3,8.9H147.9l-14.2,14.2h50.8C203.9,102.7,216.6,95.7,216.6,81.1Z"/><path class="cls-2" d="M223.1,56.7s8.3-11.6,7-23.5c-.8-7.1-3.8-17.2-12-24.2l-9.2,10.7c5.1,4.9,6.7,12.5,6,19-1,10.7-9.7,19.8-23.7,19.8H136l11.9-13.6V28.6h44.9a9.4,9.4,0,0,1,6.5,2.1l9.6-11c-3.3-3.1-7.9-5.1-14.3-5.1h-61v88.1h.1l14.2-14.2V72.8h44.9c3.5,0,5.8.7,7.2,1.8a82,82,0,0,0,9.5-9.5s7.1,4.1,7.1,16c0,14.6-12.7,21.6-32.1,21.6H133.7l-13.6,13.6h72.7c20.6,0,35-13.6,37.4-25.5S232.1,67,223.1,56.7Z"/><line class="cls-3" x1="133.6" y1="14.6" x2="120.1" y2="0.7"/><polygon class="cls-2" points="70.9 59.6 57.8 74.7 85.1 74.7 98.8 59.6 70.9 59.6"/><path class="cls-2" d="M52,15.9c-8.8,0-35,9.3-36,38-.6,16,4.3,28.2,11.3,36.3l10.8-9.8c-5.2-4.8-9.2-12.2-9.2-23.1,0-21.4,21-27.3,28.9-27.3H113L98.8,15.9Z"/><path class="cls-1" d="M49.8,101.6h49v-42L85.1,74.7V88.5H57.8a31,31,0,0,1-19.7-8.1L27.3,90.2C33.8,97.6,42.2,101.6,49.8,101.6Z"/><polygon class="cls-1" points="57.8 45.4 57.8 74.7 70.9 59.6 98.8 59.6 113 45.4 85.1 45.4 57.8 45.4"/><path class="cls-2" d="M98.8,101.6h-49c-7.6,0-16-4-22.5-11.4L17,99.5c9.3,10.1,22.7,16.8,40.8,16.8H113V45.4L98.8,59.6Z"/><path class="cls-1" d="M16,53.9c1-28.7,27.2-38,36-38H98.8L113,30V.7H57.8C34.2.7.7,22,.7,52.9.7,69.8,5.8,87.2,17,99.5l10.3-9.3C20.3,82.1,15.4,69.9,16,53.9Z"/><line class="cls-3" x1="57.8" y1="45.4" x2="70.9" y2="59.6"/><line class="cls-3" x1="85.1" y1="88.5" x2="98.8" y2="101.6"/><line class="cls-3" x1="98.8" y1="15.9" x2="113" y2="0.7"/></svg>
|
Binary file
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 232.2 88.4"><defs><style>.cls-1{fill:#fff;}.cls-1,.cls-2,.cls-3{stroke:#000;stroke-linecap:round;stroke-linejoin:round;}.cls-3{fill:none;}</style></defs><title>gb-standard-gjb</title><path class="cls-1" d="M209.1,27.6c0,4.2-3.3,6.4-6.7,6.4H168.5l-9,10.2h41.7c10.6,0,17.2-6.9,18-14.9.5-4.9-.7-10.7-4.6-14.4l-7.2,8.3A5.9,5.9,0,0,1,209.1,27.6Z"/><path class="cls-1" d="M157.7,77.6V11h46.1a15.4,15.4,0,0,1,10.8,3.9l7-8.1C217.3,3.1,211.2.5,202.4.5H147.5V87.9l10.3-10.3Z"/><path class="cls-1" d="M220.4,61.3c0-9-5.3-12.1-5.3-12.1a70.7,70.7,0,0,1-7.2,7.2,4.5,4.5,0,0,1,1.7,3.7c0,2.5-.5,6.8-9.3,6.8H168.5L157.8,77.6h38.4C210.9,77.6,220.4,72.3,220.4,61.3Z"/><path class="cls-2" d="M225.4,42.9s6.2-8.8,5.2-17.8c-.6-5.4-2.8-13-9-18.3l-7,8.1c3.9,3.7,5.1,9.5,4.6,14.4-.8,8-7.4,14.9-18,14.9H159.5l9-10.2V21.6h33.9a7.5,7.5,0,0,1,5,1.6l7.2-8.3A15.4,15.4,0,0,0,203.8,11H157.7V77.6h.1l10.7-10.7V55h33.9a9.1,9.1,0,0,1,5.5,1.4,70.7,70.7,0,0,0,7.2-7.2s5.3,3.1,5.3,12.1c0,11-9.5,16.3-24.2,16.3H157.8L147.5,87.9h54.9c15.6,0,26.5-10.3,28.3-19.3S232.1,50.6,225.4,42.9Z"/><line class="cls-3" x1="157.7" y1="11" x2="147.5" y2="0.5"/><path class="cls-2" d="M121.4,87.9c10.3,0,20.3-12.1,20.3-24.5V.5h-21V57.6c0,3.9,0,9.3-7.3,9.3H87.7v21h33.7Z"/><path class="cls-1" d="M120.7,57.6c0,3.9,0,9.3-7.3,9.3H87.7v21L98.8,77.4h19.3c8.3,0,13.3-6,13.3-19V11L141.7.5h-21Z"/><line class="cls-3" x1="131.4" y1="11" x2="120.7" y2="0.5"/><line class="cls-3" x1="98.8" y1="77.4" x2="87.7" y2="66.9"/><polygon class="cls-2" points="51.4 45.1 41.5 56.5 62.2 56.5 72.5 45.1 51.4 45.1"/><path class="cls-2" d="M39.3,12c-6.6,0-26.5,7-27.2,28.7-.4,12.1,3.2,21.4,8.5,27.4l8.2-7.3c-3.9-3.7-7-9.3-7-17.5,0-16.2,15.9-20.6,21.9-20.6H83.3L72.6,12Z"/><path class="cls-1" d="M37.6,76.7h35V45.1L62.2,56.5V66.9H43.7a23.8,23.8,0,0,1-14.9-6.1l-8.2,7.3C25.6,73.8,31.9,76.7,37.6,76.7Z"/><polygon class="cls-1" points="41.5 34.3 41.5 56.5 51.4 45.1 72.5 45.1 83.3 34.3 62.2 34.3 41.5 34.3"/><path class="cls-2" d="M72.6,76.7h-35c-5.7,0-12-2.9-17-8.6l-7.7,7.1c7,7.7,17.1,12.7,30.8,12.7H83.3V34.3L72.6,45.1Z"/><path class="cls-1" d="M12.1,40.7C12.8,19,32.7,12,39.3,12H72.6L83.3,22.7V.5H43.7C25.9.5.5,16.6.5,40c0,12.8,3.9,25.9,12.4,35.2l7.7-7.1C15.3,62.1,11.7,52.8,12.1,40.7Z"/><line class="cls-3" x1="41.5" y1="34.3" x2="51.4" y2="45.1"/><line class="cls-3" x1="62.2" y1="66.9" x2="72.6" y2="76.7"/><line class="cls-3" x1="72.6" y1="12" x2="83.3" y2="0.5"/></svg>
|
Binary file
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 187.2 95.1"><title>gb-standard-gm</title><polygon points="160 0 141.8 32.9 123.6 0 96.3 0 96.3 11.3 96.3 95.1 123.6 95.1 123.6 60.7 125 63.3 141.8 93.6 158.5 63.3 160 60.7 160 95.1 187.2 95.1 187.2 11.3 187.2 0 160 0"/><path d="M81.3,0H9.9A10,10,0,0,0,0,9.9V85.2a9.9,9.9,0,0,0,9.9,9.9h43a9.9,9.9,0,0,0,6.8-2.7v2.7H91.2V43.2H48.8v9.5H59.7V78.9A5.7,5.7,0,0,1,54,84.5H37.2a5.7,5.7,0,0,1-5.7-5.6V16.3a5.8,5.8,0,0,1,5.7-5.7H54a5.8,5.8,0,0,1,5.7,5.7V31.2H91.2V9.9A10,10,0,0,0,81.3,0Z"/></svg>
|
Binary file
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 226.8 89.6"><defs><style>.cls-1,.cls-2,.cls-3{stroke:#000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.2px;}.cls-2{fill:#fff;}.cls-3{fill:none;}</style></defs><title>gb-standard-jjf</title><polygon class="cls-1" points="84.3 12.3 75.1 23.9 144.4 23.9 144.4 0.6 133.7 12.3 84.3 12.3"/><polygon class="cls-2" points="75.1 23.9 84.3 12.3 133.7 12.3 144.4 0.6 75.1 0.6 75.1 23.9"/><path class="cls-2" d="M92,73.6c2.6,2.2,6.2,3.4,11.3,3.4,13.4,0,19.1-7.3,19.1-22.2V13.5L110.7,23.7V62s-1,4.6-5.5,4.6a7.5,7.5,0,0,1-3.9-1h0Z" transform="translate(0)"/><path class="cls-1" d="M86.8,57c0,7.1,1.2,13,5.2,16.6l9.3-8h0c-1.9-1.1-2.8-3.3-2.8-6.2V44L86.8,51.7Z" transform="translate(0)"/><path class="cls-1" d="M110.7,12.3V23.7l11.7-10.2V54.8c0,14.9-5.7,22.2-19.1,22.2-5.1,0-8.7-1.2-11.3-3.4l-7.9,6.8c5,4.5,12,7.4,20.8,7.4,19,0,29.1-14.2,29.1-25.8V12.3Z" transform="translate(0)"/><path class="cls-2" d="M86.8,57V51.7L98.5,44H75.1V59.4a28.7,28.7,0,0,0,9,21L92,73.6C88,70,86.8,64.1,86.8,57Z" transform="translate(0)"/><polyline class="cls-3" points="88.4 53.6 86.8 51.7 75.1 44"/><line class="cls-3" x1="84.3" y1="12.3" x2="75.1" y2="0.6"/><polygon class="cls-1" points="9.8 12.3 0.6 23.9 69.9 23.9 69.9 0.6 59.1 12.3 9.8 12.3"/><polygon class="cls-2" points="0.6 23.9 9.8 12.3 59.1 12.3 69.9 0.6 0.6 0.6 0.6 23.9"/><path class="cls-2" d="M17.5,73.6C20,75.8,23.7,77,28.8,77c13.4,0,19-7.3,19-22.2V13.5L36.2,23.7V62s-1.1,4.6-5.5,4.6a8.2,8.2,0,0,1-4-1h0Z" transform="translate(0)"/><path class="cls-1" d="M12.3,57c0,7.1,1.2,13,5.2,16.6l9.2-8h0c-1.8-1.1-2.8-3.3-2.8-6.2V44L12.3,51.7Z" transform="translate(0)"/><path class="cls-1" d="M36.2,12.3V23.7L47.8,13.5V54.8c0,14.9-5.6,22.2-19,22.2-5.1,0-8.8-1.2-11.3-3.4L9.6,80.4c5,4.5,12,7.4,20.7,7.4,19,0,29.2-14.2,29.2-25.8V12.3Z" transform="translate(0)"/><path class="cls-2" d="M12.3,57V51.7L23.9,44H.6V59.4a28.4,28.4,0,0,0,9,21l7.9-6.8C13.5,70,12.3,64.1,12.3,57Z" transform="translate(0)"/><polyline class="cls-3" points="13.9 53.6 12.3 51.7 0.6 44"/><line class="cls-3" x1="9.8" y1="12.3" x2="0.6" y2="0.6"/><polygon class="cls-1" points="226.2 0.6 173.4 0.6 152.4 0.6 149.1 0.6 149.1 89 173.4 89 173.4 24.9 226.2 24.9 226.2 0.6"/><rect class="cls-1" x="161.3" y="36.6" width="64.9" height="24.33"/><polygon class="cls-2" points="162.1 48.8 216.1 48.8 226.2 36.6 173.4 36.6 162.1 48.8"/><polygon class="cls-2" points="152.4 0.6 149.1 0.6 149.1 89 161.3 79.1 161.3 12.3 216.8 12.3 226.2 0.6 173.4 0.6 152.4 0.6"/><line class="cls-3" x1="161.3" y1="12.3" x2="149.1" y2="0.6"/></svg>
|
Binary file
|
Binary file
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<!-- Generator: Adobe Illustrator 22.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
3
|
+
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
4
|
+
viewBox="0 0 157.1 81.9" style="enable-background:new 0 0 157.1 81.9;" xml:space="preserve">
|
5
|
+
<g>
|
6
|
+
<rect x="80.8" width="32.2" height="81.9"/>
|
7
|
+
<polygon points="74.9,46.2 42.7,81.9 74.9,81.9 "/>
|
8
|
+
<polygon points="33.6,0 0,0 0,37.8 "/>
|
9
|
+
<path d="M157.1,61.1c0-8.6-6-17.5-15.4-21c7.7-1.1,14.6-10.4,14.6-21.2c0-10.8-9.5-19-27.7-19h-11.7v81.1
|
10
|
+
c5.3,0.4,11.4,0.8,17.7,0.8C153,81.9,157.1,69.8,157.1,61.1z"/>
|
11
|
+
<polygon points="75.6,0 40.6,0 0,81.9 35,81.9 "/>
|
12
|
+
</g>
|
13
|
+
</svg>
|