lib/isodoc/itu/itu.service-publication.xsl in metanorma-itu-2.5.6 vs lib/isodoc/itu/itu.service-publication.xsl in metanorma-itu-2.5.8
- old
+ new
@@ -1936,10 +1936,11 @@
</fo:block>
</xsl:otherwise>
</xsl:choose>
<fo:block>
<xsl:call-template name="setId"/>
+ <xsl:call-template name="addReviewHelper"/>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="itu:preface/*/itu:clause" priority="3">
@@ -2071,23 +2072,29 @@
<xsl:apply-templates/>
<xsl:apply-templates select="following-sibling::*[1][local-name() = 'variant-title'][@type = 'sub']" mode="subtitle"/>
</fo:block>
<xsl:if test="$doctype != 'resolution'">
<fo:block font-size="12pt" font-weight="normal" margin-top="6pt">
- <xsl:choose>
+ <!-- <xsl:choose>
<xsl:when test="parent::*[@obligation = 'informative']">
<xsl:text>(This appendix does not form an integral part of this Recommendation.)</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>(This annex forms an integral part of this Recommendation.)</xsl:text>
</xsl:otherwise>
- </xsl:choose>
+ </xsl:choose> -->
+ <!-- Added for https://github.com/metanorma/isodoc/issues/614 -->
+ <xsl:apply-templates select="following-sibling::itu:p[not(preceding-sibling::itu:clause)][starts-with(normalize-space(), '(')]/node()"/>
</fo:block>
</xsl:if>
</fo:block>
</xsl:template>
+ <!-- Added for https://github.com/metanorma/isodoc/issues/614 -->
+ <!-- renders in the annex/title template -->
+ <xsl:template match="itu:annex/itu:p[preceding-sibling::*[1][self::itu:title or self::itu:variant-title]][starts-with(normalize-space(), '(')]" priority="3"/>
+
<!-- Bibliography -->
<xsl:template match="itu:references[not(@normative='true')]/itu:title">
<fo:block font-size="14pt" font-weight="bold" text-align="center" margin-bottom="18pt" role="H1">
<xsl:if test="$doctype = 'implementers-guide'">
<xsl:attribute name="text-align">left</xsl:attribute>
@@ -2223,36 +2230,54 @@
</fo:inline>
<fo:inline font-weight="bold">
<xsl:call-template name="setStyle_preferred"/>
<xsl:apply-templates/>
</fo:inline>
- <xsl:if test="../itu:termsource/itu:origin">
- <xsl:text>: </xsl:text>
+ <xsl:if test="../itu:termsource">
+ <!-- https://github.com/metanorma/isodoc/issues/614 -->
+ <!-- <xsl:text>: </xsl:text> -->
+ <xsl:text> </xsl:text>
<xsl:variable name="citeas" select="../itu:termsource/itu:origin/@citeas"/>
<xsl:variable name="bibitemid" select="../itu:termsource/itu:origin/@bibitemid"/>
<xsl:variable name="origin_text" select="normalize-space(../itu:termsource/itu:origin/text())"/>
- <xsl:call-template name="insert_basic_link">
- <xsl:with-param name="element">
- <fo:basic-link internal-destination="{$bibitemid}" fox:alt-text="{$citeas}">
- <xsl:choose>
- <xsl:when test="$origin_text != ''">
- <xsl:text> </xsl:text><xsl:apply-templates select="../itu:termsource/itu:origin/node()"/>
- </xsl:when>
- <xsl:when test="contains($citeas, '[')">
- <xsl:text> </xsl:text><xsl:value-of select="$citeas"/> <!-- disable-output-escaping="yes" -->
- </xsl:when>
- <xsl:otherwise>
- <xsl:text> [</xsl:text><xsl:value-of select="$citeas"/><xsl:text>]</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </fo:basic-link>
- </xsl:with-param>
- </xsl:call-template>
+ <xsl:choose>
+ <xsl:when test="$origin_text != '' or $citeas != ''">
+ <xsl:call-template name="insert_basic_link">
+ <xsl:with-param name="element">
+ <fo:basic-link internal-destination="{$bibitemid}" fox:alt-text="{$citeas}">
+ <xsl:choose>
+ <xsl:when test="$origin_text != ''">
+ <xsl:text> </xsl:text><xsl:apply-templates select="../itu:termsource/itu:origin/node()"/>
+ </xsl:when>
+ <!-- https://github.com/metanorma/isodoc/issues/614 -->
+ <!-- <xsl:when test="contains($citeas, '[')">
+ <xsl:text> </xsl:text><xsl:value-of select="$citeas"/>disable-output-escaping="yes"
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text> [</xsl:text><xsl:value-of select="$citeas"/><xsl:text>]</xsl:text>
+ </xsl:otherwise> -->
+ <xsl:otherwise>
+ <xsl:text> </xsl:text><xsl:value-of select="$citeas"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:basic-link>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="../itu:termsource">
+ <xsl:with-param name="process">true</xsl:with-param>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:if>
<xsl:if test="following-sibling::itu:definition/node()">
- <xsl:text>: </xsl:text>
+ <xsl:if test="../itu:termsource">
+ <xsl:text>:</xsl:text>
+ </xsl:if>
+ <xsl:text> </xsl:text>
<!-- <xsl:apply-templates select="following-sibling::itu:definition/node()" mode="process"/> -->
<xsl:apply-templates select="following-sibling::itu:definition">
<xsl:with-param name="process">true</xsl:with-param>
</xsl:apply-templates>
</xsl:if>
@@ -2260,11 +2285,16 @@
<!-- <xsl:if test="following-sibling::itu:table">
<fo:block space-after="18pt"> </fo:block>
</xsl:if> -->
</xsl:template> <!-- preferred -->
- <xsl:template match="itu:term[itu:preferred]/itu:termsource" priority="2"/>
+ <xsl:template match="itu:term[itu:preferred]/itu:termsource" priority="2">
+ <xsl:param name="process">false</xsl:param>
+ <xsl:if test="$process = 'true'">
+ <xsl:apply-templates/>
+ </xsl:if>
+ </xsl:template>
<xsl:template match="itu:term[itu:preferred]/itu:definition" priority="2">
<xsl:param name="process">false</xsl:param>
<xsl:if test="$process = 'true'">
<xsl:apply-templates/>
@@ -6294,22 +6324,25 @@
<fo:inline id="{@id}" xsl:use-attribute-sets="table-fn-number-style">
<xsl:call-template name="refine_table-fn-number-style"/>
<xsl:value-of select="@reference"/>
+ <!-- commented https://github.com/metanorma/isodoc/issues/614 -->
+ <!-- <xsl:if test="$namespace = 'itu'">
<xsl:text>)</xsl:text>
+ </xsl:if> -->
</fo:inline>
<fo:inline xsl:use-attribute-sets="table-fn-body-style">
<xsl:copy-of select="./node()"/>
</fo:inline>
</fo:block>
</xsl:if>
</xsl:for-each>
- </xsl:template>
+ </xsl:template> <!-- table_fn_display -->
<xsl:template name="create_fn">
<fn reference="{@reference}" id="{@reference}_{ancestor::*[@id][1]/@id}">
<xsl:if test="ancestor::*[local-name()='table'][1]/@id"> <!-- for footnotes in tables -->
<xsl:attribute name="id">
@@ -6337,12 +6370,14 @@
</xsl:template>
<!-- ============================ -->
<!-- EMD table's footnotes rendering -->
<!-- ============================ -->
+ <!-- ============================ -->
<!-- figure's footnotes rendering -->
- <xsl:template name="fn_display_figure">
+ <!-- ============================ -->
+ <xsl:template name="fn_display_figure"> <!-- figure_fn_display -->
<!-- current figure id -->
<xsl:variable name="figure_id_">
<xsl:value-of select="@id"/>
<xsl:if test="not(@id)"><xsl:value-of select="generate-id()"/></xsl:if>
@@ -6451,13 +6486,32 @@
</fo:table-body>
</fo:table>
</fo:block>
</xsl:if>
-
</xsl:template> <!-- fn_display_figure -->
+ <!-- added for https://github.com/metanorma/isodoc/issues/607 -->
+ <!-- figure's footnote label -->
+ <xsl:template match="*[local-name() = 'figure']/*[local-name() = 'dl'][@key = 'true']/*[local-name() = 'dt']/ *[local-name() = 'p'][count(node()[normalize-space() != '']) = 1]/*[local-name() = 'sup']" priority="3">
+ <xsl:variable name="key_iso">
+
+ </xsl:variable>
+ <xsl:if test="normalize-space($key_iso) = 'true'">
+ <xsl:attribute name="font-size">10pt</xsl:attribute>
+
+ </xsl:if>
+ <fo:inline xsl:use-attribute-sets="figure-fn-number-style"> <!-- id="{@id}" -->
+ <!-- <xsl:value-of select="@reference"/> -->
+ <xsl:apply-templates/>
+ </fo:inline>
+ </xsl:template>
+
+ <!-- ============================ -->
+ <!-- END: figure's footnotes rendering -->
+ <!-- ============================ -->
+
<!-- fn reference in the text rendering (for instance, 'some text 1) some text' ) -->
<xsl:template match="*[local-name()='fn']">
<fo:inline xsl:use-attribute-sets="fn-reference-style">
<xsl:call-template name="refine_fn-reference-style"/>
@@ -6469,10 +6523,14 @@
</xsl:attribute>
</xsl:if>
<xsl:value-of select="@reference"/>
+ <!-- commented, https://github.com/metanorma/isodoc/issues/614 -->
+ <!-- <xsl:if test="$namespace = 'jis'">
+ <fo:inline font-weight="normal">)</fo:inline>
+ </xsl:if> -->
</fo:basic-link>
</fo:inline>
</xsl:template>
<xsl:template match="*[local-name()='fn']/text()[normalize-space() != '']">
@@ -6629,21 +6687,26 @@
<!-- preceding 'p' with word 'where' -->
<xsl:apply-templates select="preceding-sibling::*[1][local-name() = 'p' and @keep-with-next = 'true']/node()"/>
</fo:block>
</xsl:when> <!-- END: a few components -->
<xsl:when test="$parent = 'figure' and (not(../@class) or ../@class !='pseudocode')"> <!-- definition list in a figure -->
- <fo:block font-weight="bold" text-align="left" margin-bottom="12pt" keep-with-next="always">
+ <!-- Presentation XML contains 'Key' caption, https://github.com/metanorma/isodoc/issues/607 -->
+ <xsl:if test="not(preceding-sibling::*[1][local-name() = 'p' and @keep-with-next])"> <!-- for old Presentation XML -->
- <xsl:call-template name="refine_figure_key_style"/>
+ <fo:block font-weight="bold" text-align="left" margin-bottom="12pt" keep-with-next="always">
- <xsl:variable name="title-key">
- <xsl:call-template name="getLocalizedString">
- <xsl:with-param name="key">key</xsl:with-param>
- </xsl:call-template>
- </xsl:variable>
- <xsl:value-of select="$title-key"/>
- </fo:block>
+ <xsl:call-template name="refine_figure_key_style"/>
+
+ <xsl:variable name="title-key">
+ <xsl:call-template name="getLocalizedString">
+ <xsl:with-param name="key">key</xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$title-key"/>
+ </fo:block>
+
+ </xsl:if>
</xsl:when> <!-- END: definition list in a figure -->
</xsl:choose>
<!-- a few components -->
<xsl:if test="$onlyOneComponent = 'false'">
@@ -6825,10 +6888,18 @@
<xsl:apply-templates select="*[local-name() = 'dd']/*[local-name() = 'dl']"/>
</xsl:if>
</xsl:template> <!-- END: dl -->
+ <!-- caption for figure key and another caption, https://github.com/metanorma/isodoc/issues/607 -->
+ <xsl:template match="*[local-name() = 'figure']/*[local-name() = 'p'][@keep-with-next = 'true' and *[local-name() = 'strong']]" priority="3">
+ <fo:block text-align="left" margin-bottom="12pt" keep-with-next="always">
+ <xsl:call-template name="refine_figure_key_style"/>
+ <xsl:apply-templates/>
+ </fo:block>
+ </xsl:template>
+
<xsl:template name="refine_dl_formula_where_style">
<xsl:attribute name="margin-bottom">6pt</xsl:attribute>
</xsl:template> <!-- refine_dl_formula_where_style -->
@@ -8867,10 +8938,43 @@
</xsl:if>
<xsl:apply-templates mode="mathml"/>
</xsl:copy>
</xsl:template>
+ <xsl:template match="@*|node()" mode="mathml_linebreak">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|node()" mode="mathml_linebreak"/>
+ </xsl:copy>
+ </xsl:template>
+
+ <!-- split math into two math -->
+ <xsl:template match="mathml:mo[@linebreak] | mathml:mspace[@linebreak]" mode="mathml_linebreak">
+ <xsl:variable name="math_elements_tree_">
+ <xsl:for-each select="ancestor::*[ancestor-or-self::mathml:math]">
+ <element pos="{position()}">
+ <xsl:copy-of select="@*[local-name() != 'id']"/>
+ <xsl:value-of select="name()"/>
+ </element>
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:variable name="math_elements_tree" select="xalan:nodeset($math_elements_tree_)"/>
+
+ <xsl:call-template name="insertClosingElements">
+ <xsl:with-param name="tree" select="$math_elements_tree"/>
+ </xsl:call-template>
+
+ <xsl:element name="br" namespace="{$namespace_full}"/>
+
+ <xsl:call-template name="insertOpeningElements">
+ <xsl:with-param name="tree" select="$math_elements_tree"/>
+ <xsl:with-param name="xmlns">http://www.w3.org/1998/Math/MathML</xsl:with-param>
+ <xsl:with-param name="add_continue">false</xsl:with-param>
+ </xsl:call-template>
+
+ </xsl:template>
+
<!-- Examples:
<stem type="AsciiMath">x = 1</stem>
<stem type="AsciiMath"><asciimath>x = 1</asciimath></stem>
<stem type="AsciiMath"><asciimath>x = 1</asciimath><latexmath>x = 1</latexmath></stem>
-->
@@ -9118,13 +9222,15 @@
<xsl:apply-templates/>
</fo:inline>
</xsl:template>
<xsl:template match="*[local-name() = 'formula']/*[local-name() = 'name']"> <!-- show in 'stem' template -->
+ <!-- https://github.com/metanorma/isodoc/issues/607
<xsl:if test="normalize-space() != ''">
- <xsl:text>(</xsl:text><xsl:apply-templates/><xsl:text>)</xsl:text>
- </xsl:if>
+ <xsl:text>(</xsl:text><xsl:apply-templates /><xsl:text>)</xsl:text>
+ </xsl:if> -->
+ <xsl:apply-templates/>
</xsl:template>
<!-- stem inside formula with name (with formula's number) -->
<xsl:template match="*[local-name() = 'formula'][*[local-name() = 'name']]/*[local-name() = 'stem']">
<fo:block xsl:use-attribute-sets="formula-style">
@@ -9280,12 +9386,21 @@
<xsl:when test="$sfx != ''">
<xsl:value-of select="$sfx"/>
</xsl:when>
<xsl:otherwise>
- <xsl:text> – </xsl:text>
+ <!-- https://github.com/metanorma/isodoc/issues/607 -->
+ <!-- <xsl:if test="$namespace = 'ieee'">
+ <xsl:text>—</xsl:text> em dash —
+ </xsl:if> -->
+ <!-- <xsl:if test="$namespace = 'iho' or $namespace = 'gb' or $namespace = 'm3d' or $namespace = 'unece-rec' or $namespace = 'unece' or $namespace = 'rsd'">
+ <xsl:text>:</xsl:text>
+ </xsl:if> -->
+ <!-- <xsl:if test="$namespace = 'itu' or $namespace = 'nist-cswp' or $namespace = 'nist-sp'">
+ <xsl:text> – </xsl:text> en dash –
+ </xsl:if> -->
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:if test="normalize-space() != ''">
<xsl:apply-templates/>
@@ -9300,12 +9415,20 @@
<xsl:when test="$sfx != ''">
<xsl:value-of select="$sfx"/>
</xsl:when>
<xsl:otherwise>
- <xsl:text> – </xsl:text>
-
+ <!-- https://github.com/metanorma/isodoc/issues/607 -->
+ <!-- <xsl:if test="$namespace = 'ieee'">
+ <xsl:text>—</xsl:text> em dash —
+ </xsl:if> -->
+ <!-- <xsl:if test="$namespace = 'gb' or $namespace = 'iso' or $namespace = 'iec' or $namespace = 'ogc' or $namespace = 'ogc-white-paper' or $namespace = 'rsd' or $namespace = 'jcgm'">
+ <xsl:text>:</xsl:text>
+ </xsl:if> -->
+ <!-- <xsl:if test="$namespace = 'itu' or $namespace = 'nist-cswp' or $namespace = 'nist-sp' or $namespace = 'unece-rec' or $namespace = 'unece'">
+ <xsl:text> – </xsl:text> en dash –
+ </xsl:if> -->
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:if test="normalize-space() != ''">
<xsl:apply-templates/>
@@ -11469,11 +11592,11 @@
<xsl:template match="*[local-name() = 'termexample']/*[local-name() = 'name']">
<xsl:if test="normalize-space() != ''">
<fo:inline xsl:use-attribute-sets="termexample-name-style">
<xsl:call-template name="refine_termexample-name-style"/>
- <xsl:apply-templates/>
+ <xsl:apply-templates/> <!-- commented $namespace = 'ieee', https://github.com/metanorma/isodoc/issues/614-->
</fo:inline>
</xsl:if>
</xsl:template>
<xsl:template match="*[local-name() = 'termexample']/*[local-name() = 'p']">
@@ -11631,11 +11754,11 @@
</fo:block>
</xsl:when>
<xsl:otherwise>
<fo:inline xsl:use-attribute-sets="example-name-style">
<xsl:call-template name="refine_example-name-style"/>
- <xsl:apply-templates/>
+ <xsl:apply-templates/> <!-- $namespace = 'ieee', see https://github.com/metanorma/isodoc/issues/614 -->
</fo:inline>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
@@ -11813,19 +11936,21 @@
<xsl:call-template name="refine_quote-style"/>
<fo:block-container margin-left="0mm" margin-right="0mm" role="SKIP">
<fo:block role="BlockQuote">
- <xsl:apply-templates select="./node()[not(local-name() = 'author') and not(local-name() = 'source')]"/> <!-- process all nested nodes, except author and source -->
+ <xsl:apply-templates select="./node()[not(local-name() = 'author') and not(local-name() = 'source') and not(local-name() = 'attribution')]"/> <!-- process all nested nodes, except author and source -->
</fo:block>
</fo:block-container>
</fo:block-container>
- <xsl:if test="*[local-name() = 'author'] or *[local-name() = 'source']">
+ <xsl:if test="*[local-name() = 'author'] or *[local-name() = 'source'] or *[local-name() = 'attribution']">
<fo:block xsl:use-attribute-sets="quote-source-style">
<!-- — ISO, ISO 7301:2011, Clause 1 -->
<xsl:apply-templates select="*[local-name() = 'author']"/>
<xsl:apply-templates select="*[local-name() = 'source']"/>
+ <!-- added for https://github.com/metanorma/isodoc/issues/607 -->
+ <xsl:apply-templates select="*[local-name() = 'attribution']/*[local-name() = 'p']/node()"/>
</fo:block>
</xsl:if>
</fo:block-container>
</fo:block-container>
@@ -11843,13 +11968,17 @@
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template match="*[local-name() = 'author']">
- <xsl:text>— </xsl:text>
+ <xsl:if test="local-name(..) = 'quote'"> <!-- for old Presentation XML, https://github.com/metanorma/isodoc/issues/607 -->
+ <xsl:text>— </xsl:text>
+ </xsl:if>
<xsl:apply-templates/>
</xsl:template>
+
+ <xsl:template match="*[local-name() = 'quote']//*[local-name() = 'referenceFrom']"/>
<!-- ====== -->
<!-- ====== -->
<xsl:variable name="bibitems_">
<xsl:for-each select="//*[local-name() = 'bibitem']">
@@ -12026,12 +12155,16 @@
</fo:block>
</fo:block>
</xsl:template>
<xsl:template match="*[local-name() = 'domain']">
+ <!-- https://github.com/metanorma/isodoc/issues/607
<fo:inline xsl:use-attribute-sets="domain-style"><<xsl:apply-templates/>></fo:inline>
- <xsl:text> </xsl:text>
+ <xsl:text> </xsl:text> -->
+ <xsl:if test="not(@hidden = 'true')">
+ <xsl:apply-templates/>
+ </xsl:if>
</xsl:template>
<xsl:template match="*[local-name() = 'admitted']">
<fo:block xsl:use-attribute-sets="admitted-style">
<xsl:apply-templates/>
@@ -12075,18 +12208,43 @@
</xsl:template>
<!-- ========== -->
<!-- END definition -->
<!-- ========== -->
+ <xsl:variable name="reviews_">
+ <xsl:for-each select="//*[local-name() = 'review'][@from]">
+ <xsl:copy>
+ <xsl:copy-of select="@from"/>
+ <xsl:copy-of select="@id"/>
+ </xsl:copy>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:variable name="reviews" select="xalan:nodeset($reviews_)"/>
+
+ <xsl:template name="addReviewHelper">
+ <!-- if there is review with from="...", then add small helper block for Annot tag adding, see 'review' template -->
+ <xsl:variable name="curr_id" select="@id"/>
+ <xsl:variable name="review_id" select="normalize-space($reviews//*[local-name() = 'review'][@from = $curr_id]/@id)"/>
+ <xsl:if test="$review_id != ''"> <!-- i.e. if review found -->
+ <fo:block keep-with-next="always" line-height="0.1" id="{$review_id}" font-size="1pt" role="SKIP"><xsl:value-of select="$hair_space"/><fo:basic-link internal-destination="{$review_id}" fox:alt-text="Annot___{$review_id}" role="Annot"><xsl:value-of select="$hair_space"/></fo:basic-link></fo:block>
+ </xsl:if>
+ <!-- <fo:block>
+ <curr_id><xsl:value-of select="$curr_id"/></curr_id>
+ <xsl:copy-of select="$reviews"/>
+ </fo:block> -->
+ </xsl:template>
+
<!-- main sections -->
<xsl:template match="/*/*[local-name() = 'sections']/*" name="sections_node" priority="2">
<fo:block>
<xsl:call-template name="setId"/>
<xsl:call-template name="sections_element_style"/>
+ <xsl:call-template name="addReviewHelper"/>
+
<xsl:apply-templates/>
</fo:block>
</xsl:template>
@@ -12125,10 +12283,11 @@
<fo:block break-after="page"/>
<fo:block>
<xsl:call-template name="setId"/>
+ <xsl:call-template name="addReviewHelper"/>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<!-- preface/ page_sequence/clause -->
@@ -12161,10 +12320,12 @@
<xsl:call-template name="setBlockSpanAll"/>
<xsl:call-template name="refine_clause_style"/>
+ <xsl:call-template name="addReviewHelper"/>
+
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template name="refine_clause_style">
@@ -12217,23 +12378,41 @@
<!-- <fo:block font-weight="bold">Review:</fo:block>
<xsl:apply-templates /> -->
<xsl:variable name="id_from" select="normalize-space(current()/@from)"/>
+ <xsl:if test="1 = 1">
<xsl:choose>
<!-- if there isn't the attribute '@from', then -->
<xsl:when test="$id_from = ''">
+ <fo:block id="{@id}" font-size="1pt" role="SKIP"><xsl:value-of select="$hair_space"/><fo:basic-link internal-destination="{@id}" fox:alt-text="Annot___{@id}" role="Annot"><xsl:value-of select="$hair_space"/></fo:basic-link></fo:block>
+ </xsl:when>
+ <!-- if there isn't element with id 'from', then create 'bookmark' here -->
+ <xsl:when test="ancestor::*[contains(local-name(), '-standard')] and not(ancestor::*[contains(local-name(), '-standard')]//*[@id = $id_from])">
+ <fo:block id="{@from}" font-size="1pt" role="SKIP"><xsl:value-of select="$hair_space"/><fo:basic-link internal-destination="{@from}" fox:alt-text="Annot___{@id}" role="Annot"><xsl:value-of select="$hair_space"/></fo:basic-link></fo:block>
+ </xsl:when>
+ <xsl:when test="not(/*[@id = $id_from]) and not(/*//*[@id = $id_from]) and not(preceding-sibling::*[@id = $id_from])">
+ <fo:block id="{@from}" font-size="1pt" role="SKIP"><xsl:value-of select="$hair_space"/><fo:basic-link internal-destination="{@from}" fox:alt-text="Annot___{@id}" role="Annot"><xsl:value-of select="$hair_space"/></fo:basic-link></fo:block>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="1 = 2">
+ <xsl:choose>
+ <!-- if there isn't the attribute '@from', then -->
+ <xsl:when test="$id_from = ''">
<fo:block id="{@id}" font-size="1pt"><xsl:value-of select="$hair_space"/></fo:block>
</xsl:when>
<!-- if there isn't element with id 'from', then create 'bookmark' here -->
<xsl:when test="ancestor::*[contains(local-name(), '-standard')] and not(ancestor::*[contains(local-name(), '-standard')]//*[@id = $id_from])">
<fo:block id="{@from}" font-size="1pt"><xsl:value-of select="$hair_space"/></fo:block>
</xsl:when>
<xsl:when test="not(/*[@id = $id_from]) and not(/*//*[@id = $id_from]) and not(preceding-sibling::*[@id = $id_from])">
<fo:block id="{@from}" font-size="1pt"><xsl:value-of select="$hair_space"/></fo:block>
</xsl:when>
</xsl:choose>
+ </xsl:if>
</xsl:template>
<!-- https://github.com/metanorma/mn-samples-bsi/issues/312 -->
<xsl:template match="*[local-name() = 'review'][@type = 'other']"/>
@@ -13619,11 +13798,11 @@
<xsl:template match="*[local-name() = 'image']/*[local-name() = 'emf']" mode="update_xml_step1"/>
<!-- remove preprocess-xslt -->
<xsl:template match="*[local-name() = 'preprocess-xslt']" mode="update_xml_step1"/>
- <xsl:template match="*[local-name() = 'stem'] | *[local-name() = 'image'] | *[local-name() = 'sourcecode'] | *[local-name() = 'bibdata'] | *[local-name() = 'localized-strings']" mode="update_xml_step1">
+ <xsl:template match="*[local-name() = 'stem'][not(.//*[local-name() = 'passthrough']) and not(.//*[@linebreak])] | *[local-name() = 'image'][not(.//*[local-name() = 'passthrough'])] | *[local-name() = 'sourcecode'][not(.//*[local-name() = 'passthrough'])] | *[local-name() = 'bibdata'][not(.//*[local-name() = 'passthrough'])] | *[local-name() = 'localized-strings']" mode="update_xml_step1">
<xsl:copy-of select="."/>
</xsl:template>
<xsl:template match="*[local-name() = 'metanorma-extension']/*[local-name() = 'attachment']" mode="update_xml_step1">
<xsl:copy>
@@ -13685,10 +13864,26 @@
</xsl:copy>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
+ <xsl:variable name="regex_passthrough">.*\bpdf\b.*</xsl:variable>
+ <xsl:template match="*[local-name() = 'passthrough']" mode="update_xml_step1">
+ <!-- <xsl:if test="contains(@formats, ' pdf ')"> -->
+ <xsl:if test="normalize-space(java:matches(java:java.lang.String.new(@formats), $regex_passthrough)) = 'true'">
+ <xsl:apply-templates mode="update_xml_step1"/>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- split math by element with @linebreak into maths -->
+ <xsl:template match="mathml:math[.//mathml:mo[@linebreak] or .//mathml:mspace[@linebreak]]" mode="update_xml_step1">
+ <xsl:variable name="maths">
+ <xsl:apply-templates select="." mode="mathml_linebreak"/>
+ </xsl:variable>
+ <xsl:copy-of select="$maths"/>
+ </xsl:template>
+
<!-- =========================================================================== -->
<!-- END STEP1: Re-order elements in 'preface', 'sections' based on @displayorder -->
<!-- =========================================================================== -->
<!-- =========================================================================== -->
@@ -13788,20 +13983,23 @@
</xsl:for-each>
</xsl:template>
<xsl:template name="insertOpeningElements">
<xsl:param name="tree"/>
+ <xsl:param name="xmlns"/>
+ <xsl:param name="add_continue">true</xsl:param>
<xsl:for-each select="$tree//element">
<xsl:text disable-output-escaping="yes"><</xsl:text>
<xsl:value-of select="."/>
<xsl:for-each select="@*[local-name() != 'pos']">
<xsl:text> </xsl:text>
<xsl:value-of select="local-name()"/>
<xsl:text>="</xsl:text>
<xsl:value-of select="."/>
<xsl:text>"</xsl:text>
</xsl:for-each>
- <xsl:if test="position() = 1"> continue="true"</xsl:if>
+ <xsl:if test="position() = 1 and $add_continue = 'true'"> continue="true"</xsl:if>
+ <xsl:if test="position() = 1 and $xmlns != ''"> xmlns="<xsl:value-of select="$xmlns"/>"</xsl:if>
<xsl:text disable-output-escaping="yes">></xsl:text>
<xsl:if test="$debug = 'true'">
<xsl:message><<xsl:value-of select="."/>></xsl:message>
</xsl:if>
</xsl:for-each>
\ No newline at end of file