lib/isodoc/iho/iho.specification.xsl in metanorma-iho-0.5.3 vs lib/isodoc/iho/iho.specification.xsl in metanorma-iho-0.5.4
- old
+ new
@@ -747,10 +747,14 @@
<title-edition lang="fr">
<xsl:text>Édition </xsl:text>
</title-edition>
+ <title-edition lang="ru">
+ <xsl:text>Издание </xsl:text>
+ </title-edition>
+
<!-- These titles of Table of contents renders different than determined in localized-strings -->
<title-toc lang="en">
<xsl:text>Contents</xsl:text>
@@ -775,11 +779,15 @@
</title-part>
<title-part lang="fr">
- </title-part>
+ </title-part>
+ <title-part lang="ru">
+
+
+ </title-part>
<title-part lang="zh">第 # 部分:</title-part>
<title-subpart lang="en">Sub-part #</title-subpart>
<title-subpart lang="fr">Partie de sub #</title-subpart>
@@ -791,10 +799,11 @@
<title-list-recommendations lang="en">List of Recommendations</title-list-recommendations>
<title-summary lang="en">Summary</title-summary>
+ <title-continued lang="ru">(продолжение)</title-continued>
<title-continued lang="en">(continued)</title-continued>
<title-continued lang="fr">(continué)</title-continued>
</xsl:variable><xsl:variable name="titles" select="xalan:nodeset($titles_)"/><xsl:variable name="bibdata">
<xsl:copy-of select="//*[contains(local-name(), '-standard')]/*[local-name() = 'bibdata']"/>
@@ -1537,17 +1546,23 @@
</xsl:attribute-set><xsl:variable name="color-added-text">
<xsl:text>rgb(0, 255, 0)</xsl:text>
</xsl:variable><xsl:attribute-set name="add-style">
- <xsl:attribute name="color">red</xsl:attribute>
- <xsl:attribute name="text-decoration">underline</xsl:attribute>
- <!-- <xsl:attribute name="color">black</xsl:attribute>
- <xsl:attribute name="background-color"><xsl:value-of select="$color-added-text"/></xsl:attribute>
- <xsl:attribute name="padding-top">1mm</xsl:attribute>
- <xsl:attribute name="padding-bottom">0.5mm</xsl:attribute> -->
- </xsl:attribute-set><xsl:variable name="color-deleted-text">
+
+ <xsl:attribute name="color">red</xsl:attribute>
+ <xsl:attribute name="text-decoration">underline</xsl:attribute>
+ <!-- <xsl:attribute name="color">black</xsl:attribute>
+ <xsl:attribute name="background-color"><xsl:value-of select="$color-added-text"/></xsl:attribute>
+ <xsl:attribute name="padding-top">1mm</xsl:attribute>
+ <xsl:attribute name="padding-bottom">0.5mm</xsl:attribute> -->
+
+ </xsl:attribute-set><xsl:variable name="add-style">
+ <add-style xsl:use-attribute-sets="add-style"/>
+ </xsl:variable><xsl:template name="append_add-style">
+ <xsl:copy-of select="xalan:nodeset($add-style)/add-style/@*"/>
+ </xsl:template><xsl:variable name="color-deleted-text">
<xsl:text>red</xsl:text>
</xsl:variable><xsl:attribute-set name="del-style">
<xsl:attribute name="color"><xsl:value-of select="$color-deleted-text"/></xsl:attribute>
<xsl:attribute name="text-decoration">line-through</xsl:attribute>
</xsl:attribute-set><xsl:attribute-set name="mathml-style">
@@ -1977,18 +1992,46 @@
</xsl:attribute-set><xsl:variable name="border-block-added">2.5pt solid rgb(0, 176, 80)</xsl:variable><xsl:variable name="border-block-deleted">2.5pt solid rgb(255, 0, 0)</xsl:variable><xsl:variable name="ace_tag">ace-tag_</xsl:variable><xsl:template name="processPrefaceSectionsDefault_Contents">
+ <xsl:variable name="nodes_preface_">
+ <xsl:for-each select="/*/*[local-name()='preface']/*">
+ <node id="{@id}"/>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:variable name="nodes_preface" select="xalan:nodeset($nodes_preface_)"/>
+
<xsl:for-each select="/*/*[local-name()='preface']/*">
<xsl:sort select="@displayorder" data-type="number"/>
+
+ <!-- process Section's title -->
+ <xsl:variable name="preceding-sibling_id" select="$nodes_preface/node[@id = current()/@id]/preceding-sibling::node[1]/@id"/>
+ <xsl:if test="$preceding-sibling_id != ''">
+ <xsl:apply-templates select="parent::*/*[@type = 'section-title' and @id = $preceding-sibling_id and not(@displayorder)]" mode="contents_no_displayorder"/>
+ </xsl:if>
+
<xsl:apply-templates select="." mode="contents"/>
</xsl:for-each>
</xsl:template><xsl:template name="processMainSectionsDefault_Contents">
+ <xsl:variable name="nodes_sections_">
+ <xsl:for-each select="/*/*[local-name()='sections']/*">
+ <node id="{@id}"/>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:variable name="nodes_sections" select="xalan:nodeset($nodes_sections_)"/>
+
<xsl:for-each select="/*/*[local-name()='sections']/* | /*/*[local-name()='bibliography']/*[local-name()='references'][@normative='true'] | /*/*[local-name()='bibliography']/*[local-name()='clause'][*[local-name()='references'][@normative='true']]">
<xsl:sort select="@displayorder" data-type="number"/>
+
+ <!-- process Section's title -->
+ <xsl:variable name="preceding-sibling_id" select="$nodes_sections/node[@id = current()/@id]/preceding-sibling::node[1]/@id"/>
+ <xsl:if test="$preceding-sibling_id != ''">
+ <xsl:apply-templates select="parent::*/*[@type = 'section-title' and @id = $preceding-sibling_id and not(@displayorder)]" mode="contents_no_displayorder"/>
+ </xsl:if>
+
<xsl:apply-templates select="." mode="contents"/>
</xsl:for-each>
<xsl:for-each select="/*/*[local-name()='annex']">
<xsl:sort select="@displayorder" data-type="number"/>
@@ -2123,11 +2166,11 @@
<xsl:with-param name="cols-count" select="$cols-count"/>
<xsl:with-param name="table" select="$simple-table"/>
</xsl:call-template>
</xsl:if>
</xsl:variable>
- <!-- colwidths=<xsl:copy-of select="$colwidths"/> -->
+ <!-- DEBUG colwidths=<xsl:copy-of select="$colwidths"/> -->
<xsl:variable name="margin-side">
<xsl:choose>
<xsl:when test="sum(xalan:nodeset($colwidths)//column) > 75">15</xsl:when>
@@ -2383,11 +2426,11 @@
</xsl:variable>
<xsl:call-template name="tokenize">
<!-- <xsl:with-param name="text" select="translate(td[$curr-col],'- —:', ' ')"/> -->
<!-- 2009 thinspace -->
<!-- <xsl:with-param name="text" select="translate(normalize-space($td_text),'- —:', ' ')"/> -->
- <xsl:with-param name="text" select="normalize-space(translate($string_with_added_zerospaces, '', ' '))"/>
+ <xsl:with-param name="text" select="normalize-space(translate($string_with_added_zerospaces, '', ' '))"/> <!-- replace zero-width-space and soft-hyphen to space -->
</xsl:call-template>
</xsl:variable>
<xsl:variable name="max_length">
<xsl:call-template name="max_length">
<xsl:with-param name="words" select="xalan:nodeset($words)"/>
@@ -4011,10 +4054,13 @@
<xsl:if test="not(preceding-sibling::*[local-name() = 'p'])"><xsl:value-of select="$callout"/></xsl:if>
<xsl:apply-templates/>
</fo:inline>
</xsl:template><xsl:template match="*[local-name() = 'xref']">
<fo:basic-link internal-destination="{@target}" fox:alt-text="{@target}" xsl:use-attribute-sets="xref-style">
+ <xsl:if test="parent::*[local-name() = 'add']">
+ <xsl:call-template name="append_add-style"/>
+ </xsl:if>
<xsl:apply-templates/>
</fo:basic-link>
</xsl:template><xsl:template match="*[local-name() = 'formula']" name="formula">
<fo:block-container margin-left="0mm">
<xsl:if test="parent::*[local-name() = 'note']">
@@ -4112,10 +4158,17 @@
<fo:inline xsl:use-attribute-sets="note-name-style">
+ <!-- if 'p' contains all text in 'add' first and last elements in first p are 'add' -->
+ <!-- <xsl:if test="*[not(local-name()='name')][1][node()[normalize-space() != ''][1][local-name() = 'add'] and node()[normalize-space() != ''][last()][local-name() = 'add']]"> -->
+ <xsl:if test="*[not(local-name()='name')][1][count(node()[normalize-space() != '']) = 1 and *[local-name() = 'add']]">
+ <xsl:call-template name="append_add-style"/>
+ </xsl:if>
+
+
<!-- if note contains only one element and first and last childs are `add` ace-tag, then move start ace-tag before NOTE's name-->
<xsl:if test="count(*[not(local-name() = 'name')]) = 1 and *[not(local-name() = 'name')]/node()[last()][local-name() = 'add'][starts-with(text(), $ace_tag)]">
<xsl:apply-templates select="*[not(local-name() = 'name')]/node()[1][local-name() = 'add'][starts-with(text(), $ace_tag)]">
<xsl:with-param name="skip">false</xsl:with-param>
</xsl:apply-templates>
@@ -4150,10 +4203,16 @@
<fo:inline xsl:use-attribute-sets="termnote-name-style">
+ <!-- if 'p' contains all text in 'add' first and last elements in first p are 'add' -->
+ <!-- <xsl:if test="*[not(local-name()='name')][1][node()[normalize-space() != ''][1][local-name() = 'add'] and node()[normalize-space() != ''][last()][local-name() = 'add']]"> -->
+ <xsl:if test="*[not(local-name()='name')][1][count(node()[normalize-space() != '']) = 1 and *[local-name() = 'add']]">
+ <xsl:call-template name="append_add-style"/>
+ </xsl:if>
+
<xsl:apply-templates select="*[local-name() = 'name']"/>
</fo:inline>
<xsl:apply-templates select="node()[not(local-name() = 'name')]"/>
@@ -4199,10 +4258,11 @@
<fo:block id="{@id}">
<xsl:apply-templates/>
</fo:block>
</xsl:template><xsl:template match="*[local-name() = 'term']">
<fo:block id="{@id}" xsl:use-attribute-sets="term-style">
+
<xsl:if test="parent::*[local-name() = 'term'] and not(preceding-sibling::*[local-name() = 'term'])">
@@ -4635,11 +4695,15 @@
<xsl:value-of select="."/>
</xsl:template><xsl:template match="*[local-name() = 'figure' or local-name() = 'table' or local-name() = 'permission' or local-name() = 'recommendation' or local-name() = 'requirement' or local-name() = 'sourcecode']/*[local-name() = 'name']//text()" mode="bookmarks" priority="2">
<xsl:value-of select="."/>
</xsl:template><xsl:template match="node()" mode="contents">
<xsl:apply-templates mode="contents"/>
- </xsl:template><xsl:template match="*[local-name() = 'p'][@type = 'floating-title' or @type = 'section-title']" priority="2" mode="contents">
+ </xsl:template><xsl:template match="*[local-name() = 'preface' or local-name() = 'sections']/*[local-name() = 'p'][@type = 'section-title' and not(@displayorder)]" priority="3" mode="contents"/><xsl:template match="*[local-name() = 'p'][@type = 'section-title' and not(@displayorder)]" mode="contents_no_displayorder">
+ <xsl:call-template name="contents_section-title"/>
+ </xsl:template><xsl:template match="*[local-name() = 'p'][@type = 'section-title']" mode="contents_in_clause">
+ <xsl:call-template name="contents_section-title"/>
+ </xsl:template><xsl:template match="*[local-name() = 'clause']/*[local-name() = 'p'][@type = 'section-title' and (@depth != ../*[local-name() = 'title']/@depth or ../*[local-name() = 'title']/@depth = 1)]" priority="3" mode="contents"/><xsl:template match="*[local-name() = 'p'][@type = 'floating-title' or @type = 'section-title']" priority="2" name="contents_section-title" mode="contents">
<xsl:variable name="level">
<xsl:call-template name="getLevel">
<xsl:with-param name="depth" select="@depth"/>
</xsl:call-template>
</xsl:variable>
@@ -5940,11 +6004,11 @@
-
+
<xsl:apply-templates select="node()[not(local-name() = 'note')]"/>
</fo:list-block>
<!-- <xsl:for-each select="./iho:note">
<xsl:call-template name="note"/>
</xsl:for-each> -->
@@ -5958,10 +6022,15 @@
<fo:list-item-label end-indent="label-end()">
<fo:block xsl:use-attribute-sets="list-item-label-style">
+ <!-- if 'p' contains all text in 'add' first and last elements in first p are 'add' -->
+ <xsl:if test="*[1][count(node()[normalize-space() != '']) = 1 and *[local-name() = 'add']]">
+ <xsl:call-template name="append_add-style"/>
+ </xsl:if>
+
<xsl:call-template name="getListItemFormat"/>
</fo:block>
</fo:list-item-label>
<fo:list-item-body start-indent="body-start()" xsl:use-attribute-sets="list-item-body-style">
<fo:block>
@@ -7109,57 +7178,157 @@
</xsl:template><xsl:template name="number-to-words">
<xsl:param name="number"/>
<xsl:param name="first"/>
<xsl:if test="$number != ''">
<xsl:variable name="words">
- <words>
- <word cardinal="1">One-</word>
- <word ordinal="1">First </word>
- <word cardinal="2">Two-</word>
- <word ordinal="2">Second </word>
- <word cardinal="3">Three-</word>
- <word ordinal="3">Third </word>
- <word cardinal="4">Four-</word>
- <word ordinal="4">Fourth </word>
- <word cardinal="5">Five-</word>
- <word ordinal="5">Fifth </word>
- <word cardinal="6">Six-</word>
- <word ordinal="6">Sixth </word>
- <word cardinal="7">Seven-</word>
- <word ordinal="7">Seventh </word>
- <word cardinal="8">Eight-</word>
- <word ordinal="8">Eighth </word>
- <word cardinal="9">Nine-</word>
- <word ordinal="9">Ninth </word>
- <word ordinal="10">Tenth </word>
- <word ordinal="11">Eleventh </word>
- <word ordinal="12">Twelfth </word>
- <word ordinal="13">Thirteenth </word>
- <word ordinal="14">Fourteenth </word>
- <word ordinal="15">Fifteenth </word>
- <word ordinal="16">Sixteenth </word>
- <word ordinal="17">Seventeenth </word>
- <word ordinal="18">Eighteenth </word>
- <word ordinal="19">Nineteenth </word>
- <word cardinal="20">Twenty-</word>
- <word ordinal="20">Twentieth </word>
- <word cardinal="30">Thirty-</word>
- <word ordinal="30">Thirtieth </word>
- <word cardinal="40">Forty-</word>
- <word ordinal="40">Fortieth </word>
- <word cardinal="50">Fifty-</word>
- <word ordinal="50">Fiftieth </word>
- <word cardinal="60">Sixty-</word>
- <word ordinal="60">Sixtieth </word>
- <word cardinal="70">Seventy-</word>
- <word ordinal="70">Seventieth </word>
- <word cardinal="80">Eighty-</word>
- <word ordinal="80">Eightieth </word>
- <word cardinal="90">Ninety-</word>
- <word ordinal="90">Ninetieth </word>
- <word cardinal="100">Hundred-</word>
- <word ordinal="100">Hundredth </word>
+ <words>
+ <xsl:choose>
+ <xsl:when test="$lang = 'fr'"> <!-- https://en.wiktionary.org/wiki/Appendix:French_numbers -->
+ <word cardinal="1">Une-</word>
+ <word ordinal="1">Première </word>
+ <word cardinal="2">Deux-</word>
+ <word ordinal="2">Seconde </word>
+ <word cardinal="3">Trois-</word>
+ <word ordinal="3">Tierce </word>
+ <word cardinal="4">Quatre-</word>
+ <word ordinal="4">Quatrième </word>
+ <word cardinal="5">Cinq-</word>
+ <word ordinal="5">Cinquième </word>
+ <word cardinal="6">Six-</word>
+ <word ordinal="6">Sixième </word>
+ <word cardinal="7">Sept-</word>
+ <word ordinal="7">Septième </word>
+ <word cardinal="8">Huit-</word>
+ <word ordinal="8">Huitième </word>
+ <word cardinal="9">Neuf-</word>
+ <word ordinal="9">Neuvième </word>
+ <word ordinal="10">Dixième </word>
+ <word ordinal="11">Onzième </word>
+ <word ordinal="12">Douzième </word>
+ <word ordinal="13">Treizième </word>
+ <word ordinal="14">Quatorzième </word>
+ <word ordinal="15">Quinzième </word>
+ <word ordinal="16">Seizième </word>
+ <word ordinal="17">Dix-septième </word>
+ <word ordinal="18">Dix-huitième </word>
+ <word ordinal="19">Dix-neuvième </word>
+ <word cardinal="20">Vingt-</word>
+ <word ordinal="20">Vingtième </word>
+ <word cardinal="30">Trente-</word>
+ <word ordinal="30">Trentième </word>
+ <word cardinal="40">Quarante-</word>
+ <word ordinal="40">Quarantième </word>
+ <word cardinal="50">Cinquante-</word>
+ <word ordinal="50">Cinquantième </word>
+ <word cardinal="60">Soixante-</word>
+ <word ordinal="60">Soixantième </word>
+ <word cardinal="70">Septante-</word>
+ <word ordinal="70">Septantième </word>
+ <word cardinal="80">Huitante-</word>
+ <word ordinal="80">Huitantième </word>
+ <word cardinal="90">Nonante-</word>
+ <word ordinal="90">Nonantième </word>
+ <word cardinal="100">Cent-</word>
+ <word ordinal="100">Centième </word>
+ </xsl:when>
+ <xsl:when test="$lang = 'ru'">
+ <word cardinal="1">Одна-</word>
+ <word ordinal="1">Первое </word>
+ <word cardinal="2">Две-</word>
+ <word ordinal="2">Второе </word>
+ <word cardinal="3">Три-</word>
+ <word ordinal="3">Третье </word>
+ <word cardinal="4">Четыре-</word>
+ <word ordinal="4">Четвертое </word>
+ <word cardinal="5">Пять-</word>
+ <word ordinal="5">Пятое </word>
+ <word cardinal="6">Шесть-</word>
+ <word ordinal="6">Шестое </word>
+ <word cardinal="7">Семь-</word>
+ <word ordinal="7">Седьмое </word>
+ <word cardinal="8">Восемь-</word>
+ <word ordinal="8">Восьмое </word>
+ <word cardinal="9">Девять-</word>
+ <word ordinal="9">Девятое </word>
+ <word ordinal="10">Десятое </word>
+ <word ordinal="11">Одиннадцатое </word>
+ <word ordinal="12">Двенадцатое </word>
+ <word ordinal="13">Тринадцатое </word>
+ <word ordinal="14">Четырнадцатое </word>
+ <word ordinal="15">Пятнадцатое </word>
+ <word ordinal="16">Шестнадцатое </word>
+ <word ordinal="17">Семнадцатое </word>
+ <word ordinal="18">Восемнадцатое </word>
+ <word ordinal="19">Девятнадцатое </word>
+ <word cardinal="20">Двадцать-</word>
+ <word ordinal="20">Двадцатое </word>
+ <word cardinal="30">Тридцать-</word>
+ <word ordinal="30">Тридцатое </word>
+ <word cardinal="40">Сорок-</word>
+ <word ordinal="40">Сороковое </word>
+ <word cardinal="50">Пятьдесят-</word>
+ <word ordinal="50">Пятидесятое </word>
+ <word cardinal="60">Шестьдесят-</word>
+ <word ordinal="60">Шестидесятое </word>
+ <word cardinal="70">Семьдесят-</word>
+ <word ordinal="70">Семидесятое </word>
+ <word cardinal="80">Восемьдесят-</word>
+ <word ordinal="80">Восьмидесятое </word>
+ <word cardinal="90">Девяносто-</word>
+ <word ordinal="90">Девяностое </word>
+ <word cardinal="100">Сто-</word>
+ <word ordinal="100">Сотое </word>
+ </xsl:when>
+ <xsl:otherwise> <!-- default english -->
+ <word cardinal="1">One-</word>
+ <word ordinal="1">First </word>
+ <word cardinal="2">Two-</word>
+ <word ordinal="2">Second </word>
+ <word cardinal="3">Three-</word>
+ <word ordinal="3">Third </word>
+ <word cardinal="4">Four-</word>
+ <word ordinal="4">Fourth </word>
+ <word cardinal="5">Five-</word>
+ <word ordinal="5">Fifth </word>
+ <word cardinal="6">Six-</word>
+ <word ordinal="6">Sixth </word>
+ <word cardinal="7">Seven-</word>
+ <word ordinal="7">Seventh </word>
+ <word cardinal="8">Eight-</word>
+ <word ordinal="8">Eighth </word>
+ <word cardinal="9">Nine-</word>
+ <word ordinal="9">Ninth </word>
+ <word ordinal="10">Tenth </word>
+ <word ordinal="11">Eleventh </word>
+ <word ordinal="12">Twelfth </word>
+ <word ordinal="13">Thirteenth </word>
+ <word ordinal="14">Fourteenth </word>
+ <word ordinal="15">Fifteenth </word>
+ <word ordinal="16">Sixteenth </word>
+ <word ordinal="17">Seventeenth </word>
+ <word ordinal="18">Eighteenth </word>
+ <word ordinal="19">Nineteenth </word>
+ <word cardinal="20">Twenty-</word>
+ <word ordinal="20">Twentieth </word>
+ <word cardinal="30">Thirty-</word>
+ <word ordinal="30">Thirtieth </word>
+ <word cardinal="40">Forty-</word>
+ <word ordinal="40">Fortieth </word>
+ <word cardinal="50">Fifty-</word>
+ <word ordinal="50">Fiftieth </word>
+ <word cardinal="60">Sixty-</word>
+ <word ordinal="60">Sixtieth </word>
+ <word cardinal="70">Seventy-</word>
+ <word ordinal="70">Seventieth </word>
+ <word cardinal="80">Eighty-</word>
+ <word ordinal="80">Eightieth </word>
+ <word cardinal="90">Ninety-</word>
+ <word ordinal="90">Ninetieth </word>
+ <word cardinal="100">Hundred-</word>
+ <word ordinal="100">Hundredth </word>
+ </xsl:otherwise>
+ </xsl:choose>
</words>
</xsl:variable>
<xsl:variable name="ordinal" select="xalan:nodeset($words)//word[@ordinal = $number]/text()"/>
@@ -7229,6 +7398,20 @@
<xsl:value-of select="$value"/>
</xsl:when>
<xsl:otherwise>_</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
+ </xsl:template><xsl:template name="substring-after-last">
+ <xsl:param name="value"/>
+ <xsl:param name="delimiter"/>
+ <xsl:choose>
+ <xsl:when test="contains($value, $delimiter)">
+ <xsl:call-template name="substring-after-last">
+ <xsl:with-param name="value" select="substring-after($value, $delimiter)"/>
+ <xsl:with-param name="delimiter" select="$delimiter"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$value"/>
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:template></xsl:stylesheet>
\ No newline at end of file