lib/isodoc/iho/iho.specification.xsl in metanorma-iho-0.3.11 vs lib/isodoc/iho/iho.specification.xsl in metanorma-iho-0.3.12

- old
+ new

@@ -1522,17 +1522,24 @@ <xsl:attribute name="font-family">STIX Two Math</xsl:attribute> </xsl:attribute-set><xsl:attribute-set name="list-style"> - </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:template name="processPrefaceSectionsDefault_Contents"> + </xsl:attribute-set><xsl:attribute-set name="toc-style"> + <xsl:attribute name="line-height">135%</xsl:attribute> + </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:template name="OLD_processPrefaceSectionsDefault_Contents"> <xsl:apply-templates select="/*/*[local-name()='preface']/*[local-name()='abstract']" mode="contents"/> <xsl:apply-templates select="/*/*[local-name()='preface']/*[local-name()='foreword']" mode="contents"/> <xsl:apply-templates select="/*/*[local-name()='preface']/*[local-name()='introduction']" mode="contents"/> <xsl:apply-templates select="/*/*[local-name()='preface']/*[local-name() != 'abstract' and local-name() != 'foreword' and local-name() != 'introduction' and local-name() != 'acknowledgements']" mode="contents"/> <xsl:apply-templates select="/*/*[local-name()='preface']/*[local-name()='acknowledgements']" mode="contents"/> - </xsl:template><xsl:template name="processMainSectionsDefault_Contents"> + </xsl:template><xsl:template name="processPrefaceSectionsDefault_Contents"> + <xsl:for-each select="/*/*[local-name()='preface']/*"> + <xsl:sort select="@displayorder" data-type="number"/> + <xsl:apply-templates select="." mode="contents"/> + </xsl:for-each> + </xsl:template><xsl:template name="OLD_processMainSectionsDefault_Contents"> <xsl:apply-templates select="/*/*[local-name()='sections']/*[local-name()='clause'][@type='scope']" mode="contents"/> <!-- Normative references --> <xsl:apply-templates select="/*/*[local-name()='bibliography']/*[local-name()='references'][@normative='true'] | /*/*[local-name()='bibliography']/*[local-name()='clause'][*[local-name()='references'][@normative='true']]" mode="contents"/> <!-- Terms and definitions --> @@ -1541,17 +1548,37 @@ <xsl:apply-templates select="/*/*[local-name()='sections']/*[local-name() != 'terms' and local-name() != 'definitions' and not(@type='scope') and not(local-name() = 'clause' and .//*[local-name()='terms']) and not(local-name() = 'clause' and .//*[local-name()='definitions'])]" mode="contents"/> <xsl:apply-templates select="/*/*[local-name()='annex']" mode="contents"/> <!-- Bibliography --> <xsl:apply-templates select="/*/*[local-name()='bibliography']/*[local-name()='references'][not(@normative='true')] | /*/*[local-name()='bibliography']/*[local-name()='clause'][*[local-name()='references'][not(@normative='true')]]" mode="contents"/> - </xsl:template><xsl:template name="processPrefaceSectionsDefault"> + </xsl:template><xsl:template name="processMainSectionsDefault_Contents"> + <xsl:for-each select="/*/*[local-name()='sections']/* | /*/*[local-name()='bibliography']/*[local-name()='references'][@normative='true']"> + <xsl:sort select="@displayorder" data-type="number"/> + <xsl:apply-templates select="." mode="contents"/> + </xsl:for-each> + + <xsl:for-each select="/*/*[local-name()='annex']"> + <xsl:sort select="@displayorder" data-type="number"/> + <xsl:apply-templates select="." mode="contents"/> + </xsl:for-each> + + <xsl:for-each select="/*/*[local-name()='bibliography']/*[not(@normative='true')] | /*/*[local-name()='bibliography']/*[local-name()='clause'][*[local-name()='references'][not(@normative='true')]]"> + <xsl:sort select="@displayorder" data-type="number"/> + <xsl:apply-templates select="." mode="contents"/> + </xsl:for-each> + </xsl:template><xsl:template name="OLD_processPrefaceSectionsDefault"> <xsl:apply-templates select="/*/*[local-name()='preface']/*[local-name()='abstract']"/> <xsl:apply-templates select="/*/*[local-name()='preface']/*[local-name()='foreword']"/> <xsl:apply-templates select="/*/*[local-name()='preface']/*[local-name()='introduction']"/> <xsl:apply-templates select="/*/*[local-name()='preface']/*[local-name() != 'abstract' and local-name() != 'foreword' and local-name() != 'introduction' and local-name() != 'acknowledgements']"/> <xsl:apply-templates select="/*/*[local-name()='preface']/*[local-name()='acknowledgements']"/> - </xsl:template><xsl:template name="processMainSectionsDefault"> + </xsl:template><xsl:template name="processPrefaceSectionsDefault"> + <xsl:for-each select="/*/*[local-name()='preface']/*"> + <xsl:sort select="@displayorder" data-type="number"/> + <xsl:apply-templates select="."/> + </xsl:for-each> + </xsl:template><xsl:template name="OLD_processMainSectionsDefault"> <xsl:apply-templates select="/*/*[local-name()='sections']/*[local-name()='clause'][@type='scope']"/> <!-- Normative references --> <xsl:apply-templates select="/*/*[local-name()='bibliography']/*[local-name()='references'][@normative='true']"/> <!-- Terms and definitions --> @@ -1559,10 +1586,26 @@ <!-- Another main sections --> <xsl:apply-templates select="/*/*[local-name()='sections']/*[local-name() != 'terms' and local-name() != 'definitions' and not(@type='scope') and not(local-name() = 'clause' and .//*[local-name()='terms']) and not(local-name() = 'clause' and .//*[local-name()='definitions'])]"/> <xsl:apply-templates select="/*/*[local-name()='annex']"/> <!-- Bibliography --> <xsl:apply-templates select="/*/*[local-name()='bibliography']/*[local-name()='references'][not(@normative='true')]"/> + </xsl:template><xsl:template name="processMainSectionsDefault"> + <xsl:for-each select="/*/*[local-name()='sections']/* | /*/*[local-name()='bibliography']/*[local-name()='references'][@normative='true']"> + <xsl:sort select="@displayorder" data-type="number"/> + <xsl:apply-templates select="."/> + + </xsl:for-each> + + <xsl:for-each select="/*/*[local-name()='annex']"> + <xsl:sort select="@displayorder" data-type="number"/> + <xsl:apply-templates select="."/> + </xsl:for-each> + + <xsl:for-each select="/*/*[local-name()='bibliography']/*[not(@normative='true')] | /*/*[local-name()='bibliography']/*[local-name()='clause'][*[local-name()='references'][not(@normative='true')]]"> + <xsl:sort select="@displayorder" data-type="number"/> + <xsl:apply-templates select="."/> + </xsl:for-each> </xsl:template><xsl:template match="text()"> <xsl:value-of select="."/> </xsl:template><xsl:template match="*[local-name()='br']"> <xsl:value-of select="$linebreak"/> </xsl:template><xsl:template match="*[local-name()='td']//text() | *[local-name()='th']//text() | *[local-name()='dt']//text() | *[local-name()='dd']//text()" priority="1"> @@ -4076,10 +4119,17 @@ <xsl:attribute name="height"> <xsl:value-of select="round(xalan:nodeset($viewbox)//item[4])"/> </xsl:attribute> <xsl:apply-templates mode="svg_update"/> </xsl:copy> + </xsl:template><xsl:template match="*[local-name() = 'figure']/*[local-name() = 'image'][*[local-name() = 'svg']]" priority="3"> + <xsl:variable name="name" select="ancestor::*[local-name() = 'figure']/*[local-name() = 'name']"/> + <xsl:for-each select="*[local-name() = 'svg']"> + <xsl:call-template name="image_svg"> + <xsl:with-param name="name" select="$name"/> + </xsl:call-template> + </xsl:for-each> </xsl:template><xsl:template match="*[local-name() = 'figure']/*[local-name() = 'image'][@mimetype = 'image/svg+xml' and @src[not(starts-with(., 'data:image/'))]]" priority="2"> <xsl:variable name="svg_content" select="document(@src)"/> <xsl:variable name="name" select="ancestor::*[local-name() = 'figure']/*[local-name() = 'name']"/> <xsl:for-each select="xalan:nodeset($svg_content)/node()"> <xsl:call-template name="image_svg"> @@ -4180,11 +4230,11 @@ <fo:block> </fo:block></fo:block-container> </fo:inline-container> </fo:basic-link> </fo:block> </fo:block-container> - </xsl:template><xsl:template match="*[local-name() = 'figure']/*[local-name() = 'name']"/><xsl:template match="*[local-name() = 'figure']/*[local-name() = 'name'] | *[local-name() = 'table']/*[local-name() = 'name'] | *[local-name() = 'permission']/*[local-name() = 'name'] | *[local-name() = 'recommendation']/*[local-name() = 'name'] | *[local-name() = 'requirement']/*[local-name() = 'name']" mode="contents"> + </xsl:template><xsl:template match="*[local-name() = 'emf']"/><xsl:template match="*[local-name() = 'figure']/*[local-name() = 'name']"/><xsl:template match="*[local-name() = 'figure']/*[local-name() = 'name'] | *[local-name() = 'table']/*[local-name() = 'name'] | *[local-name() = 'permission']/*[local-name() = 'name'] | *[local-name() = 'recommendation']/*[local-name() = 'name'] | *[local-name() = 'requirement']/*[local-name() = 'name']" mode="contents"> <xsl:apply-templates mode="contents"/> <xsl:text> </xsl:text> </xsl:template><xsl:template match="*[local-name() = 'figure']/*[local-name() = 'name'] | *[local-name() = 'table']/*[local-name() = 'name'] | *[local-name() = 'permission']/*[local-name() = 'name'] | *[local-name() = 'recommendation']/*[local-name() = 'name'] | *[local-name() = 'requirement']/*[local-name() = 'name']" mode="bookmarks"> <xsl:apply-templates mode="bookmarks"/> <xsl:text> </xsl:text> @@ -4860,25 +4910,27 @@ <xsl:if test="normalize-space() != ''"> <xsl:value-of select="."/> </xsl:if> </xsl:template><xsl:variable name="localized.source"> <xsl:call-template name="getLocalizedString"> - <xsl:with-param name="key">source</xsl:with-param> - </xsl:call-template> + <xsl:with-param name="key">source</xsl:with-param> + </xsl:call-template> </xsl:variable><xsl:template match="*[local-name() = 'origin']"> <fo:basic-link internal-destination="{@bibitemid}" fox:alt-text="{@citeas}"> <xsl:if test="normalize-space(@citeas) = ''"> <xsl:attribute name="fox:alt-text"><xsl:value-of select="@bibitemid"/></xsl:attribute> </xsl:if> + <fo:inline> + <xsl:call-template name="getTitle"> <xsl:with-param name="name" select="'title-source'"/> </xsl:call-template> <xsl:text>: </xsl:text> @@ -4886,10 +4938,11 @@ </fo:inline> <fo:inline xsl:use-attribute-sets="origin-style"> <xsl:apply-templates/> </fo:inline> + </fo:basic-link> </xsl:template><xsl:template match="*[local-name() = 'modification']/*[local-name() = 'p']"> <fo:inline><xsl:apply-templates/></fo:inline> </xsl:template><xsl:template match="*[local-name() = 'modification']/text()"> <xsl:if test="normalize-space() != ''"> @@ -4952,11 +5005,14 @@ <xsl:attribute name="vertical-align">super</xsl:attribute> </xsl:if> + <xsl:variable name="citeas" select="java:replaceAll(java:java.lang.String.new(@citeas),'^\[?(.+?)\]?$','$1')"/> <!-- remove leading and trailing brackets --> + <xsl:variable name="text" select="normalize-space()"/> + <fo:basic-link internal-destination="{@bibitemid}" fox:alt-text="{@citeas}"> <xsl:if test="normalize-space(@citeas) = ''"> <xsl:attribute name="fox:alt-text"><xsl:value-of select="."/></xsl:attribute> </xsl:if> @@ -4967,11 +5023,13 @@ </xsl:if> - + + + <xsl:apply-templates/> </fo:basic-link> </fo:inline> </xsl:when> @@ -5569,12 +5627,100 @@ </fo:inline> </xsl:template><xsl:template match="*[local-name() = 'form']//*[local-name() = 'textarea']"> <fo:block-container border="1pt solid black" width="50%"> <fo:block> </fo:block> </fo:block-container> + </xsl:template><xsl:template match="*[local-name() = 'toc']"> + <xsl:param name="colwidths"/> + <xsl:variable name="colwidths_"> + <xsl:choose> + <xsl:when test="not($colwidths)"> + <xsl:variable name="toc_table_simple"> + <tbody> + <xsl:apply-templates mode="toc_table_width"/> + </tbody> + </xsl:variable> + <xsl:variable name="cols-count" select="count(xalan:nodeset($toc_table_simple)/*/tr[1]/td)"/> + <xsl:call-template name="calculate-column-widths"> + <xsl:with-param name="cols-count" select="$cols-count"/> + <xsl:with-param name="table" select="$toc_table_simple"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="$colwidths"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <fo:block role="TOCI" space-after="16pt"> + <fo:table width="100%" table-layout="fixed"> + <xsl:for-each select="xalan:nodeset($colwidths_)/column"> + <fo:table-column column-width="proportional-column-width({.})"/> + </xsl:for-each> + <fo:table-body> + <xsl:apply-templates/> + </fo:table-body> + </fo:table> + </fo:block> + </xsl:template><xsl:template match="*[local-name() = 'toc']//*[local-name() = 'li']"> + <fo:table-row min-height="5mm"> + <xsl:apply-templates/> + </fo:table-row> + </xsl:template><xsl:template match="*[local-name() = 'toc']//*[local-name() = 'li']/*[local-name() = 'p']"> + <xsl:apply-templates/> + </xsl:template><xsl:template match="*[local-name() = 'toc']//*[local-name() = 'xref']" priority="3"> + <!-- <xref target="cgpm9th1948r6">1.6.3<tab/>&#8220;9th CGPM, 1948:<tab/>decision to establish the SI&#8221;</xref> --> + <xsl:variable name="target" select="@target"/> + <xsl:for-each select="*[local-name() = 'tab']"> + <xsl:variable name="current_id" select="generate-id()"/> + <fo:table-cell> + <fo:block> + <fo:basic-link internal-destination="{$target}" fox:alt-text="{.}"> + <xsl:for-each select="following-sibling::node()[not(self::*[local-name() = 'tab']) and preceding-sibling::*[local-name() = 'tab'][1][generate-id() = $current_id]]"> + <xsl:choose> + <xsl:when test="self::text()"><xsl:value-of select="."/></xsl:when> + <xsl:otherwise><xsl:apply-templates select="."/></xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </fo:basic-link> + </fo:block> + </fo:table-cell> + </xsl:for-each> + <!-- last column - for page numbers --> + <fo:table-cell text-align="right" font-size="10pt" font-weight="bold" font-family="Arial"> + <fo:block> + <fo:basic-link internal-destination="{$target}" fox:alt-text="{.}"> + <fo:page-number-citation ref-id="{$target}"/> + </fo:basic-link> + </fo:block> + </fo:table-cell> + </xsl:template><xsl:template match="*" mode="toc_table_width"> + <xsl:apply-templates mode="toc_table_width"/> + </xsl:template><xsl:template match="*[local-name() = 'clause'][@type = 'toc']/*[local-name() = 'title']" mode="toc_table_width"/><xsl:template match="*[local-name() = 'clause'][not(@type = 'toc')]/*[local-name() = 'title']" mode="toc_table_width"/><xsl:template match="*[local-name() = 'li']" mode="toc_table_width"> + <tr> + <xsl:apply-templates mode="toc_table_width"/> + </tr> + </xsl:template><xsl:template match="*[local-name() = 'xref']" mode="toc_table_width"> + <!-- <xref target="cgpm9th1948r6">1.6.3<tab/>&#8220;9th CGPM, 1948:<tab/>decision to establish the SI&#8221;</xref> --> + <xsl:for-each select="*[local-name() = 'tab']"> + <xsl:variable name="current_id" select="generate-id()"/> + <td> + <xsl:for-each select="following-sibling::node()[not(self::*[local-name() = 'tab']) and preceding-sibling::*[local-name() = 'tab'][1][generate-id() = $current_id]]"> + <xsl:copy-of select="."/> + </xsl:for-each> + </td> + </xsl:for-each> + <td>333</td> <!-- page number, just for fill --> </xsl:template><xsl:template match="*[local-name() = 'variant-title'][@type = 'sub']"/><xsl:template match="*[local-name() = 'variant-title'][@type = 'sub']" mode="subtitle"> <fo:inline padding-right="5mm"> </fo:inline> <fo:inline><xsl:apply-templates/></fo:inline> + </xsl:template><xsl:template match="*[local-name() = 'blacksquare']" name="blacksquare"> + <fo:inline padding-right="2.5mm" baseline-shift="5%"> + <fo:instream-foreign-object content-height="2mm" content-width="2mm" fox:alt-text="Quad"> + <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" viewBox="0 0 2 2"> + <rect x="0" y="0" width="2" height="2" fill="black"/> + </svg> + </fo:instream-foreign-object> + </fo:inline> </xsl:template><xsl:template name="convertDate"> <xsl:param name="date"/> <xsl:param name="format" select="'short'"/> <xsl:variable name="year" select="substring($date, 1, 4)"/> <xsl:variable name="month" select="substring($date, 6, 2)"/> \ No newline at end of file