metanorma-ogc 2.4.7 → 2.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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">
|