metanorma-ogc 2.4.7 → 2.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +2 -8
- data/lib/isodoc/ogc/html/htmlstyle.css +8 -0
- data/lib/isodoc/ogc/i18n-en.yaml +1 -0
- data/lib/isodoc/ogc/ogc.abstract-specification-topic.xsl +7 -4
- data/lib/isodoc/ogc/ogc.best-practice.xsl +7 -4
- data/lib/isodoc/ogc/ogc.change-request-supporting-document.xsl +7 -4
- data/lib/isodoc/ogc/ogc.community-practice.xsl +7 -4
- data/lib/isodoc/ogc/ogc.community-standard.xsl +7 -4
- data/lib/isodoc/ogc/ogc.discussion-paper.xsl +7 -4
- data/lib/isodoc/ogc/ogc.draft-standard.xsl +7 -4
- data/lib/isodoc/ogc/ogc.engineering-report.xsl +7 -4
- data/lib/isodoc/ogc/ogc.other.xsl +7 -4
- data/lib/isodoc/ogc/ogc.policy.xsl +7 -4
- data/lib/isodoc/ogc/ogc.reference-model.xsl +7 -4
- data/lib/isodoc/ogc/ogc.release-notes.xsl +7 -4
- data/lib/isodoc/ogc/ogc.standard.xsl +7 -4
- data/lib/isodoc/ogc/ogc.test-suite.xsl +7 -4
- data/lib/isodoc/ogc/ogc.user-guide.xsl +7 -4
- data/lib/isodoc/ogc/ogc.white-paper.xsl +7 -4
- data/lib/isodoc/ogc/presentation_sections.rb +112 -0
- data/lib/isodoc/ogc/presentation_xml_convert.rb +79 -104
- data/lib/metanorma/ogc/basicdoc.rng +117 -25
- data/lib/metanorma/ogc/biblio-standoc.rng +44 -1
- data/lib/metanorma/ogc/biblio.rng +11 -0
- data/lib/metanorma/ogc/cleanup.rb +9 -8
- data/lib/metanorma/ogc/converter.rb +5 -2
- data/lib/metanorma/ogc/isodoc.rng +10 -64
- data/lib/metanorma/ogc/reqt.rng +0 -16
- data/lib/metanorma/ogc/version.rb +1 -1
- data/metanorma-ogc.gemspec +1 -1
- metadata +5 -4
@@ -10197,14 +10197,16 @@
|
|
10197
10197
|
|
10198
10198
|
<xsl:template match="*[local-name() = 'annex']">
|
10199
10199
|
<fo:block break-after="page"/>
|
10200
|
-
<fo:block
|
10200
|
+
<fo:block>
|
10201
10201
|
|
10202
10202
|
<xsl:call-template name="setBlockSpanAll"/>
|
10203
10203
|
|
10204
10204
|
<xsl:call-template name="refine_annex_style"/>
|
10205
10205
|
|
10206
10206
|
</fo:block>
|
10207
|
-
<
|
10207
|
+
<fo:block id="{@id}">
|
10208
|
+
<xsl:apply-templates/>
|
10209
|
+
</fo:block>
|
10208
10210
|
</xsl:template>
|
10209
10211
|
|
10210
10212
|
<xsl:template name="refine_annex_style">
|
@@ -10905,6 +10907,7 @@
|
|
10905
10907
|
$namespace = 'mpfd' or $namespace = 'ogc' or $namespace = 'ogc-white-paper' -->
|
10906
10908
|
<!-- Example: [1] ISO 9:1995, Information and documentation – Transliteration of Cyrillic characters into Latin characters – Slavic and non-Slavic languages -->
|
10907
10909
|
<fo:list-block id="{@id}" xsl:use-attribute-sets="bibitem-non-normative-list-style">
|
10910
|
+
|
10908
10911
|
<fo:list-item>
|
10909
10912
|
<fo:list-item-label end-indent="label-end()">
|
10910
10913
|
<fo:block role="SKIP">
|
@@ -11108,10 +11111,10 @@
|
|
11108
11111
|
|
11109
11112
|
<xsl:variable name="toc_level">
|
11110
11113
|
<!-- https://www.metanorma.org/author/ref/document-attributes/ -->
|
11111
|
-
<xsl:variable name="
|
11114
|
+
<xsl:variable name="pdftoclevels" select="normalize-space(//*[local-name() = 'metanorma-extension']/*[local-name() = 'presentation-metadata'][*[local-name() = 'name']/text() = 'PDF TOC Heading Levels']/*[local-name() = 'value'])"/> <!-- :toclevels-pdf Number of table of contents levels to render in PDF output; used to override :toclevels:-->
|
11112
11115
|
<xsl:variable name="toclevels" select="normalize-space(//*[local-name() = 'metanorma-extension']/*[local-name() = 'presentation-metadata'][*[local-name() = 'name']/text() = 'TOC Heading Levels']/*[local-name() = 'value'])"/> <!-- Number of table of contents levels to render -->
|
11113
11116
|
<xsl:choose>
|
11114
|
-
<xsl:when test="$
|
11117
|
+
<xsl:when test="$pdftoclevels != ''"><xsl:value-of select="number($pdftoclevels)"/></xsl:when> <!-- if there is value in xml -->
|
11115
11118
|
<xsl:when test="$toclevels != ''"><xsl:value-of select="number($toclevels)"/></xsl:when> <!-- if there is value in xml -->
|
11116
11119
|
<xsl:otherwise><!-- default value -->
|
11117
11120
|
2
|
@@ -10197,14 +10197,16 @@
|
|
10197
10197
|
|
10198
10198
|
<xsl:template match="*[local-name() = 'annex']">
|
10199
10199
|
<fo:block break-after="page"/>
|
10200
|
-
<fo:block
|
10200
|
+
<fo:block>
|
10201
10201
|
|
10202
10202
|
<xsl:call-template name="setBlockSpanAll"/>
|
10203
10203
|
|
10204
10204
|
<xsl:call-template name="refine_annex_style"/>
|
10205
10205
|
|
10206
10206
|
</fo:block>
|
10207
|
-
<
|
10207
|
+
<fo:block id="{@id}">
|
10208
|
+
<xsl:apply-templates/>
|
10209
|
+
</fo:block>
|
10208
10210
|
</xsl:template>
|
10209
10211
|
|
10210
10212
|
<xsl:template name="refine_annex_style">
|
@@ -10905,6 +10907,7 @@
|
|
10905
10907
|
$namespace = 'mpfd' or $namespace = 'ogc' or $namespace = 'ogc-white-paper' -->
|
10906
10908
|
<!-- Example: [1] ISO 9:1995, Information and documentation – Transliteration of Cyrillic characters into Latin characters – Slavic and non-Slavic languages -->
|
10907
10909
|
<fo:list-block id="{@id}" xsl:use-attribute-sets="bibitem-non-normative-list-style">
|
10910
|
+
|
10908
10911
|
<fo:list-item>
|
10909
10912
|
<fo:list-item-label end-indent="label-end()">
|
10910
10913
|
<fo:block role="SKIP">
|
@@ -11108,10 +11111,10 @@
|
|
11108
11111
|
|
11109
11112
|
<xsl:variable name="toc_level">
|
11110
11113
|
<!-- https://www.metanorma.org/author/ref/document-attributes/ -->
|
11111
|
-
<xsl:variable name="
|
11114
|
+
<xsl:variable name="pdftoclevels" select="normalize-space(//*[local-name() = 'metanorma-extension']/*[local-name() = 'presentation-metadata'][*[local-name() = 'name']/text() = 'PDF TOC Heading Levels']/*[local-name() = 'value'])"/> <!-- :toclevels-pdf Number of table of contents levels to render in PDF output; used to override :toclevels:-->
|
11112
11115
|
<xsl:variable name="toclevels" select="normalize-space(//*[local-name() = 'metanorma-extension']/*[local-name() = 'presentation-metadata'][*[local-name() = 'name']/text() = 'TOC Heading Levels']/*[local-name() = 'value'])"/> <!-- Number of table of contents levels to render -->
|
11113
11116
|
<xsl:choose>
|
11114
|
-
<xsl:when test="$
|
11117
|
+
<xsl:when test="$pdftoclevels != ''"><xsl:value-of select="number($pdftoclevels)"/></xsl:when> <!-- if there is value in xml -->
|
11115
11118
|
<xsl:when test="$toclevels != ''"><xsl:value-of select="number($toclevels)"/></xsl:when> <!-- if there is value in xml -->
|
11116
11119
|
<xsl:otherwise><!-- default value -->
|
11117
11120
|
2
|
@@ -9248,14 +9248,16 @@
|
|
9248
9248
|
|
9249
9249
|
<xsl:template match="*[local-name() = 'annex']">
|
9250
9250
|
<fo:block break-after="page"/>
|
9251
|
-
<fo:block
|
9251
|
+
<fo:block>
|
9252
9252
|
|
9253
9253
|
<xsl:call-template name="setBlockSpanAll"/>
|
9254
9254
|
|
9255
9255
|
<xsl:call-template name="refine_annex_style"/>
|
9256
9256
|
|
9257
9257
|
</fo:block>
|
9258
|
-
<
|
9258
|
+
<fo:block id="{@id}">
|
9259
|
+
<xsl:apply-templates/>
|
9260
|
+
</fo:block>
|
9259
9261
|
</xsl:template>
|
9260
9262
|
|
9261
9263
|
<xsl:template name="refine_annex_style">
|
@@ -9956,6 +9958,7 @@
|
|
9956
9958
|
$namespace = 'mpfd' or $namespace = 'ogc' or $namespace = 'ogc-white-paper' -->
|
9957
9959
|
<!-- Example: [1] ISO 9:1995, Information and documentation – Transliteration of Cyrillic characters into Latin characters – Slavic and non-Slavic languages -->
|
9958
9960
|
<fo:list-block id="{@id}" xsl:use-attribute-sets="bibitem-non-normative-list-style">
|
9961
|
+
|
9959
9962
|
<fo:list-item>
|
9960
9963
|
<fo:list-item-label end-indent="label-end()">
|
9961
9964
|
<fo:block role="SKIP">
|
@@ -10159,10 +10162,10 @@
|
|
10159
10162
|
|
10160
10163
|
<xsl:variable name="toc_level">
|
10161
10164
|
<!-- https://www.metanorma.org/author/ref/document-attributes/ -->
|
10162
|
-
<xsl:variable name="
|
10165
|
+
<xsl:variable name="pdftoclevels" select="normalize-space(//*[local-name() = 'metanorma-extension']/*[local-name() = 'presentation-metadata'][*[local-name() = 'name']/text() = 'PDF TOC Heading Levels']/*[local-name() = 'value'])"/> <!-- :toclevels-pdf Number of table of contents levels to render in PDF output; used to override :toclevels:-->
|
10163
10166
|
<xsl:variable name="toclevels" select="normalize-space(//*[local-name() = 'metanorma-extension']/*[local-name() = 'presentation-metadata'][*[local-name() = 'name']/text() = 'TOC Heading Levels']/*[local-name() = 'value'])"/> <!-- Number of table of contents levels to render -->
|
10164
10167
|
<xsl:choose>
|
10165
|
-
<xsl:when test="$
|
10168
|
+
<xsl:when test="$pdftoclevels != ''"><xsl:value-of select="number($pdftoclevels)"/></xsl:when> <!-- if there is value in xml -->
|
10166
10169
|
<xsl:when test="$toclevels != ''"><xsl:value-of select="number($toclevels)"/></xsl:when> <!-- if there is value in xml -->
|
10167
10170
|
<xsl:otherwise><!-- default value -->
|
10168
10171
|
3
|
@@ -0,0 +1,112 @@
|
|
1
|
+
module IsoDoc
|
2
|
+
module Ogc
|
3
|
+
class PresentationXMLConvert < IsoDoc::PresentationXMLConvert
|
4
|
+
def middle_title(docxml); end
|
5
|
+
|
6
|
+
def preface_rearrange(doc)
|
7
|
+
super
|
8
|
+
insert_preface_sections(doc)
|
9
|
+
end
|
10
|
+
|
11
|
+
def insert_preface_sections(doc)
|
12
|
+
preface_insert(doc.at(ns("//preface/clause" \
|
13
|
+
"[@type = 'executivesummary']")),
|
14
|
+
doc.at(ns("//preface/abstract")), doc)
|
15
|
+
preface_insert(doc.at(ns("//preface//submitters")),
|
16
|
+
submit_orgs_append_pt(doc), doc)
|
17
|
+
insert_submitting_orgs(doc)
|
18
|
+
preface_insert(doc.at(ns("//preface/clause[@type = 'security']")),
|
19
|
+
submit_orgs_append_pt(doc), doc)
|
20
|
+
insert_keywords(doc)
|
21
|
+
end
|
22
|
+
|
23
|
+
def preface_init_insert_pt(docxml)
|
24
|
+
docxml.at(ns("//preface")) ||
|
25
|
+
docxml.at(ns("//sections"))
|
26
|
+
.add_previous_sibling("<preface> </preface>").first
|
27
|
+
end
|
28
|
+
|
29
|
+
def preface_insert(clause, after, docxml)
|
30
|
+
clause or return
|
31
|
+
clause.remove
|
32
|
+
if after then after.next = clause
|
33
|
+
else
|
34
|
+
preface_init_insert_pt(docxml)&.children&.first
|
35
|
+
&.add_previous_sibling(clause)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def submit_orgs_append_pt(docxml)
|
40
|
+
docxml.at(ns("//foreword")) ||
|
41
|
+
docxml.at(ns("//preface/clause[@type = 'keywords']")) ||
|
42
|
+
docxml.at(ns("//preface/clause[@type = 'executivesummary']")) ||
|
43
|
+
docxml.at(ns("//preface/abstract"))
|
44
|
+
end
|
45
|
+
|
46
|
+
def insert_submitting_orgs(docxml)
|
47
|
+
orgs = docxml.xpath(ns(submittingorgs_path))
|
48
|
+
.each_with_object([]) { |org, m| m << org.text }
|
49
|
+
orgs.empty? and return
|
50
|
+
if a = submit_orgs_append_pt(docxml)
|
51
|
+
a.next = submitting_orgs_clause(orgs)
|
52
|
+
else
|
53
|
+
preface_init_insert_pt(docxml)&.children&.first
|
54
|
+
&.add_previous_sibling(submitting_orgs_clause(orgs))
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def submitting_orgs_clause(orgs)
|
59
|
+
<<~SUBMITTING
|
60
|
+
<clause id="_#{UUIDTools::UUID.random_create}" type="submitting_orgs">
|
61
|
+
<title>Submitting Organizations</title>
|
62
|
+
<p>The following organizations submitted this Document to the Open Geospatial Consortium (OGC):</p>
|
63
|
+
<ul>#{orgs.map { |m| "<li>#{m}</li>" }.join("\n")}</ul>
|
64
|
+
</clause>
|
65
|
+
SUBMITTING
|
66
|
+
end
|
67
|
+
|
68
|
+
def keyword_clause(kwords)
|
69
|
+
<<~KEYWORDS
|
70
|
+
<clause id="_#{UUIDTools::UUID.random_create}" type="keywords">
|
71
|
+
<title>Keywords</title>
|
72
|
+
<p>The following are keywords to be used by search engines and document catalogues.</p>
|
73
|
+
<p>#{kwords.join(', ')}</p></clause>
|
74
|
+
KEYWORDS
|
75
|
+
end
|
76
|
+
|
77
|
+
def insert_keywords(docxml)
|
78
|
+
kw = @meta.get[:keywords]
|
79
|
+
kw.empty? and return
|
80
|
+
if abstract =
|
81
|
+
docxml.at(ns("//preface/clause[@type = 'executivesummary']")) ||
|
82
|
+
docxml.at(ns("//preface/abstract"))
|
83
|
+
abstract.next = keyword_clause(kw)
|
84
|
+
else
|
85
|
+
preface_init_insert_pt(docxml)&.children&.first
|
86
|
+
&.add_previous_sibling(keyword_clause(kw))
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
def annex1(elem)
|
91
|
+
lbl = @xrefs.anchor(elem["id"], :label)
|
92
|
+
t = elem.at(ns("./title")) and
|
93
|
+
t.children = "<strong>#{to_xml(t.children)}</strong>"
|
94
|
+
prefix_name(elem, "<br/>", lbl, "title")
|
95
|
+
end
|
96
|
+
|
97
|
+
def clause(docxml)
|
98
|
+
super
|
99
|
+
docxml.xpath(ns("//foreword | //preface/abstract | " \
|
100
|
+
"//submitters | //introduction | //acknowledgements"))
|
101
|
+
.each { |f| clause1(f) }
|
102
|
+
end
|
103
|
+
|
104
|
+
def clause1(elem)
|
105
|
+
elem.name == "terms" && elem.parent.name == "annex" &&
|
106
|
+
elem.parent.xpath(ns("./terms")).size == 1 and return
|
107
|
+
elem.name == "clause" && elem["type"] == "toc" and return
|
108
|
+
super
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require_relative "init"
|
2
|
-
require "uuidtools"
|
3
2
|
require_relative "../../relaton/render/general"
|
3
|
+
require_relative "presentation_sections"
|
4
4
|
|
5
5
|
module IsoDoc
|
6
6
|
module Ogc
|
@@ -10,8 +10,6 @@ module IsoDoc
|
|
10
10
|
super
|
11
11
|
end
|
12
12
|
|
13
|
-
def middle_title(docxml); end
|
14
|
-
|
15
13
|
def convert1(docxml, filename, dir)
|
16
14
|
info docxml, nil
|
17
15
|
super
|
@@ -21,123 +19,100 @@ module IsoDoc
|
|
21
19
|
File.read(File.join(@libdir, "html", "rouge.css"))
|
22
20
|
end
|
23
21
|
|
24
|
-
def
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
submit_orgs_append_pt(doc), doc)
|
35
|
-
insert_submitting_orgs(doc)
|
36
|
-
preface_insert(doc.at(ns("//preface/clause[@type = 'security']")),
|
37
|
-
submit_orgs_append_pt(doc), doc)
|
38
|
-
insert_keywords(doc)
|
39
|
-
end
|
40
|
-
|
41
|
-
def preface_init_insert_pt(docxml)
|
42
|
-
docxml.at(ns("//preface")) ||
|
43
|
-
docxml.at(ns("//sections"))
|
44
|
-
.add_previous_sibling("<preface> </preface>").first
|
45
|
-
end
|
46
|
-
|
47
|
-
def preface_insert(clause, after, docxml)
|
48
|
-
clause or return
|
49
|
-
clause.remove
|
50
|
-
if after then after.next = clause
|
51
|
-
else
|
52
|
-
preface_init_insert_pt(docxml)&.children&.first
|
53
|
-
&.add_previous_sibling(clause)
|
22
|
+
def example1(elem)
|
23
|
+
lbl = @xrefs.anchor(elem["id"], :label, false) or return
|
24
|
+
prefix_name(elem, block_delim, l10n("#{@i18n.example} #{lbl}"),
|
25
|
+
"name")
|
26
|
+
end
|
27
|
+
|
28
|
+
def bibdata(docxml)
|
29
|
+
docxml.xpath(ns("//bibdata/contributor[@type = 'author']")).each do |a|
|
30
|
+
a.at(ns("./description"))&.text == "contributor" and
|
31
|
+
a["type"] = "contributor"
|
54
32
|
end
|
33
|
+
super
|
34
|
+
dochistory_insert(docxml)
|
55
35
|
end
|
56
36
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
37
|
+
UPDATE_RELATIONS = <<~XPATH.freeze
|
38
|
+
//bibdata/relation[@type = 'updatedBy' or @type = 'merges' or @type = 'splits' or @type = 'hasDraft']/bibitem
|
39
|
+
XPATH
|
40
|
+
|
41
|
+
def dochistory_insert(docxml)
|
42
|
+
updates = docxml.xpath(ns(UPDATE_RELATIONS))
|
43
|
+
updates.empty? and return
|
44
|
+
fwd = annex_insert_point(docxml)
|
45
|
+
generate_dochistory(updates, fwd)
|
62
46
|
end
|
63
47
|
|
64
|
-
def
|
65
|
-
|
66
|
-
.each_with_object([]) { |org, m| m << org.text }
|
67
|
-
orgs.empty? and return
|
68
|
-
if a = submit_orgs_append_pt(docxml)
|
69
|
-
a.next = submitting_orgs_clause(orgs)
|
70
|
-
else
|
71
|
-
preface_init_insert_pt(docxml)&.children&.first
|
72
|
-
&.add_previous_sibling(submitting_orgs_clause(orgs))
|
73
|
-
end
|
48
|
+
def annex_insert_point(docxml)
|
49
|
+
docxml.at(ns("//annex[last()]")) || docxml.at(ns("//sections"))
|
74
50
|
end
|
75
51
|
|
76
|
-
def
|
77
|
-
|
78
|
-
|
79
|
-
<
|
80
|
-
<
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
<<~KEYWORDS
|
88
|
-
<clause id="_#{UUIDTools::UUID.random_create}" type="keywords">
|
89
|
-
<title>Keywords</title>
|
90
|
-
<p>The following are keywords to be used by search engines and document catalogues.</p>
|
91
|
-
<p>#{kwords.join(', ')}</p></clause>
|
92
|
-
KEYWORDS
|
93
|
-
end
|
94
|
-
|
95
|
-
def insert_keywords(docxml)
|
96
|
-
kw = @meta.get[:keywords]
|
97
|
-
kw.empty? and return
|
98
|
-
if abstract =
|
99
|
-
docxml.at(ns("//preface/clause[@type = 'executivesummary']")) ||
|
100
|
-
docxml.at(ns("//preface/abstract"))
|
101
|
-
abstract.next = keyword_clause(kw)
|
102
|
-
else
|
103
|
-
preface_init_insert_pt(docxml)&.children&.first
|
104
|
-
&.add_previous_sibling(keyword_clause(kw))
|
105
|
-
end
|
52
|
+
def generate_dochistory(updates, pref)
|
53
|
+
ret = updates.map { |u| generate_dochistory_row(u) }.flatten.join("\n")
|
54
|
+
pref.next = <<~XML
|
55
|
+
<annex id='_#{UUIDTools::UUID.random_create}' obligation='informative'>
|
56
|
+
<title>#{@i18n.dochistory}</title>
|
57
|
+
<table><thead>
|
58
|
+
<tr><th>Date</th><th>Release</th><th>Author</th><th>Paragraph Modified</th><th>Description</th></tr>
|
59
|
+
</thead><tbody>
|
60
|
+
#{ret}
|
61
|
+
</tbody></table></annex>
|
62
|
+
XML
|
106
63
|
end
|
107
64
|
|
108
|
-
def
|
109
|
-
|
110
|
-
|
111
|
-
|
65
|
+
def generate_dochistory_row(item)
|
66
|
+
e = item.at(ns("./edition")) || item.at(ns("./version/draft"))
|
67
|
+
date = dochistory_date(item)
|
68
|
+
c = dochistory_contributors(item)
|
69
|
+
l = dochistory_location(item)
|
70
|
+
desc = dochistory_description(item)
|
71
|
+
"<tr><td>#{date}</td><td>#{e&.text}</td><td>#{c}</td>" \
|
72
|
+
"<td>#{l}</td><td>#{desc}</td></tr>"
|
112
73
|
end
|
113
74
|
|
114
|
-
def
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
75
|
+
def dochistory_date(item)
|
76
|
+
d = item.at(ns("./date[@type = 'updated']")) ||
|
77
|
+
item.at(ns("./date[@type = 'published']")) ||
|
78
|
+
item.at(ns("./date[@type = 'issued']")) or return ""
|
79
|
+
d.text.strip
|
119
80
|
end
|
120
81
|
|
121
|
-
def
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
.each { |f| clause1(f) }
|
82
|
+
def dochistory_contributors(item)
|
83
|
+
item.xpath(ns("./contributor")).map do |c|
|
84
|
+
dochistory_contributor(c)
|
85
|
+
end.join(", ")
|
126
86
|
end
|
127
87
|
|
128
|
-
def
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
88
|
+
def dochistory_contributor(contrib)
|
89
|
+
ret = contrib.at("./organization/subdivision") ||
|
90
|
+
contrib.at("./organization/name") ||
|
91
|
+
contrib.at("./person/name/abbreviation") ||
|
92
|
+
contrib.at("./person/name/completename")
|
93
|
+
ret and return ret.text
|
94
|
+
format_personalname(contrib)
|
133
95
|
end
|
134
96
|
|
135
|
-
def
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
97
|
+
def format_personalname(contrib)
|
98
|
+
Relaton::Render::Ogc::General
|
99
|
+
.new(template: { book: "{{ creatornames }}" })
|
100
|
+
.render("<bibitem type='book'>#{contrib.to_xml}</bibitem>",
|
101
|
+
embedded: true)
|
102
|
+
end
|
103
|
+
|
104
|
+
def dochistory_description(item)
|
105
|
+
d = item.at(ns("./amend/description")) or return ""
|
106
|
+
d.children.to_xml
|
107
|
+
end
|
108
|
+
|
109
|
+
def dochistory_location(item)
|
110
|
+
t = item.at(ns("./amend/location")) or return "All"
|
111
|
+
xpath = "./amend/location/locality | ./amend/location/localityStack"
|
112
|
+
r = eref_localities(item.xpath(ns(xpath)), nil, t)
|
113
|
+
r.sub!(/^, /, "")
|
114
|
+
r == @i18n.wholeoftext and r = "All"
|
115
|
+
r
|
141
116
|
end
|
142
117
|
|
143
118
|
def bibdata_i18n(bib)
|
@@ -203,7 +178,7 @@ module IsoDoc
|
|
203
178
|
# else, use both ordinal, as prefix, and ids
|
204
179
|
def biblio_ref_entry_code(ordinal, ids, _id, standard, datefn, _bib)
|
205
180
|
standard and return "[#{ordinal}]<tab/>"
|
206
|
-
ret =
|
181
|
+
ret = ids[:ordinal] || ids[:metanorma] || "[#{ordinal}]"
|
207
182
|
prefix_bracketed_ref("#{ret}#{datefn}")
|
208
183
|
end
|
209
184
|
|
@@ -95,8 +95,89 @@
|
|
95
95
|
<ref name="pagebreak"/>
|
96
96
|
<ref name="hr"/>
|
97
97
|
<ref name="bookmark"/>
|
98
|
+
<ref name="amend"/>
|
98
99
|
</choice>
|
99
100
|
</define>
|
101
|
+
<define name="amend">
|
102
|
+
<element name="amend">
|
103
|
+
<ref name="AmendType"/>
|
104
|
+
</element>
|
105
|
+
</define>
|
106
|
+
<define name="AmendType">
|
107
|
+
<optional>
|
108
|
+
<attribute name="id">
|
109
|
+
<data type="ID"/>
|
110
|
+
</attribute>
|
111
|
+
</optional>
|
112
|
+
<attribute name="change">
|
113
|
+
<choice>
|
114
|
+
<value>add</value>
|
115
|
+
<value>modify</value>
|
116
|
+
<value>delete</value>
|
117
|
+
<value>replace</value>
|
118
|
+
</choice>
|
119
|
+
</attribute>
|
120
|
+
<optional>
|
121
|
+
<attribute name="path"/>
|
122
|
+
</optional>
|
123
|
+
<optional>
|
124
|
+
<attribute name="path_end"/>
|
125
|
+
</optional>
|
126
|
+
<optional>
|
127
|
+
<attribute name="title"/>
|
128
|
+
</optional>
|
129
|
+
<optional>
|
130
|
+
<element name="location">
|
131
|
+
<zeroOrMore>
|
132
|
+
<choice>
|
133
|
+
<ref name="locality"/>
|
134
|
+
<ref name="localityStack"/>
|
135
|
+
</choice>
|
136
|
+
</zeroOrMore>
|
137
|
+
</element>
|
138
|
+
</optional>
|
139
|
+
<optional>
|
140
|
+
<element name="description">
|
141
|
+
<zeroOrMore>
|
142
|
+
<ref name="BasicBlock"/>
|
143
|
+
</zeroOrMore>
|
144
|
+
</element>
|
145
|
+
</optional>
|
146
|
+
<optional>
|
147
|
+
<element name="newcontent">
|
148
|
+
<optional>
|
149
|
+
<attribute name="id">
|
150
|
+
<data type="ID"/>
|
151
|
+
</attribute>
|
152
|
+
</optional>
|
153
|
+
<zeroOrMore>
|
154
|
+
<ref name="BasicBlock"/>
|
155
|
+
</zeroOrMore>
|
156
|
+
</element>
|
157
|
+
</optional>
|
158
|
+
<zeroOrMore>
|
159
|
+
<ref name="classification"/>
|
160
|
+
</zeroOrMore>
|
161
|
+
<zeroOrMore>
|
162
|
+
<ref name="contributor"/>
|
163
|
+
</zeroOrMore>
|
164
|
+
</define>
|
165
|
+
<define name="classification">
|
166
|
+
<element name="classification">
|
167
|
+
<ref name="classification_tag"/>
|
168
|
+
<ref name="classification_value"/>
|
169
|
+
</element>
|
170
|
+
</define>
|
171
|
+
<define name="classification_tag">
|
172
|
+
<element name="tag">
|
173
|
+
<text/>
|
174
|
+
</element>
|
175
|
+
</define>
|
176
|
+
<define name="classification_value">
|
177
|
+
<element name="value">
|
178
|
+
<text/>
|
179
|
+
</element>
|
180
|
+
</define>
|
100
181
|
<define name="paragraph">
|
101
182
|
<element name="p">
|
102
183
|
<ref name="ParagraphType"/>
|
@@ -715,27 +796,36 @@
|
|
715
796
|
</define>
|
716
797
|
<define name="ruby">
|
717
798
|
<element name="ruby">
|
718
|
-
<
|
719
|
-
<
|
720
|
-
|
721
|
-
|
722
|
-
|
723
|
-
|
724
|
-
|
799
|
+
<choice>
|
800
|
+
<ref name="ruby_pronunciation"/>
|
801
|
+
<ref name="ruby_annotation"/>
|
802
|
+
</choice>
|
803
|
+
<choice>
|
804
|
+
<text/>
|
805
|
+
<ref name="ruby"/>
|
806
|
+
</choice>
|
725
807
|
</element>
|
726
808
|
</define>
|
727
|
-
<define name="
|
728
|
-
<element name="
|
729
|
-
<
|
730
|
-
|
731
|
-
|
809
|
+
<define name="ruby_pronunciation">
|
810
|
+
<element name="pronunciation">
|
811
|
+
<attribute name="value"/>
|
812
|
+
<optional>
|
813
|
+
<attribute name="script"/>
|
814
|
+
</optional>
|
815
|
+
<optional>
|
816
|
+
<attribute name="lang"/>
|
817
|
+
</optional>
|
732
818
|
</element>
|
733
819
|
</define>
|
734
|
-
<define name="
|
735
|
-
<element name="
|
736
|
-
<
|
737
|
-
|
738
|
-
|
820
|
+
<define name="ruby_annotation">
|
821
|
+
<element name="annotation">
|
822
|
+
<attribute name="value"/>
|
823
|
+
<optional>
|
824
|
+
<attribute name="script"/>
|
825
|
+
</optional>
|
826
|
+
<optional>
|
827
|
+
<attribute name="lang"/>
|
828
|
+
</optional>
|
739
829
|
</element>
|
740
830
|
</define>
|
741
831
|
<define name="br">
|
@@ -930,18 +1020,12 @@
|
|
930
1020
|
</optional>
|
931
1021
|
<optional>
|
932
1022
|
<attribute name="width">
|
933
|
-
<
|
934
|
-
<data type="int"/>
|
935
|
-
<value>auto</value>
|
936
|
-
</choice>
|
1023
|
+
<ref name="ImageSize"/>
|
937
1024
|
</attribute>
|
938
1025
|
</optional>
|
939
1026
|
<optional>
|
940
1027
|
<attribute name="height">
|
941
|
-
<
|
942
|
-
<data type="int"/>
|
943
|
-
<value>auto</value>
|
944
|
-
</choice>
|
1028
|
+
<ref name="ImageSize"/>
|
945
1029
|
</attribute>
|
946
1030
|
</optional>
|
947
1031
|
<optional>
|
@@ -956,6 +1040,14 @@
|
|
956
1040
|
</attribute>
|
957
1041
|
</optional>
|
958
1042
|
</define>
|
1043
|
+
<define name="ImageSize">
|
1044
|
+
<choice>
|
1045
|
+
<data type="string">
|
1046
|
+
<param name="pattern">\d+([.]\d+)?(%?)</param>
|
1047
|
+
</data>
|
1048
|
+
<value>auto</value>
|
1049
|
+
</choice>
|
1050
|
+
</define>
|
959
1051
|
<define name="video">
|
960
1052
|
<element name="video">
|
961
1053
|
<attribute name="id">
|