lib/isodoc/iso/iso.amendment.xsl
<?xml version="1.0" encoding="UTF-8"?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:iso="https://www.metanorma.org/ns/iso" xmlns:mathml="http://www.w3.org/1998/Math/MathML" xmlns:xalan="http://xml.apache.org/xalan" xmlns:fox="http://xmlgraphics.apache.org/fop/extensions" xmlns:pdf="http://xmlgraphics.apache.org/fop/extensions/pdf" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:java="http://xml.apache.org/xalan/java" xmlns:barcode="http://barcode4j.krysalis.org/ns" xmlns:redirect="http://xml.apache.org/xalan/redirect" exclude-result-prefixes="java" extension-element-prefixes="redirect" version="1.0">
<xsl:output method="xml" encoding="UTF-8" indent="no"/>
<xsl:key name="kfn" match="*[local-name() = 'fn'][not(ancestor::*[(local-name() = 'table' or local-name() = 'figure' or local-name() = 'localized-strings')] and not(ancestor::*[local-name() = 'name']))]" use="@reference"/>
<xsl:key name="attachments" match="iso:eref[java:endsWith(java:java.lang.String.new(@bibitemid),'.exp')]" use="@bibitemid"/>
<xsl:key name="attachments2" match="iso:eref[contains(@bibitemid,'.exp_')]" use="@bibitemid"/>
<xsl:variable name="debug">false</xsl:variable>
<xsl:variable name="column_gap">8.5mm</xsl:variable>
<xsl:variable name="docidentifierISO_undated"><xsl:if test="not($stage-abbreviation = 'FDAMD' or $stage-abbreviation = 'FDAM' or $stage-abbreviation = 'DAMD' or $stage-abbreviation = 'DAM')"><xsl:value-of select="normalize-space(/iso:iso-standard/iso:bibdata/iso:docidentifier[@type = 'iso-undated'])"/></xsl:if></xsl:variable>
<xsl:variable name="docidentifierISO_">
<xsl:value-of select="$docidentifierISO_undated"/>
<xsl:if test="$docidentifierISO_undated = ''">
<xsl:value-of select="/iso:iso-standard/iso:bibdata/iso:docidentifier[@type = 'iso'] | /iso:iso-standard/iso:bibdata/iso:docidentifier[@type = 'ISO']"/>
</xsl:if>
</xsl:variable>
<xsl:variable name="docidentifierISO" select="normalize-space($docidentifierISO_)"/>
<xsl:variable name="docidentifierISO_with_break" select="java:replaceAll(java:java.lang.String.new($docidentifierISO),'^([^\d]+) (\d)', concat('$1', $linebreak, '$2'))"/> <!-- add line break before 1st sequence 'space digit' -->
<xsl:variable name="docidentifier_another_">
<xsl:for-each select="/iso:iso-standard/iso:bibdata/iso:docidentifier[@type != '' and @type != 'ISO' and not(starts-with(@type, 'iso-')) and @type != 'URN']">
<xsl:value-of select="."/>
<xsl:if test="position() != last()"><xsl:value-of select="$linebreak"/></xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="docidentifier_another">
<xsl:if test="normalize-space($docidentifier_another_) != ''">
<fo:block margin-top="12pt">
<xsl:value-of select="java:replaceAll(java:java.lang.String.new($docidentifier_another_),'^([^\d]+) (\d)', concat('$1', $linebreak, '$2'))"/>
</fo:block>
</xsl:if>
</xsl:variable>
<xsl:variable name="copyrightYear" select="/iso:iso-standard/iso:bibdata/iso:copyright/iso:from"/>
<xsl:variable name="copyrightAbbr__">
<xsl:for-each select="/iso:iso-standard/iso:bibdata/iso:copyright/iso:owner/iso:organization[normalize-space(iso:abbreviation) != 'IEEE']">
<abbr>
<xsl:choose>
<xsl:when test="iso:abbreviation"><xsl:value-of select="iso:abbreviation"/></xsl:when>
<xsl:otherwise><xsl:value-of select="iso:name"/></xsl:otherwise>
</xsl:choose>
</abbr>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="copyrightAbbr_">
<xsl:for-each select="xalan:nodeset($copyrightAbbr__)//*">
<xsl:value-of select="."/>
<xsl:if test="position() != last()">
<xsl:choose>
<xsl:when test="following-sibling::*[1]/text() = 'IDF'"> and </xsl:when>
<xsl:otherwise>/</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="copyrightAbbr" select="normalize-space($copyrightAbbr_)"/>
<xsl:variable name="copyrightAbbrIEEE" select="normalize-space(/iso:iso-standard/iso:bibdata/iso:copyright/iso:owner/iso:organization/iso:abbreviation[. = 'IEEE'])"/>
<xsl:variable name="copyrightText">
<xsl:value-of select="concat('© ', $copyrightAbbr, ' ', $copyrightYear ,' – ', $i18n_all_rights_reserved)"/>
<xsl:if test="$copyrightAbbrIEEE != ''">
<xsl:value-of select="$linebreak"/>
<xsl:value-of select="concat('© ', $copyrightAbbrIEEE, ' ', $copyrightYear ,' – ', $i18n_all_rights_reserved)"/>
</xsl:if>
</xsl:variable>
<xsl:variable name="copyrightTextLastPage2024">
<xsl:value-of select="concat('© ', $copyrightAbbr, ' ', $copyrightYear)"/>
<xsl:if test="$copyrightAbbrIEEE != ''">
<xsl:value-of select="$linebreak"/>
<xsl:value-of select="concat('© ', $copyrightAbbrIEEE, ' ', $copyrightYear)"/>
</xsl:if>
<xsl:value-of select="$linebreak"/>
<xsl:value-of select="$i18n_all_rights_reserved"/>
</xsl:variable>
<xsl:variable name="docidentifier_iso_with_lang" select="/iso:iso-standard/iso:bibdata/iso:docidentifier[@type = 'iso-with-lang']"/>
<xsl:variable name="lang-1st-letter_tmp" select="substring-before(substring-after($docidentifier_iso_with_lang, '('), ')')"/>
<xsl:variable name="lang-1st-letter" select="concat('(', $lang-1st-letter_tmp , ')')"/>
<xsl:variable name="iso_reference" select="/iso:iso-standard/iso:bibdata/iso:docidentifier[@type = 'iso-reference']"/>
<xsl:variable name="anotherNumbers">
<xsl:variable name="year_iso_reference" select="concat(':',substring-after($iso_reference,':'))"/>
<xsl:for-each select="/iso:iso-standard/iso:bibdata/iso:docidentifier[@type != '' and @type != 'ISO' and not(starts-with(@type, 'iso-')) and @type != 'URN']">
<xsl:value-of select="$linebreak"/><xsl:value-of select="concat(., $year_iso_reference)"/>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="ISOnumber">
<xsl:choose>
<xsl:when test="$layoutVersion = '2024' and $docidentifier_iso_with_lang != ''">
<xsl:value-of select="$docidentifier_iso_with_lang"/>
</xsl:when>
<xsl:otherwise>
<!-- part separator '-' replace to '/' -->
<xsl:variable name="iso_reference_tmp" select="java:replaceAll(java:java.lang.String.new($iso_reference),'-','/')"/>
<xsl:choose>
<!-- year separator replace to '-' -->
<xsl:when test="$layoutVersion = '1951'">
<xsl:variable name="iso_reference_tmp_" select="java:replaceAll(java:java.lang.String.new($iso_reference_tmp),':',' - ')"/>
<!-- insert space before ( -->
<xsl:value-of select="java:replaceAll(java:java.lang.String.new($iso_reference_tmp_),'\(',' \(')"/>
</xsl:when>
<xsl:when test="$layoutVersion = '1972' or $layoutVersion = '1979'">
<xsl:value-of select="java:replaceAll(java:java.lang.String.new($iso_reference_tmp),':','-')"/>
</xsl:when>
<xsl:when test="$layoutVersion = '1987'">
<!-- insert space around : -->
<xsl:variable name="iso_reference_tmp_" select="java:replaceAll(java:java.lang.String.new($iso_reference_tmp),':',' : ')"/>
<!-- insert space before ( -->
<xsl:value-of select="java:replaceAll(java:java.lang.String.new($iso_reference_tmp_),'\(',' \(')"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$iso_reference"/>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
<xsl:value-of select="$anotherNumbers"/>
</xsl:variable>
<xsl:variable name="part" select="normalize-space(/iso:iso-standard/iso:bibdata/iso:ext/iso:structuredidentifier/iso:project-number/@part)"/>
<xsl:variable name="doctype" select="/iso:iso-standard/iso:bibdata/iso:ext/iso:doctype"/>
<xsl:variable name="doctype_localized_" select="/iso:iso-standard/iso:bibdata/iso:ext/iso:doctype[@language = $lang]"/>
<xsl:variable name="doctype_localized">
<xsl:choose>
<xsl:when test="$doctype_localized_ != ''">
<xsl:value-of select="translate(normalize-space($doctype_localized_),'-',' ')"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="translate(normalize-space($doctype),'-',' ')"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="doctype_uppercased" select="java:toUpperCase(java:java.lang.String.new($doctype_localized))"/>
<xsl:variable name="stage" select="number(/iso:iso-standard/iso:bibdata/iso:status/iso:stage)"/>
<xsl:variable name="substage" select="number(/iso:iso-standard/iso:bibdata/iso:status/iso:substage)"/>
<xsl:variable name="stagename" select="normalize-space(/iso:iso-standard/iso:bibdata/iso:ext/iso:stagename)"/>
<xsl:variable name="stagename_abbreviation" select="normalize-space(/iso:iso-standard/iso:bibdata/iso:ext/iso:stagename/@abbreviation)"/>
<xsl:variable name="stagename_localized" select="normalize-space(/iso:iso-standard/iso:bibdata/iso:status/iso:stage[@language = $lang])"/>
<xsl:variable name="abbreviation" select="normalize-space(/iso:iso-standard/iso:bibdata/iso:status/iso:stage/@abbreviation)"/>
<xsl:variable name="abbreviation_uppercased" select="java:toUpperCase(java:java.lang.String.new($abbreviation))"/>
<xsl:variable name="stage-abbreviation">
<xsl:choose>
<xsl:when test="$abbreviation_uppercased != ''">
<xsl:value-of select="$abbreviation_uppercased"/>
</xsl:when>
<xsl:when test="$stage = 0 and $substage = 0">PWI</xsl:when>
<xsl:when test="$stage = 0">NWIP</xsl:when> <!-- NWIP (NP) -->
<xsl:when test="$stage = 10">AWI</xsl:when>
<xsl:when test="$stage = 20">WD</xsl:when>
<xsl:when test="$stage = 30">CD</xsl:when>
<xsl:when test="$stage = 40">DIS</xsl:when>
<xsl:when test="$stage = 50">FDIS</xsl:when>
<xsl:when test="$stage = 60 and $substage = 0">PRF</xsl:when>
<xsl:when test="$stage = 60 and $substage = 60">IS</xsl:when>
<xsl:when test="$stage >=60">published</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:variable>
<xsl:variable name="stage-fullname">
<xsl:choose>
<xsl:when test="$stagename_localized != ''"> <!-- and $layoutVersion != '2024' -->
<xsl:value-of select="$stagename_localized"/>
</xsl:when>
<xsl:when test="$stagename != ''">
<xsl:value-of select="$stagename"/>
</xsl:when>
<xsl:when test="$stage-abbreviation = 'NWIP' or $stage-abbreviation = 'NP'">NEW WORK ITEM PROPOSAL</xsl:when>
<xsl:when test="$stage-abbreviation = 'PWI'">PRELIMINARY WORK ITEM</xsl:when>
<xsl:when test="$stage-abbreviation = 'AWI'">APPROVED WORK ITEM</xsl:when>
<xsl:when test="$stage-abbreviation = 'WD'">WORKING DRAFT</xsl:when>
<xsl:when test="$stage-abbreviation = 'CD'">COMMITTEE DRAFT</xsl:when>
<xsl:when test="$stage-abbreviation = 'DIS'">DRAFT INTERNATIONAL STANDARD</xsl:when>
<xsl:when test="$stage-abbreviation = 'FDIS'">FINAL DRAFT INTERNATIONAL STANDARD</xsl:when>
<xsl:otherwise><xsl:value-of select="$doctype_localized"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="stage-fullname-uppercased" select="java:toUpperCase(java:java.lang.String.new($stage-fullname))"/>
<xsl:variable name="stagename-header-firstpage">
<xsl:choose>
<!-- $stage-abbreviation = 'PRF' -->
<xsl:when test="$stagename_abbreviation = 'PRF'"><xsl:value-of select="$doctype_localized"/></xsl:when>
<xsl:when test="$layoutVersion = '2024' and $stagename_localized != ''">
<xsl:value-of select="$stagename_localized"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$stage-fullname"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="stagename-header-firstpage-uppercased" select="java:toUpperCase(java:java.lang.String.new($stagename-header-firstpage))"/>
<xsl:variable name="stagename-header-coverpage">
<xsl:choose>
<xsl:when test="$stage-abbreviation = 'DIS' or $stage-abbreviation = 'DAMD' or $stage-abbreviation = 'DAM' or starts-with($stage-abbreviation, 'DTS') or starts-with($stage-abbreviation, 'DTR') or $stagename_abbreviation = 'DIS'">DRAFT</xsl:when>
<xsl:when test="$stage-abbreviation = 'FDIS' or $stage-abbreviation = 'FDAMD' or $stage-abbreviation = 'FDAM' or starts-with($stage-abbreviation, 'FDTS') or starts-with($stage-abbreviation, 'FDTR') or $stagename_abbreviation = 'FDIS'">FINAL DRAFT</xsl:when>
<xsl:when test="$stage-abbreviation = 'PRF'"/>
<xsl:when test="$stage-abbreviation = 'IS'"/>
<xsl:otherwise>
<xsl:value-of select="$stage-fullname-uppercased"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- UPPERCASED stage name -->
<!-- <item name="NWIP" show="true" header="PRELIMINARY WORK ITEM" shortname="NEW WORK ITEM PROPOSAL">NEW WORK ITEM PROPOSAL</item>
<item name="PWI" show="true" header="PRELIMINARY WORK ITEM" shortname="PRELIMINARY WORK ITEM">PRELIMINARY WORK ITEM</item>
<item name="NP" show="true" header="PRELIMINARY WORK ITEM" shortname="NEW WORK ITEM PROPOSAL">NEW WORK ITEM PROPOSAL</item>
<item name="AWI" show="true" header="APPROVED WORK ITEM" shortname="APPROVED WORK ITEM">APPROVED WORK ITEM</item>
<item name="WD" show="true" header="WORKING DRAFT" shortname="WORKING DRAFT">WORKING DRAFT</item>
<item name="CD" show="true" header="COMMITTEE DRAFT" shortname="COMMITTEE DRAFT">COMMITTEE DRAFT</item>
<item name="DIS" show="true" header="DRAFT INTERNATIONAL STANDARD" shortname="DRAFT">DRAFT INTERNATIONAL STANDARD</item>
<item name="FDIS" show="true" header="FINAL DRAFT INTERNATIONAL STANDARD" shortname="FINAL DRAFT">FINAL DRAFT INTERNATIONAL STANDARD</item>
<item name="PRF">PROOF</item> -->
<!--
<status>
<stage>30</stage>
<substage>92</substage>
</status>
The <stage> and <substage> values are well defined,
as the International Harmonized Stage Codes (https://www.iso.org/stage-codes.html):
stage 60 means published, everything before is a Draft (90 means withdrawn, but the document doesn't change anymore) -->
<xsl:variable name="isPublished">
<xsl:choose>
<xsl:when test="string($stage) = 'NaN'">false</xsl:when>
<xsl:when test="$stage >=60">true</xsl:when>
<xsl:when test="normalize-space($stage-abbreviation) != ''">true</xsl:when>
<xsl:otherwise>false</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="document-master-reference">
<xsl:choose>
<xsl:when test="$stage-abbreviation != ''">-publishedISO</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:variable>
<xsl:variable name="force-page-count-preface">
<xsl:choose>
<xsl:when test="$document-master-reference != ''">end-on-even</xsl:when>
<xsl:otherwise>no-force</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="proof-text">PROOF/ÉPREUVE</xsl:variable>
<xsl:variable name="docnumber_with_prefix">
<xsl:if test="$doctype = 'recommendation'">R </xsl:if><xsl:value-of select="/iso:iso-standard/iso:bibdata/iso:docnumber"/>
</xsl:variable>
<xsl:variable name="ISO_title_en">INTERNATIONAL ORGANIZATION FOR STANDARDIZATION</xsl:variable>
<xsl:variable name="ISO_title_ru">МЕЖДУНАРОДНАЯ ОРГАНИЗАЦИЯ ПО СТАНДАРТИЗАЦИИ</xsl:variable>
<xsl:variable name="ISO_title_fr">ORGANISATION INTERNATIONALE DE NORMALISATION</xsl:variable>
<xsl:variable name="i18n_reference_number_abbrev"><xsl:call-template name="getLocalizedString"><xsl:with-param name="key">reference_number_abbrev</xsl:with-param></xsl:call-template></xsl:variable>
<xsl:variable name="i18n_reference_number"><xsl:call-template name="getLocalizedString"><xsl:with-param name="key">reference_number</xsl:with-param></xsl:call-template></xsl:variable>
<xsl:variable name="i18n_descriptors"><xsl:call-template name="getLocalizedString"><xsl:with-param name="key">Descriptor.pl</xsl:with-param></xsl:call-template></xsl:variable>
<xsl:variable name="i18n_voting_begins_on"><xsl:call-template name="getLocalizedString"><xsl:with-param name="key">voting_begins_on</xsl:with-param></xsl:call-template></xsl:variable>
<xsl:variable name="i18n_voting_terminates_on"><xsl:call-template name="getLocalizedString"><xsl:with-param name="key">voting_terminates_on</xsl:with-param></xsl:call-template></xsl:variable>
<xsl:variable name="i18n_price_based_on"><xsl:call-template name="getLocalizedString"><xsl:with-param name="key">price_based_on</xsl:with-param></xsl:call-template></xsl:variable>
<xsl:variable name="i18n_price"><xsl:call-template name="getLocalizedString"><xsl:with-param name="key">price</xsl:with-param></xsl:call-template></xsl:variable>
<xsl:variable name="i18n_date_first_printing"><xsl:call-template name="getLocalizedString"><xsl:with-param name="key">date_first_printing</xsl:with-param></xsl:call-template></xsl:variable>
<xsl:variable name="i18n_date_printing"><xsl:call-template name="getLocalizedString"><xsl:with-param name="key">date_printing</xsl:with-param></xsl:call-template></xsl:variable>
<xsl:variable name="i18n_corrected_version"><xsl:call-template name="getLocalizedString"><xsl:with-param name="key">corrected_version</xsl:with-param></xsl:call-template></xsl:variable>
<xsl:variable name="i18n_fast_track_procedure"><xsl:call-template name="getLocalizedString"><xsl:with-param name="key">fast-track-procedure</xsl:with-param></xsl:call-template></xsl:variable>
<xsl:variable name="i18n_all_rights_reserved"><xsl:call-template name="getLocalizedString"><xsl:with-param name="key">all_rights_reserved</xsl:with-param></xsl:call-template></xsl:variable>
<xsl:variable name="i18n_locality_page"><xsl:call-template name="getLocalizedString"><xsl:with-param name="key">locality.page</xsl:with-param></xsl:call-template></xsl:variable>
<xsl:variable name="i18n_locality_part"><xsl:call-template name="getLocalizedString"><xsl:with-param name="key">locality.part</xsl:with-param></xsl:call-template></xsl:variable>
<xsl:variable name="i18n_secretariat"><xsl:call-template name="getLocalizedString"><xsl:with-param name="key">secretariat</xsl:with-param></xsl:call-template></xsl:variable>
<xsl:variable name="i18n_classification_UDC"><xsl:call-template name="getLocalizedString"><xsl:with-param name="key">classification-UDC</xsl:with-param></xsl:call-template></xsl:variable>
<!-- Example:
<item level="1" id="Foreword" display="true">Foreword</item>
<item id="term-script" display="false">3.2</item>
-->
<xsl:variable name="contents_">
<contents>
<xsl:if test="$isGenerateTableIF = 'false'">
<xsl:call-template name="processPrefaceSectionsDefault_Contents"/>
<xsl:call-template name="processMainSectionsDefault_Contents"/>
<xsl:apply-templates select="//iso:indexsect" mode="contents"/>
<xsl:call-template name="processTablesFigures_Contents"/>
</xsl:if>
</contents>
</xsl:variable>
<xsl:variable name="contents" select="xalan:nodeset($contents_)"/>
<xsl:variable name="lang_other">
<xsl:for-each select="/iso:iso-standard/iso:bibdata/iso:title[@language != $lang]">
<xsl:if test="not(preceding-sibling::iso:title[@language = current()/@language])">
<lang><xsl:value-of select="@language"/></lang>
</xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="editorialgroup_">
<!-- Example: ISO/TC 46/SC 2 -->
<!-- ISO/SG SMART/SG TS/AG 1 -->
<xsl:variable name="approvalgroup" select="normalize-space(/iso:iso-standard/iso:bibdata/iso:ext/iso:approvalgroup/@identifier)"/>
<xsl:variable name="parts_by_slash">
<xsl:call-template name="split">
<xsl:with-param name="pText" select="$approvalgroup"/>
<xsl:with-param name="sep" select="'/'"/>
<xsl:with-param name="normalize-space">false</xsl:with-param>
<xsl:with-param name="keep_sep">true</xsl:with-param>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="parts_with_subparts">
<xsl:for-each select="xalan:nodeset($parts_by_slash)//item">
<subitem>
<xsl:call-template name="split">
<xsl:with-param name="pText" select="."/>
<xsl:with-param name="sep" select="' '"/>
<xsl:with-param name="normalize-space">false</xsl:with-param>
<xsl:with-param name="keep_sep">true</xsl:with-param>
</xsl:call-template>
</subitem>
</xsl:for-each>
</xsl:variable>
<xsl:for-each select="xalan:nodeset($parts_with_subparts)//subitem">
<xsl:choose>
<xsl:when test="position() = 1">
<xsl:value-of select="."/>
</xsl:when>
<xsl:otherwise>
<xsl:for-each select="item">
<xsl:choose>
<xsl:when test="position() = last()">
<fo:inline font-weight="bold"><xsl:value-of select="."/></fo:inline>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="editorialgroup" select="xalan:nodeset($editorialgroup_)"/>
<xsl:variable name="secretariat_">
<xsl:variable name="value" select="normalize-space(/iso:iso-standard/iso:bibdata/iso:ext/iso:editorialgroup/iso:secretariat)"/>
<xsl:if test="$value != ''">
<xsl:value-of select="concat($i18n_secretariat, ': ')"/>
<fo:inline font-weight="bold"><xsl:value-of select="$value"/></fo:inline>
</xsl:if>
</xsl:variable>
<xsl:variable name="secretariat" select="xalan:nodeset($secretariat_)"/>
<xsl:variable name="ics_">
<xsl:for-each select="/iso:iso-standard/iso:bibdata/iso:ext/iso:ics/iso:code">
<xsl:if test="position() = 1"><fo:inline>ICS: </fo:inline></xsl:if>
<xsl:value-of select="."/>
<xsl:if test="position() != last()"><xsl:text>; </xsl:text></xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="ics" select="xalan:nodeset($ics_)"/>
<xsl:variable name="udc">
<xsl:variable name="classification_udc" select="normalize-space(/iso:iso-standard/iso:bibdata/iso:classification[@type = 'UDC'])"/>
<xsl:choose>
<xsl:when test="$classification_udc != ''">
<xsl:value-of select="concat($i18n_classification_UDC, ' ')"/>
<xsl:value-of select="java:replaceAll(java:java.lang.String.new($classification_udc),'(:)',' $1 ')"/>
</xsl:when>
<xsl:otherwise> </xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="revision_date" select="normalize-space(/iso:iso-standard/iso:bibdata/iso:version/iso:revision-date)"/>
<xsl:variable name="revision_date_num" select="number(translate($revision_date,'-',''))"/>
<xsl:variable name="layoutVersion_">
<xsl:choose>
<xsl:when test="$document_scheme = ''">2024</xsl:when>
<xsl:when test="$document_scheme = '1951' or $document_scheme = '1972' or $document_scheme = '1979' or $document_scheme = '1987' or $document_scheme = '1989' or $document_scheme = '2012' or $document_scheme = '2013' or $document_scheme = '2024'"><xsl:value-of select="$document_scheme"/></xsl:when>
<xsl:otherwise>default</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="layoutVersion" select="normalize-space($layoutVersion_)"/>
<xsl:variable name="cover_page_border">0.5pt solid black</xsl:variable>
<xsl:variable name="color_red">rgb(237, 28, 36)</xsl:variable>
<xsl:variable name="XML" select="/"/>
<xsl:template match="/">
<xsl:call-template name="namespaceCheck"/>
<fo:root xml:lang="{$lang}">
<xsl:variable name="root-style">
<root-style xsl:use-attribute-sets="root-style">
<xsl:if test="$layoutVersion = '1951'">
<xsl:attribute name="font-size">10pt</xsl:attribute>
<xsl:if test="$revision_date_num >= 19680101">
<xsl:attribute name="font-size">9pt</xsl:attribute>
</xsl:if>
</xsl:if>
<xsl:if test="$layoutVersion = '1972' or $layoutVersion = '1979'">
<xsl:attribute name="font-family">Univers, Times New Roman, Cambria Math, <xsl:value-of select="$font_noto_sans"/></xsl:attribute>
<xsl:attribute name="font-family-generic">Sans</xsl:attribute>
<xsl:attribute name="font-size">10pt</xsl:attribute>
<xsl:if test="$layout_columns = 2">
<xsl:attribute name="font-size">9pt</xsl:attribute>
</xsl:if>
</xsl:if>
<xsl:if test="$layoutVersion = '1987' or $layoutVersion = '1989'">
<xsl:attribute name="font-family">Arial, Times New Roman, Cambria Math, <xsl:value-of select="$font_noto_sans"/></xsl:attribute>
<xsl:attribute name="font-family-generic">Sans</xsl:attribute>
<xsl:attribute name="font-size">10pt</xsl:attribute>
</xsl:if>
<xsl:if test="(($layoutVersion = '1987' and $doctype = 'technical-report') or ($layoutVersion = '1979' and $doctype = 'addendum'))">
<xsl:attribute name="font-size">8.5pt</xsl:attribute>
</xsl:if>
<xsl:if test="$lang = 'zh'">
<!-- <xsl:attribute name="font-family">Source Han Sans, Times New Roman, Cambria Math</xsl:attribute> -->
<xsl:attribute name="font-selection-strategy">character-by-character</xsl:attribute>
</xsl:if>
</root-style>
</xsl:variable>
<xsl:call-template name="insertRootStyle">
<xsl:with-param name="root-style" select="$root-style"/>
</xsl:call-template>
<xsl:if test="$layoutVersion = '2024'">
<xsl:attribute name="color">rgb(35,31,32)</xsl:attribute>
</xsl:if>
<xsl:if test="/iso:iso-standard/iso:metanorma-extension/iso:presentation-metadata/iso:linenumbers = 'true'">
<xsl:processing-instruction name="add_line_numbers">true</xsl:processing-instruction>
</xsl:if>
<fo:layout-master-set>
<xsl:variable name="marginLeftRight_cover_page_1951">16.5</xsl:variable> <!-- 12.5 -->
<xsl:variable name="marginTop_cover_page_1951">19.5</xsl:variable>
<xsl:variable name="marginBottom_cover_page_1951">94.5</xsl:variable>
<xsl:variable name="marginLeft_cover_page_1972">21</xsl:variable>
<xsl:variable name="marginRight_cover_page_1972">12</xsl:variable>
<xsl:variable name="marginTop_cover_page_1972">15</xsl:variable>
<xsl:variable name="marginBottom_cover_page_1972">33</xsl:variable>
<xsl:variable name="marginLeft_cover_page_1987">20</xsl:variable>
<xsl:variable name="marginRight_cover_page_1987">37</xsl:variable>
<xsl:variable name="marginTopBottom_cover_page_1987">20</xsl:variable>
<xsl:variable name="marginLeftRight_cover_page_2024">9.9</xsl:variable>
<xsl:variable name="marginTopBottom_cover_page_2024">9.9</xsl:variable>
<!-- cover page -->
<fo:simple-page-master master-name="cover-page" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
<fo:region-body margin-top="25.4mm" margin-bottom="25.4mm" margin-left="31.7mm" margin-right="31.7mm"/>
<fo:region-before region-name="cover-page-header" extent="25.4mm"/>
<fo:region-after/>
<fo:region-start region-name="cover-left-region" extent="31.7mm"/>
<fo:region-end region-name="cover-right-region" extent="31.7mm"/>
</fo:simple-page-master>
<fo:simple-page-master master-name="cover-page-published" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
<fo:region-body margin-top="12.7mm" margin-bottom="75mm" margin-left="78mm" margin-right="18.5mm"/>
<fo:region-before region-name="cover-page-header" extent="12.7mm"/>
<fo:region-after region-name="cover-page-footer" extent="75mm" display-align="after"/>
<fo:region-start region-name="cover-left-region" extent="78mm"/>
<fo:region-end region-name="cover-right-region" extent="18.5mm"/>
</fo:simple-page-master>
<fo:simple-page-master master-name="cover-page-publishedISO-odd" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
<fo:region-body margin-top="12.7mm" margin-bottom="75mm" margin-left="{$marginLeftRight1}mm" margin-right="{$marginLeftRight2}mm"/>
<fo:region-before region-name="cover-page-header" extent="12.7mm"/>
<fo:region-after region-name="cover-page-footer" extent="75mm" display-align="after"/>
<fo:region-start region-name="cover-left-region" extent="{$marginLeftRight1}mm"/>
<fo:region-end region-name="cover-right-region" extent="{$marginLeftRight2}mm"/>
</fo:simple-page-master>
<fo:simple-page-master master-name="cover-page-publishedISO-even" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
<fo:region-body margin-top="12.7mm" margin-bottom="75mm" margin-left="{$marginLeftRight2}mm" margin-right="{$marginLeftRight1}mm"/>
<fo:region-before region-name="cover-page-header" extent="12.7mm"/>
<fo:region-after region-name="cover-page-footer" extent="75mm" display-align="after"/>
<fo:region-start region-name="cover-left-region" extent="{$marginLeftRight2}mm"/>
<fo:region-end region-name="cover-right-region" extent="{$marginLeftRight1}mm"/>
</fo:simple-page-master>
<fo:page-sequence-master master-name="cover-page-publishedISO">
<fo:repeatable-page-master-alternatives>
<fo:conditional-page-master-reference odd-or-even="even" master-reference="cover-page-publishedISO-even"/>
<fo:conditional-page-master-reference odd-or-even="odd" master-reference="cover-page-publishedISO-odd"/>
</fo:repeatable-page-master-alternatives>
</fo:page-sequence-master>
<fo:simple-page-master master-name="cover-page_1951" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
<fo:region-body margin-top="{$marginTop_cover_page_1951}mm" margin-bottom="{$marginBottom_cover_page_1951}mm" margin-left="{$marginLeftRight_cover_page_1951}mm" margin-right="{$marginLeftRight_cover_page_1951}mm"/>
<fo:region-before region-name="cover-page-header" extent="{$marginTop_cover_page_1951}mm"/>
<fo:region-after region-name="cover-page-footer" extent="{$marginBottom_cover_page_1951}mm"/>
<fo:region-start region-name="left-region" extent="{$marginLeftRight_cover_page_1951}mm"/>
<fo:region-end region-name="right-region" extent="{$marginLeftRight_cover_page_1951}mm"/>
</fo:simple-page-master>
<fo:simple-page-master master-name="cover-page_1972" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
<fo:region-body margin-top="{$marginTop_cover_page_1972}mm" margin-bottom="{$marginBottom_cover_page_1972}mm" margin-left="{$marginLeft_cover_page_1972}mm" margin-right="{$marginRight_cover_page_1972}mm"/>
<fo:region-before region-name="cover-page-header" extent="{$marginTop_cover_page_1972}mm"/>
<fo:region-after region-name="cover-page-footer" extent="{$marginBottom_cover_page_1972}mm"/>
<fo:region-start region-name="left-region" extent="{$marginLeft_cover_page_1972}mm"/>
<fo:region-end region-name="right-region" extent="{$marginRight_cover_page_1972}mm"/>
</fo:simple-page-master>
<fo:simple-page-master master-name="cover-page_1987" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
<fo:region-body margin-top="{$marginTopBottom_cover_page_1987}mm" margin-bottom="{$marginTopBottom_cover_page_1987}mm" margin-left="{$marginLeft_cover_page_1987}mm" margin-right="{$marginRight_cover_page_1987}mm"/>
<fo:region-before region-name="cover-page-header" extent="{$marginTopBottom_cover_page_1987}mm" precedence="true"/>
<fo:region-after region-name="cover-page-footer" extent="{$marginTopBottom_cover_page_1987}mm" precedence="true"/>
<fo:region-start region-name="left-region" extent="{$marginLeft_cover_page_1987}mm"/>
<fo:region-end region-name="right-region" extent="{$marginRight_cover_page_1987}mm"/>
</fo:simple-page-master>
<fo:simple-page-master master-name="cover-page_2024" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
<fo:region-body margin-top="{$marginTopBottom_cover_page_2024}mm" margin-bottom="{$marginTopBottom_cover_page_2024}mm" margin-left="{$marginLeftRight_cover_page_2024}mm" margin-right="{$marginLeftRight_cover_page_2024}mm"/>
<fo:region-before region-name="header" extent="{$marginTopBottom_cover_page_2024}mm"/>
<fo:region-after region-name="footer" extent="{$marginTopBottom_cover_page_2024}mm"/>
<fo:region-start region-name="left-region" extent="{$marginLeftRight_cover_page_2024}mm"/>
<fo:region-end region-name="right-region" extent="{$marginLeftRight_cover_page_2024}mm"/>
</fo:simple-page-master>
<!-- contents pages -->
<!-- odd pages -->
<fo:simple-page-master master-name="odd" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
<fo:region-body margin-top="27.4mm" margin-bottom="{$marginBottom}mm" margin-left="19mm" margin-right="19mm"/>
<fo:region-before region-name="header-odd" extent="27.4mm"/> <!-- display-align="center" -->
<fo:region-after region-name="footer-odd" extent="{$marginBottom - 2}mm"/>
<fo:region-start region-name="left-region" extent="19mm"/>
<fo:region-end region-name="right-region" extent="19mm"/>
</fo:simple-page-master>
<fo:simple-page-master master-name="odd-landscape" page-width="{$pageHeight}mm" page-height="{$pageWidth}mm">
<fo:region-body margin-top="27.4mm" margin-bottom="{$marginBottom}mm" margin-left="19mm" margin-right="19mm"/>
<fo:region-before region-name="header-odd" extent="27.4mm"/>
<fo:region-after region-name="footer-odd" extent="{$marginBottom - 2}mm"/>
<fo:region-start region-name="left-region" extent="19mm"/>
<fo:region-end region-name="right-region" extent="19mm"/>
</fo:simple-page-master>
<!-- even pages -->
<fo:simple-page-master master-name="even" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
<fo:region-body margin-top="27.4mm" margin-bottom="{$marginBottom}mm" margin-left="19mm" margin-right="19mm"/>
<fo:region-before region-name="header-even" extent="27.4mm"/> <!-- display-align="center" -->
<fo:region-after region-name="footer-even" extent="{$marginBottom - 2}mm"/>
<fo:region-start region-name="left-region" extent="19mm"/>
<fo:region-end region-name="right-region" extent="19mm"/>
</fo:simple-page-master>
<fo:simple-page-master master-name="even-landscape" page-width="{$pageHeight}mm" page-height="{$pageWidth}mm">
<fo:region-body margin-top="27.4mm" margin-bottom="{$marginBottom}mm" margin-left="19mm" margin-right="19mm"/>
<fo:region-before region-name="header-even" extent="27.4mm"/> <!-- display-align="center" -->
<fo:region-after region-name="footer-even" extent="{$marginBottom - 2}mm"/>
<fo:region-start region-name="left-region" extent="19mm"/>
<fo:region-end region-name="right-region" extent="19mm"/>
</fo:simple-page-master>
<fo:page-sequence-master master-name="preface">
<fo:repeatable-page-master-alternatives>
<fo:conditional-page-master-reference odd-or-even="even" master-reference="even"/>
<fo:conditional-page-master-reference odd-or-even="odd" master-reference="odd"/>
</fo:repeatable-page-master-alternatives>
</fo:page-sequence-master>
<fo:page-sequence-master master-name="preface-landscape">
<fo:repeatable-page-master-alternatives>
<fo:conditional-page-master-reference odd-or-even="even" master-reference="even-landscape"/>
<fo:conditional-page-master-reference odd-or-even="odd" master-reference="odd-landscape"/>
</fo:repeatable-page-master-alternatives>
</fo:page-sequence-master>
<fo:page-sequence-master master-name="document">
<fo:repeatable-page-master-alternatives>
<fo:conditional-page-master-reference odd-or-even="even" master-reference="even"/>
<fo:conditional-page-master-reference odd-or-even="odd" master-reference="odd"/>
</fo:repeatable-page-master-alternatives>
</fo:page-sequence-master>
<fo:page-sequence-master master-name="document-landscape">
<fo:repeatable-page-master-alternatives>
<fo:conditional-page-master-reference odd-or-even="even" master-reference="even-landscape"/>
<fo:conditional-page-master-reference odd-or-even="odd" master-reference="odd-landscape"/>
</fo:repeatable-page-master-alternatives>
</fo:page-sequence-master>
<fo:simple-page-master master-name="first-preface_1972-1998" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
<fo:region-body margin-top="{$marginTop}mm" margin-bottom="95mm" margin-left="{$marginLeftRight2}mm" margin-right="82mm"/>
<fo:region-before region-name="header-even" extent="{$marginTop}mm"/>
<fo:region-after region-name="footer-preface-first_1972-1998" extent="95mm"/>
<fo:region-start region-name="left-region" extent="{$marginLeftRight2}mm"/>
<fo:region-end region-name="right-region" extent="82mm"/>
</fo:simple-page-master>
<fo:simple-page-master master-name="odd-preface_1972-1998" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
<fo:region-body margin-top="{$marginTop}mm" margin-bottom="{$marginBottom}mm" margin-left="82mm" margin-right="{$marginLeftRight2}mm"/>
<fo:region-before region-name="header-odd" extent="{$marginTop}mm"/> <!-- display-align="center" -->
<fo:region-after region-name="footer-odd" extent="{$marginBottom - 2}mm"/>
<fo:region-start region-name="left-region" extent="82mm"/>
<fo:region-end region-name="right-region" extent="{$marginLeftRight2}mm"/>
</fo:simple-page-master>
<fo:simple-page-master master-name="even-preface_1972-1998" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
<fo:region-body margin-top="{$marginTop}mm" margin-bottom="{$marginBottom}mm" margin-left="{$marginLeftRight2}mm" margin-right="82mm"/>
<fo:region-before region-name="header-even" extent="{$marginTop}mm"/>
<fo:region-after region-name="footer-even" extent="{$marginBottom - 2}mm"/>
<fo:region-start region-name="left-region" extent="{$marginLeftRight2}mm"/>
<fo:region-end region-name="right-region" extent="82mm"/>
</fo:simple-page-master>
<fo:page-sequence-master master-name="preface-1972-1998">
<fo:repeatable-page-master-alternatives>
<fo:conditional-page-master-reference master-reference="blankpage" blank-or-not-blank="blank"/>
<fo:conditional-page-master-reference master-reference="first-preface_1972-1998" page-position="first"/>
<fo:conditional-page-master-reference odd-or-even="even" master-reference="even-preface_1972-1998"/>
<fo:conditional-page-master-reference odd-or-even="odd" master-reference="odd-preface_1972-1998"/>
</fo:repeatable-page-master-alternatives>
</fo:page-sequence-master>
<!-- first page -->
<fo:simple-page-master master-name="first-publishedISO" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
<fo:region-body margin-top="{$marginTop}mm" margin-bottom="{$marginBottom}mm" margin-left="{$marginLeftRight1}mm" margin-right="{$marginLeftRight2}mm" column-count="{$layout_columns}" column-gap="{$column_gap}"/>
<fo:region-before region-name="header-first" extent="{$marginTop}mm">
<xsl:if test="(($layoutVersion = '1987' and $doctype = 'technical-report') or ($layoutVersion = '1979' and $doctype = 'addendum'))">
<xsl:attribute name="region-name">header-odd</xsl:attribute>
</xsl:if>
</fo:region-before>
<fo:region-after region-name="footer-odd" extent="{$marginBottom - 2}mm"/>
<fo:region-start region-name="left-region" extent="{$marginLeftRight1}mm"/>
<fo:region-end region-name="right-region" extent="{$marginLeftRight2}mm"/>
</fo:simple-page-master>
<!-- odd pages -->
<fo:simple-page-master master-name="odd-publishedISO" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
<fo:region-body margin-top="{$marginTop}mm" margin-bottom="{$marginBottom}mm" margin-left="{$marginLeftRight1}mm" margin-right="{$marginLeftRight2}mm" column-count="{$layout_columns}" column-gap="{$column_gap}"/>
<fo:region-before region-name="header-odd" extent="{$marginTop}mm">
<xsl:if test="$layoutVersion = '1951'">
<xsl:attribute name="precedence">true</xsl:attribute>
</xsl:if>
</fo:region-before>
<fo:region-after region-name="footer-odd" extent="{$marginBottom - 2}mm"/>
<fo:region-start region-name="left-region" extent="{$marginLeftRight1}mm"/>
<fo:region-end region-name="right-region" extent="{$marginLeftRight2}mm"/>
</fo:simple-page-master>
<fo:simple-page-master master-name="odd-publishedISO-landscape" page-width="{$pageHeight}mm" page-height="{$pageWidth}mm">
<fo:region-body margin-top="{$marginTop}mm" margin-bottom="{$marginBottom}mm" margin-left="{$marginLeftRight1}mm" margin-right="{$marginLeftRight2}mm" column-count="{$layout_columns}" column-gap="{$column_gap}"/>
<fo:region-before region-name="header-odd" extent="{$marginTop}mm"/> <!-- display-align="center" -->
<fo:region-after region-name="footer-odd" extent="{$marginBottom - 2}mm"/>
<fo:region-start region-name="left-region" extent="{$marginLeftRight1}mm"/>
<fo:region-end region-name="right-region" extent="{$marginLeftRight2}mm"/>
</fo:simple-page-master>
<!-- even pages -->
<fo:simple-page-master master-name="even-publishedISO" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
<fo:region-body margin-top="{$marginTop}mm" margin-bottom="{$marginBottom}mm" margin-left="{$marginLeftRight2}mm" margin-right="{$marginLeftRight1}mm" column-count="{$layout_columns}" column-gap="{$column_gap}"/>
<fo:region-before region-name="header-even" extent="{$marginTop}mm">
<xsl:if test="$layoutVersion = '1951'">
<xsl:attribute name="precedence">true</xsl:attribute>
</xsl:if>
</fo:region-before>
<fo:region-after region-name="footer-even" extent="{$marginBottom - 2}mm"/>
<fo:region-start region-name="left-region" extent="{$marginLeftRight2}mm"/>
<fo:region-end region-name="right-region" extent="{$marginLeftRight1}mm"/>
</fo:simple-page-master>
<!-- for 1951 layout only -->
<fo:simple-page-master master-name="even-last-publishedISO" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
<fo:region-body margin-top="{$marginTop}mm" margin-bottom="{$marginBottom}mm" margin-left="{$marginLeftRight2}mm" margin-right="{$marginLeftRight1}mm" column-count="{$layout_columns}" column-gap="{$column_gap}"/>
<fo:region-before region-name="header-even" extent="{$marginTop}mm" precedence="true"/>
<fo:region-after region-name="footer-even-last" extent="{$marginBottom - 2}mm"/>
<fo:region-start region-name="left-region" extent="{$marginLeftRight2}mm"/>
<fo:region-end region-name="right-region" extent="{$marginLeftRight1}mm"/>
</fo:simple-page-master>
<fo:simple-page-master master-name="even-publishedISO-landscape" page-width="{$pageHeight}mm" page-height="{$pageWidth}mm">
<fo:region-body margin-top="{$marginTop}mm" margin-bottom="{$marginBottom}mm" margin-left="{$marginLeftRight2}mm" margin-right="{$marginLeftRight1}mm" column-count="{$layout_columns}" column-gap="{$column_gap}"/>
<fo:region-before region-name="header-even" extent="{$marginTop}mm"/>
<fo:region-after region-name="footer-even" extent="{$marginBottom - 2}mm"/>
<fo:region-start region-name="left-region" extent="{$marginLeftRight2}mm"/>
<fo:region-end region-name="right-region" extent="{$marginLeftRight1}mm"/>
</fo:simple-page-master>
<fo:simple-page-master master-name="blankpage" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
<fo:region-body margin-top="{$marginTop}mm" margin-bottom="{$marginBottom}mm" margin-left="{$marginLeftRight2}mm" margin-right="{$marginLeftRight1}mm"/>
<fo:region-before region-name="header" extent="{$marginTop}mm"/>
<fo:region-after region-name="footer" extent="{$marginBottom - 2}mm"/>
<fo:region-start region-name="left" extent="{$marginLeftRight2}mm"/>
<fo:region-end region-name="right" extent="{$marginLeftRight1}mm"/>
</fo:simple-page-master>
<fo:page-sequence-master master-name="preface-publishedISO">
<fo:repeatable-page-master-alternatives>
<fo:conditional-page-master-reference master-reference="blankpage" blank-or-not-blank="blank"/>
<fo:conditional-page-master-reference odd-or-even="even" master-reference="even-publishedISO"/>
<fo:conditional-page-master-reference odd-or-even="odd" master-reference="odd-publishedISO"/>
</fo:repeatable-page-master-alternatives>
</fo:page-sequence-master>
<fo:page-sequence-master master-name="preface-publishedISO-landscape">
<fo:repeatable-page-master-alternatives>
<fo:conditional-page-master-reference master-reference="blankpage" blank-or-not-blank="blank"/>
<fo:conditional-page-master-reference odd-or-even="even" master-reference="even-publishedISO-landscape"/>
<fo:conditional-page-master-reference odd-or-even="odd" master-reference="odd-publishedISO-landscape"/>
</fo:repeatable-page-master-alternatives>
</fo:page-sequence-master>
<!-- First pages for Technical Report (layout 1987) -->
<fo:simple-page-master master-name="first-preface_1987_TR" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
<fo:region-body margin-top="13mm" margin-bottom="30mm" margin-left="19mm" margin-right="10.5mm"/>
<fo:region-before region-name="header-empty" extent="13mm"/>
<fo:region-after region-name="footer-preface-first_1987_TR" extent="30mm" display-align="after"/>
<fo:region-start region-name="left-region-first_1987_TR" extent="19mm"/>
<fo:region-end region-name="right-region" extent="10.5mm"/>
</fo:simple-page-master>
<fo:page-sequence-master master-name="preface-1987_TR">
<fo:repeatable-page-master-alternatives>
<fo:conditional-page-master-reference master-reference="first-preface_1987_TR" page-position="first"/>
<fo:conditional-page-master-reference odd-or-even="even" master-reference="even-publishedISO"/>
<fo:conditional-page-master-reference odd-or-even="odd" master-reference="odd-publishedISO"/>
</fo:repeatable-page-master-alternatives>
</fo:page-sequence-master>
<fo:page-sequence-master master-name="document-publishedISO_first_sequence">
<fo:repeatable-page-master-alternatives>
<xsl:if test="not($layoutVersion = '1951')">
<fo:conditional-page-master-reference master-reference="first-publishedISO" page-position="first"/>
</xsl:if>
<xsl:if test="$layoutVersion = '1951'">
<fo:conditional-page-master-reference page-position="last" master-reference="even-last-publishedISO"/> <!-- odd-or-even="even" -->
</xsl:if>
<fo:conditional-page-master-reference odd-or-even="even" master-reference="even-publishedISO"/>
<fo:conditional-page-master-reference odd-or-even="odd" master-reference="odd-publishedISO"/>
</fo:repeatable-page-master-alternatives>
</fo:page-sequence-master>
<fo:page-sequence-master master-name="document-publishedISO">
<fo:repeatable-page-master-alternatives>
<xsl:if test="$layoutVersion = '1951'">
<fo:conditional-page-master-reference page-position="last" master-reference="even-last-publishedISO"/> <!-- odd-or-even="even" -->
</xsl:if>
<fo:conditional-page-master-reference odd-or-even="even" master-reference="even-publishedISO"/>
<fo:conditional-page-master-reference odd-or-even="odd" master-reference="odd-publishedISO"/>
</fo:repeatable-page-master-alternatives>
</fo:page-sequence-master>
<fo:page-sequence-master master-name="document-publishedISO-landscape_first_sequence">
<fo:repeatable-page-master-alternatives>
<xsl:if test="not($layoutVersion = '1951')">
<fo:conditional-page-master-reference master-reference="first-publishedISO" page-position="first"/>
</xsl:if>
<fo:conditional-page-master-reference odd-or-even="even" master-reference="even-publishedISO-landscape"/>
<fo:conditional-page-master-reference odd-or-even="odd" master-reference="odd-publishedISO-landscape"/>
</fo:repeatable-page-master-alternatives>
</fo:page-sequence-master>
<fo:page-sequence-master master-name="document-publishedISO-landscape">
<fo:repeatable-page-master-alternatives>
<fo:conditional-page-master-reference odd-or-even="even" master-reference="even-publishedISO-landscape"/>
<fo:conditional-page-master-reference odd-or-even="odd" master-reference="odd-publishedISO-landscape"/>
</fo:repeatable-page-master-alternatives>
</fo:page-sequence-master>
<fo:simple-page-master master-name="last-page" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
<fo:region-body margin-top="{$marginTop}mm" margin-bottom="{$marginBottom}mm" margin-left="{$marginLeftRight2}mm" margin-right="{$marginLeftRight1}mm"/>
<fo:region-before region-name="header-even" extent="{$marginTop}mm"/>
<fo:region-after region-name="last-page-footer" extent="{$marginBottom - 2}mm"/>
<fo:region-start region-name="left-region" extent="{$marginLeftRight2}mm"/>
<fo:region-end region-name="right-region" extent="{$marginLeftRight1}mm"/>
</fo:simple-page-master>
<fo:simple-page-master master-name="last-page_2024" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
<fo:region-body margin-top="{$marginTopBottom_cover_page_2024}mm" margin-bottom="{$marginTopBottom_cover_page_2024}mm" margin-left="{$marginLeftRight_cover_page_2024}mm" margin-right="{$marginLeftRight_cover_page_2024}mm"/>
<fo:region-before region-name="header" extent="{$marginTopBottom_cover_page_2024}mm"/>
<fo:region-after region-name="footer" extent="{$marginTopBottom_cover_page_2024}mm"/>
<fo:region-start region-name="left-region" extent="{$marginLeftRight_cover_page_2024}mm"/>
<fo:region-end region-name="right-region" extent="{$marginLeftRight_cover_page_2024}mm"/>
</fo:simple-page-master>
<!-- Index pages -->
<fo:simple-page-master master-name="index-odd" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
<fo:region-body margin-top="{$marginTop}mm" margin-bottom="{$marginBottom}mm" margin-left="{$marginLeftRight1}mm" margin-right="{$marginLeftRight2}mm" column-count="2" column-gap="10mm"/>
<fo:region-before region-name="header-odd" extent="{$marginTop}mm"/>
<fo:region-after region-name="footer-odd" extent="{$marginBottom - 2}mm"/>
<fo:region-start region-name="left-region" extent="{$marginLeftRight1}mm"/>
<fo:region-end region-name="right-region" extent="{$marginLeftRight2}mm"/>
</fo:simple-page-master>
<fo:simple-page-master master-name="index-even" page-width="{$pageWidth}mm" page-height="{$pageHeight}mm">
<fo:region-body margin-top="{$marginTop}mm" margin-bottom="{$marginBottom}mm" margin-left="{$marginLeftRight2}mm" margin-right="{$marginLeftRight1}mm" column-count="2" column-gap="10mm"/>
<fo:region-before region-name="header-even" extent="{$marginTop}mm"/>
<fo:region-after region-name="footer-even" extent="{$marginBottom - 2}mm"/>
<fo:region-start region-name="left-region" extent="{$marginLeftRight2}mm"/>
<fo:region-end region-name="right-region" extent="{$marginLeftRight1}mm"/>
</fo:simple-page-master>
<fo:page-sequence-master master-name="index">
<fo:repeatable-page-master-alternatives>
<fo:conditional-page-master-reference odd-or-even="even" master-reference="index-even"/>
<fo:conditional-page-master-reference odd-or-even="odd" master-reference="index-odd"/>
</fo:repeatable-page-master-alternatives>
</fo:page-sequence-master>
</fo:layout-master-set>
<fo:declarations>
<xsl:call-template name="addPDFUAmeta"/>
<xsl:for-each select="//*[local-name() = 'eref'][generate-id(.)=generate-id(key('attachments',@bibitemid)[1])]">
<xsl:variable name="url" select="concat('url(file:',$basepath, @bibitemid, ')')"/>
<pdf:embedded-file src="{$url}" filename="{@bibitemid}"/>
</xsl:for-each>
<xsl:for-each select="//*[local-name() = 'eref'][generate-id(.)=generate-id(key('attachments2',@bibitemid)[1])]">
<xsl:variable name="bibitemid" select="@bibitemid"/>
<xsl:variable name="uri" select="normalize-space($bibitems/*[local-name() ='bibitem'][@hidden = 'true'][@id = $bibitemid][1]/*[local-name() = 'uri'][@type='citation'])"/>
<xsl:if test="$uri != ''">
<xsl:variable name="url" select="concat('url(file:',$basepath, $uri, ')')"/>
<xsl:variable name="filename" select="concat(substring-before($bibitemid, '.exp_'), '.exp')"/>
<pdf:embedded-file src="{$url}" filename="{$filename}"/>
</xsl:if>
</xsl:for-each>
</fo:declarations>
<xsl:call-template name="addBookmarks">
<xsl:with-param name="contents" select="$contents"/>
</xsl:call-template>
<xsl:call-template name="insertCoverPage"/>
<xsl:if test="$debug = 'true'">
<xsl:message>START updated_xml</xsl:message>
</xsl:if>
<xsl:variable name="startTime0" select="java:getTime(java:java.util.Date.new())"/>
<xsl:variable name="updated_xml">
<xsl:call-template name="updateXML"/>
</xsl:variable>
<xsl:if test="$debug = 'true'">
<xsl:message>End updated_xml</xsl:message>
<xsl:message>DEBUG: processing time <xsl:value-of select="java:getTime(java:java.util.Date.new()) - $startTime0"/> msec.</xsl:message>
</xsl:if>
<xsl:for-each select="xalan:nodeset($updated_xml)/*">
<xsl:if test="$debug = 'true'">
<xsl:message>START updated_xml_with_pages</xsl:message>
</xsl:if>
<xsl:variable name="startTimeA" select="java:getTime(java:java.util.Date.new())"/>
<xsl:variable name="updated_xml_with_pages">
<xsl:call-template name="processPrefaceAndMainSectionsISO_items"/>
</xsl:variable>
<xsl:if test="$debug = 'true'">
<xsl:message>END updated_xml_with_pages</xsl:message>
<xsl:message>DEBUG: processing time <xsl:value-of select="java:getTime(java:java.util.Date.new()) - $startTimeA"/> msec.</xsl:message>
</xsl:if>
<xsl:choose>
<xsl:when test="$layoutVersion = '1951'">
<fo:page-sequence master-reference="document{$document-master-reference}" initial-page-number="auto" force-page-count="no-force">
<fo:static-content flow-name="xsl-footnote-separator">
<fo:block>
<fo:leader leader-pattern="rule" leader-length="30%"/>
</fo:block>
</fo:static-content>
<xsl:call-template name="insertHeaderFooter">
<xsl:with-param name="is_header">false</xsl:with-param>
<xsl:with-param name="insert_footer_last">false</xsl:with-param>
</xsl:call-template>
<fo:flow flow-name="xsl-region-body">
<fo:block>
<!-- <xsl:call-template name="processPrefaceSectionsDefault"/> -->
<!-- Introduction will be showed in the main section -->
<xsl:for-each select="/*/*[local-name()='preface']/*[not(local-name() = 'note' or local-name() = 'admonition' or local-name() = 'introduction')]">
<xsl:sort select="@displayorder" data-type="number"/>
<xsl:apply-templates select="."/>
</xsl:for-each>
<fo:block span="all" text-align="center" margin-top="15mm" keep-with-next="always" role="SKIP">
<fo:leader leader-pattern="rule" leader-length="22mm"/>
</fo:block>
</fo:block>
</fo:flow>
</fo:page-sequence>
</xsl:when><!-- END: preface sections (Foreword, Brief history for layout 1951 ($layoutVersion = '1951') -->
<xsl:when test="(($layoutVersion = '1987' and $doctype = 'technical-report') or ($layoutVersion = '1979' and $doctype = 'addendum'))">
<fo:page-sequence master-reference="preface-1987_TR" format="i" force-page-count="no-force">
<xsl:call-template name="insertHeaderFooter">
<xsl:with-param name="font-weight">normal</xsl:with-param>
<xsl:with-param name="is_footer">false</xsl:with-param>
</xsl:call-template>
<fo:static-content flow-name="left-region-first_1987_TR" role="artifact">
<fo:block-container reference-orientation="90">
<fo:block font-size="8pt" margin-left="5mm" margin-top="8mm">
<xsl:value-of select="$ISOnumber"/>
</fo:block>
</fo:block-container>
</fo:static-content>
<fo:static-content flow-name="footer-preface-first_1987_TR" role="artifact">
<fo:block-container font-size="8pt" margin-bottom="3mm">
<xsl:call-template name="insertSingleLine"/>
<fo:block font-size="11pt" font-weight="bold" text-align-last="justify" margin-top="0.5mm" margin-right="1mm">
<fo:inline keep-together.within-line="always" role="SKIP">
<xsl:value-of select="$udc"/>
<fo:leader leader-pattern="space"/>
<fo:inline role="SKIP">
<xsl:value-of select="concat($i18n_reference_number_abbrev, ' ', $ISOnumber)"/>
</fo:inline>
</fo:inline>
</fo:block>
<xsl:if test="/iso:iso-standard/iso:bibdata/iso:keyword">
<fo:block margin-top="6pt">
<fo:inline font-weight="bold"><xsl:value-of select="$i18n_descriptors"/> : </fo:inline>
<xsl:call-template name="insertKeywords">
<xsl:with-param name="sorting">no</xsl:with-param>
<xsl:with-param name="charDelim" select="', '"/>
</xsl:call-template>
</fo:block>
</xsl:if>
<fo:table table-layout="fixed" width="100%" margin-top="14pt" font-size="7.5pt">
<fo:table-body>
<fo:table-row>
<fo:table-cell>
<fo:block>
<xsl:apply-templates select="/iso:iso-standard/iso:boilerplate/iso:copyright-statement"/>
</fo:block>
</fo:table-cell>
<fo:table-cell display-align="after" text-align="right">
<fo:block>
<xsl:for-each select="xalan:nodeset($price_based_on_items)/item">
<xsl:value-of select="."/>
<xsl:if test="position() != last()">
<fo:page-number-citation ref-id="lastBlock"/>
</xsl:if>
</xsl:for-each>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:block-container>
</fo:static-content> <!-- footer-preface-first_1987_TR -->
<fo:flow flow-name="xsl-region-body">
<fo:table table-layout="fixed" width="100%">
<fo:table-column column-width="proportional-column-width(68)"/>
<fo:table-column column-width="proportional-column-width(112)"/>
<fo:table-body>
<fo:table-row>
<fo:table-cell number-rows-spanned="2">
<fo:block font-size="0">
<xsl:variable name="content-height">25</xsl:variable>
<fo:external-graphic src="{concat('data:image/png;base64,', normalize-space($Image-ISO-Logo-1987))}" content-height="{$content-height}mm" content-width="scale-to-fit" scaling="uniform" fox:alt-text="Image ISO Logo"/>
</fo:block>
</fo:table-cell>
<fo:table-cell font-size="11pt" font-weight="bold">
<fo:block>
<xsl:choose>
<xsl:when test="$doctype = 'addendum'">
<xsl:variable name="doctype_international_standard">
<xsl:call-template name="getLocalizedString"><xsl:with-param name="key">doctype_dict.international-standard</xsl:with-param></xsl:call-template>
</xsl:variable>
<xsl:value-of select="java:toUpperCase(java:java.lang.String.new($doctype_international_standard))"/>
<xsl:text> </xsl:text>
<xsl:value-of select="translate(substring-before(/iso:iso-standard/iso:bibdata/iso:docidentifier[@type = 'iso-undated'], '/'),':','-')"/>
<xsl:text>/</xsl:text>
<xsl:value-of select="$doctype_localized"/>
<xsl:text> </xsl:text>
<xsl:value-of select="/iso:iso-standard/iso:bibdata/iso:ext/iso:structuredidentifier/iso:project-number/@addendum"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$doctype_uppercased"/> <xsl:value-of select="/iso:iso-standard/iso:bibdata/iso:docnumber"/>
</xsl:otherwise>
</xsl:choose>
</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row display-align="after">
<fo:table-cell>
<fo:block margin-bottom="-1mm">Published <xsl:value-of select="/iso:iso-standard/iso:bibdata/iso:date[@type = 'published']"/></fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
<fo:block font-size="6pt" margin-top="8mm" margin-bottom="18mm" text-align-last="justify"><xsl:value-of select="$ISO_title_en"/>●<xsl:value-of select="$ISO_title_ru"/>●<xsl:value-of select="$ISO_title_fr"/></fo:block>
<fo:block-container margin-bottom="22mm" role="SKIP">
<fo:block font-size="18pt" font-weight="bold" role="H1" line-height="1.05">
<xsl:call-template name="insertTitlesLangMain"/>
</fo:block>
<xsl:choose>
<xsl:when test="$doctype = 'addendum'">
<fo:block font-size="12pt" font-weight="bold" role="H2" line-height="1.05" margin-top="6pt">
<xsl:call-template name="printAddendumTitle"/>
</fo:block>
<xsl:apply-templates select="/iso:iso-standard/iso:preface/iso:clause[@type = 'provenance']">
<xsl:with-param name="process">true</xsl:with-param>
</xsl:apply-templates>
</xsl:when>
<xsl:otherwise>
<xsl:for-each select="xalan:nodeset($lang_other)/lang">
<xsl:variable name="lang_other" select="."/>
<fo:block font-size="12pt" role="SKIP"><xsl:value-of select="$linebreak"/></fo:block>
<fo:block role="H1" font-style="italic" line-height="1.2">
<!-- Example: title-intro fr -->
<xsl:call-template name="insertTitlesLangOther">
<xsl:with-param name="lang_other" select="$lang_other"/>
</xsl:call-template>
</fo:block>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
</fo:block-container>
<xsl:if test="$doctype = 'addendum'">
<fo:block break-after="page"/>
</xsl:if>
<!-- ToC, Foreword, Introduction -->
<xsl:call-template name="processPrefaceSectionsDefault"/>
</fo:flow>
</fo:page-sequence>
</xsl:when> <!-- (($layoutVersion = '1987' and $doctype = 'technical-report') or ($layoutVersion = '1979' and $doctype = 'addendum')) -->
<xsl:otherwise>
<xsl:variable name="copyright-statement">
<xsl:apply-templates select="/iso:iso-standard/iso:boilerplate/iso:copyright-statement"/>
</xsl:variable>
<xsl:for-each select="xalan:nodeset($updated_xml_with_pages)"> <!-- set context to preface/sections -->
<xsl:for-each select=".//*[local-name() = 'page_sequence'][parent::*[local-name() = 'preface']][normalize-space() != '' or .//image or .//svg]">
<fo:page-sequence format="i" force-page-count="no-force">
<xsl:attribute name="master-reference">
<xsl:value-of select="concat('preface',$document-master-reference)"/>
<xsl:call-template name="getPageSequenceOrientation"/>
</xsl:attribute>
<xsl:if test="position() = last()">
<xsl:attribute name="force-page-count"><xsl:value-of select="$force-page-count-preface"/></xsl:attribute> <!-- to prevent empty pages -->
</xsl:if>
<xsl:if test="$layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987' or ($layoutVersion = '1989' and $revision_date_num <= 19981231)">
<xsl:attribute name="master-reference">preface-1972-1998</xsl:attribute>
</xsl:if>
<xsl:if test="$layoutVersion = '2024'">
<fo:static-content flow-name="xsl-footnote-separator">
<fo:block margin-bottom="6pt">
<fo:leader leader-pattern="rule" leader-length="51mm" rule-thickness="0.5pt"/>
</fo:block>
</fo:static-content>
</xsl:if>
<xsl:call-template name="insertHeaderFooter">
<xsl:with-param name="font-weight">normal</xsl:with-param>
<xsl:with-param name="is_footer">true</xsl:with-param>
</xsl:call-template>
<fo:flow flow-name="xsl-region-body" line-height="115%">
<xsl:if test="position() = 1">
<xsl:if test="$layoutVersion = '1989' and $revision_date_num >= 19990101">
<!-- PDF disclaimer -->
<fo:block-container position="absolute" left="0mm" top="0mm" width="172mm" role="SKIP" border="0.5pt solid black">
<fo:block-container border="0.5pt solid black">
<fo:block font-size="8pt" text-align="justify" line-height="1.2" margin="1.8mm">
<xsl:choose>
<xsl:when test="$lang = 'fr'">
<fo:block text-align="center" font-size="9pt" font-weight="bold" margin-bottom="6pt">PDF — Exonération de responsabilité</fo:block>
<fo:block margin-bottom="4pt">Le présent fichier PDF peut contenir des polices de caractères intégrées. Conformément aux conditions de licence d'Adobe, ce fichier peut
être imprimé ou visualisé, mais ne doit pas être modifié à moins que l'ordinateur employé à cet effet ne bénéficie d'une licence autorisant l'utilisation
de ces polices et que celles-ci y soient installées. Lors du téléchargement de ce fichier, les parties concernées acceptent de fait la responsabilité
de ne pas enfreindre les conditions de licence d'Adobe. Le Secrétariat central de l'ISO décline toute responsabilité en la matière. </fo:block>
<fo:block margin-bottom="4pt">Adobe est une marque déposée d'Adobe Systems Incorporated.</fo:block>
<fo:block>Les détails relatifs aux produits logiciels utilisés pour la création du présent fichier PDF sont disponibles dans la rubrique General Info du fichier;
les paramètres de création PDF ont été optimisés pour l'impression. Toutes les mesures ont été prises pour garantir l'exploitation de ce
fichier par les comités membres de l'ISO. Dans le cas peu probable où surviendrait un problème d'utilisation, veuillez en informer le Secrétariat
central à l'adresse donnée ci-dessous.</fo:block>
</xsl:when>
<xsl:when test="$lang = 'ru'">
<fo:block text-align="center" font-size="9pt" font-weight="bold" margin-bottom="6pt">Oткaз oт oтвeтствeннoсти при рaбoтe в PDF</fo:block>
<fo:block margin-bottom="4pt">Нaстoящий фaйл PDF мoжeт сoдeржaть интeгрирoвaнныe шрифты. В сooтвeтствии с услoвиями лицeнзирoвaния, принятыми
фирмoй Adobe, этoт фaйл мoжeт быть oтпeчaтaн или прoсмoтрeн нa экрaнe, oднaкo oн нe дoлжeн быть измeнeн, пoкa нe будeт
пoлучeнa лицeнзия нa интeгрирoвaнныe шрифты и oни нe будут устaнoвлeны нa кoмпьютeрe, нa кoтoрoм вeдeтся рeдaктирoвaниe.
В случae зaгрузки нaстoящeгo фaйлa зaинтeрeсoвaнныe стoрoны принимaют нa сeбя oтвeтствeннoсть зa сoблюдeниe лицeнзиoнныx
услoвий фирмы Adobe. Цeнтрaльный сeкрeтaриaт ИСO нe нeсeт никaкoй oтвeтствeннoсти в этoм oтнoшeнии.</fo:block>
<fo:block margin-bottom="4pt">Adobe являeтся тoргoвым знaкoм фирмы Adobe Systems Incorporated.</fo:block>
<fo:block>Пoдрoбнoсти, oтнoсящиeся к прoгрaммным прoдуктaм, испoльзoвaнныe для сoздaния нaстoящeгo фaйлa PDF, мoгут быть нaйдeны
в рубрикe General Info фaйлa; пaрaмeтры для сoздaния PDF были oптимизирoвaны для пeчaти. Были приняты вo внимaниe всe
мeры прeдoстoрoжнoсти с тeм,чтoбы oбeспeчить пригoднoсть нaстoящeгo фaйлa для испoльзoвaния кoмитeтaми-члeнaми ИСO. В
рeдкиx случaяx вoзникнoвeния прoблeмы, связaннoй сo скaзaнным вышe, прoсьбa прoинфoрмирoвaть Цeнтрaльный сeкрeтaриaт пo
aдрeсу, привeдeннoму нижe.</fo:block>
</xsl:when>
<xsl:otherwise> <!-- by default -->
<fo:block text-align="center" font-size="9pt" font-weight="bold" margin-bottom="6pt">PDF disclaimer</fo:block>
<fo:block margin-bottom="4pt">This PDF file may contain embedded typefaces. In accordance with Adobe's licensing policy, this file may be printed or viewed but
shall not be edited unless the typefaces which are embedded are licensed to and installed on the computer performing the editing. In
downloading this file, parties accept therein the responsibility of not infringing Adobe's licensing policy. The ISO Central Secretariat
accepts no liability in this area.</fo:block>
<fo:block margin-bottom="4pt">Adobe is a trademark of Adobe Systems Incorporated.</fo:block>
<fo:block>Details of the software products used to create this PDF file can be found in the General Info relative to the file; the PDF-creation
parameters were optimized for printing. Every care has been taken to ensure that the file is suitable for use by ISO member bodies. In
the unlikely event that a problem relating to it is found, please inform the Central Secretariat at the address given below.</fo:block>
</xsl:otherwise>
</xsl:choose>
</fo:block>
</fo:block-container>
</fo:block-container>
</xsl:if>
<xsl:choose>
<xsl:when test="$layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987' or ($layoutVersion = '1989' and $revision_date_num <= 19981231)"><!-- copyright renders in the footer footer-preface-first_1987-1998--></xsl:when>
<xsl:otherwise>
<!-- <xsl:if test="/iso:iso-standard/iso:boilerplate/iso:copyright-statement"> -->
<xsl:if test="normalize-space($copyright-statement) != ''">
<fo:block-container height="252mm" display-align="after" role="SKIP">
<xsl:if test="$layoutVersion = '1989'">
<xsl:attribute name="height">241.5mm</xsl:attribute>
</xsl:if>
<xsl:if test="$layoutVersion = '2024'">
<xsl:attribute name="width">172mm</xsl:attribute>
</xsl:if>
<!-- <fo:block margin-bottom="3mm">
<fo:external-graphic src="{concat('data:image/png;base64,', normalize-space($Image-Attention))}" width="14mm" content-height="13mm" content-width="scale-to-fit" scaling="uniform" fox:alt-text="Image {@alt}"/>
<fo:inline padding-left="6mm" font-size="12pt" font-weight="bold"></fo:inline>
</fo:block> -->
<fo:block line-height="90%" role="SKIP">
<fo:block font-size="9pt" text-align="justify" role="SKIP">
<xsl:if test="$layoutVersion = '1989'">
<xsl:attribute name="font-size">8pt</xsl:attribute>
</xsl:if>
<!-- <xsl:if test="$layoutVersion = '2024'">
<xsl:attribute name="font-size">8.6pt</xsl:attribute>
</xsl:if> -->
<!-- <xsl:apply-templates select="/iso:iso-standard/iso:boilerplate/iso:copyright-statement"/> -->
<xsl:copy-of select="$copyright-statement"/>
</fo:block>
</fo:block>
</fo:block-container>
<!-- <xsl:if test="/iso:iso-standard/iso:preface/*"> -->
<!-- <xsl:copy-of select="."/> -->
<xsl:if test="//iso:preface/*">
<fo:block break-after="page"/>
</xsl:if>
</xsl:if>
</xsl:otherwise>
</xsl:choose>
</xsl:if> <!-- for 1st page_sequence only -->
<!-- ToC, Foreword, Introduction -->
<!-- <xsl:call-template name="processPrefaceSectionsDefault"/> -->
<xsl:apply-templates/>
<fo:block/> <!-- for prevent empty preface -->
</fo:flow>
</fo:page-sequence>
</xsl:for-each>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
<!-- for layout 1951 -->
<xsl:variable name="preface_introduction">
<xsl:apply-templates select="/*/*[local-name()='preface']/*[local-name() = 'introduction']"/>
</xsl:variable>
<xsl:if test="$debug = 'true'">
<xsl:message>START xalan:nodeset($updated_xml_with_pages) for sections</xsl:message>
</xsl:if>
<xsl:variable name="startTimeC" select="java:getTime(java:java.util.Date.new())"/>
<xsl:for-each select="xalan:nodeset($updated_xml_with_pages)"> <!-- set context to sections, if top element in 'sections' -->
<xsl:for-each select=".//*[local-name() = 'page_sequence'][not(parent::*[local-name() = 'preface'])][normalize-space() != '' or .//image or .//svg]">
<!-- BODY -->
<fo:page-sequence force-page-count="no-force">
<!-- Example: msster-reference document-publishedISO-landscape_first_sequence -->
<xsl:attribute name="master-reference">
<xsl:value-of select="concat('document',$document-master-reference)"/>
<!-- <xsl:variable name="previous_orientation" select="preceding-sibling::page_sequence[@orientation][1]/@orientation"/>
<xsl:if test="(@orientation = 'landscape' or $previous_orientation = 'landscape') and not(@orientation = 'portrait')">-<xsl:value-of select="@orientation"/></xsl:if> -->
<xsl:call-template name="getPageSequenceOrientation"/>
<xsl:if test="position() = 1">
<xsl:if test="normalize-space($document-master-reference) != ''">_first_sequence</xsl:if>
</xsl:if>
</xsl:attribute>
<xsl:if test="position() = 1">
<xsl:attribute name="initial-page-number">1</xsl:attribute>
</xsl:if>
<xsl:if test="$layoutVersion = '1951'">
<xsl:attribute name="initial-page-number">auto</xsl:attribute>
<xsl:attribute name="force-page-count">end-on-even</xsl:attribute>
</xsl:if>
<fo:static-content flow-name="xsl-footnote-separator">
<fo:block>
<xsl:if test="$layoutVersion = '2024'">
<xsl:attribute name="margin-bottom">6pt</xsl:attribute>
</xsl:if>
<fo:leader leader-pattern="rule" leader-length="30%">
<xsl:if test="$layoutVersion = '2024'">
<xsl:attribute name="leader-length">51mm</xsl:attribute>
<xsl:attribute name="rule-thickness">0.5pt</xsl:attribute>
</xsl:if>
</fo:leader>
</fo:block>
</fo:static-content>
<xsl:variable name="border_around_page"><xsl:if test="$layoutVersion = '1951'">true</xsl:if></xsl:variable>
<xsl:call-template name="insertHeaderFooter">
<xsl:with-param name="border_around_page" select="$border_around_page"/>
<xsl:with-param name="insert_header_first" select="normalize-space(position() = 1)"/>
</xsl:call-template>
<fo:flow flow-name="xsl-region-body">
<!-- Information and documentation — Codes for transcription systems -->
<!-- <fo:block-container>
<fo:block font-size="18pt" font-weight="bold" margin-top="40pt" margin-bottom="20pt" line-height="1.1" role="H1">
<fo:block role="SKIP">
<xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-intro']"/>
<xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-main']"/>
<xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-part']">
<xsl:with-param name="isMainLang">true</xsl:with-param>
<xsl:with-param name="isMainBody">true</xsl:with-param>
</xsl:apply-templates>
</fo:block>
<fo:block role="SKIP">
<xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-part']/node()"/>
</fo:block>
<xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-amd']">
<xsl:with-param name="isMainLang">true</xsl:with-param>
<xsl:with-param name="isMainBody">true</xsl:with-param>
</xsl:apply-templates>
</fo:block>
</fo:block-container> -->
<!-- Clause(s) -->
<!-- <fo:block> -->
<xsl:if test="position() = 1 and $layoutVersion = '1951'">
<!-- first page header -->
<!-- Example: ISO Recommendation R 453 November 1965 -->
<fo:block-container margin-top="-8mm" margin-left="-12mm" margin-right="-12mm">
<xsl:if test="$revision_date_num >= 19690101">
<xsl:attribute name="margin-top">-9mm</xsl:attribute>
<xsl:attribute name="margin-left">-12.5mm</xsl:attribute>
<xsl:attribute name="margin-right">-12.5mm</xsl:attribute>
</xsl:if>
<fo:block-container margin-left="0" margin-right="0" border-bottom="1.25pt solid black">
<fo:table table-layout="fixed" width="100%" font-family="Arial" font-size="13pt">
<xsl:if test="$revision_date_num >= 19690101">
<xsl:attribute name="font-size">10pt</xsl:attribute>
</xsl:if>
<fo:table-column column-width="proportional-column-width(9.5)"/>
<fo:table-column column-width="proportional-column-width(65)"/>
<fo:table-column column-width="proportional-column-width(34)"/>
<fo:table-column column-width="proportional-column-width(50)"/>
<fo:table-column column-width="proportional-column-width(9.5)"/>
<fo:table-body>
<fo:table-row height="10mm">
<xsl:if test="$revision_date_num >= 19690101">
<xsl:attribute name="height">7mm</xsl:attribute>
</xsl:if>
<fo:table-cell><fo:block> </fo:block></fo:table-cell>
<fo:table-cell><fo:block><xsl:value-of select="$doctype_localized"/></fo:block></fo:table-cell>
<fo:table-cell text-align="center"><fo:block><xsl:value-of select="$docnumber_with_prefix"/></fo:block></fo:table-cell>
<fo:table-cell text-align="right">
<fo:block>
<xsl:call-template name="convertDate">
<xsl:with-param name="date" select="$revision_date"/>
</xsl:call-template>
</fo:block>
</fo:table-cell>
<fo:table-cell><fo:block> </fo:block></fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:block-container>
</fo:block-container>
<!-- Show Introduction in the main section -->
<!-- <xsl:apply-templates select="/*/*[local-name()='preface']/*[local-name() = 'introduction']"/> -->
<xsl:copy-of select="$preface_introduction"/>
</xsl:if> <!-- $layoutVersion = '1951' -->
<!-- <xsl:choose>
<xsl:when test="($layoutVersion = '1951' or $layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987' or $layoutVersion = '1989') and $layout_columns != 1">
<xsl:choose>
<xsl:when test="$doctype = 'amendment'">
<xsl:variable name="flatxml">
<xsl:apply-templates select="/iso:iso-standard/iso:sections/*" mode="flatxml"/>
</xsl:variable>
<xsl:apply-templates select="xalan:nodeset($flatxml)/*"/>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="processMainSectionsDefault_flatxml"/>
</xsl:otherwise>
</xsl:choose>
</xsl:when> ($layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987' or $layoutVersion = '1989') and $layout_columns != 1
<xsl:otherwise>
<xsl:choose>
<xsl:when test="$doctype = 'amendment'">
<xsl:apply-templates select="/iso:iso-standard/iso:sections/*"/>
</xsl:when>
<xsl:otherwise> -->
<!-- <xsl:call-template name="processMainSectionsDefault"/> -->
<!-- <xsl:apply-templates />
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose> -->
<xsl:apply-templates/>
<xsl:if test="position() = last()">
<xsl:call-template name="insertSmallHorizontalLine"/>
<xsl:call-template name="insertLastBlock"/>
</xsl:if>
</fo:flow>
</fo:page-sequence>
</xsl:for-each>
</xsl:for-each>
<xsl:if test="$debug = 'true'">
<xsl:message>END xalan:nodeset($updated_xml_with_pages) for sections</xsl:message>
<xsl:message>DEBUG: processing time <xsl:value-of select="java:getTime(java:java.util.Date.new()) - $startTimeC"/> msec.</xsl:message>
</xsl:if>
<!-- Index -->
<!-- <xsl:message>START current_document_index_id</xsl:message> -->
<xsl:variable name="docid">
<xsl:call-template name="getDocumentId"/>
</xsl:variable>
<xsl:variable name="current_document_index_id">
<xsl:apply-templates select="//iso:indexsect" mode="index_add_id">
<xsl:with-param name="docid" select="$docid"/>
</xsl:apply-templates>
</xsl:variable>
<!-- <xsl:message>END current_document_index_id</xsl:message> -->
<!-- <xsl:message>START current_document_index</xsl:message> -->
<xsl:variable name="startTime1" select="java:getTime(java:java.util.Date.new())"/>
<xsl:variable name="current_document_index">
<xsl:apply-templates select="xalan:nodeset($current_document_index_id)" mode="index_update"/>
</xsl:variable>
<!-- <xsl:variable name="endTime1" select="java:getTime(java:java.util.Date.new())"/>
<xsl:message>DEBUG: processing time <xsl:value-of select="$endTime1 - $startTime1"/> msec.</xsl:message>
<xsl:message>END current_document_index</xsl:message> -->
<!-- <xsl:variable name="startTime2" select="java:getTime(java:java.util.Date.new())"/>
<xsl:message>START xalan:nodeset</xsl:message> -->
<!-- <xsl:apply-templates select="//iso:indexsect" mode="index"/> -->
<xsl:apply-templates select="xalan:nodeset($current_document_index)" mode="index"/>
<!-- <xsl:variable name="endTime2" select="java:getTime(java:java.util.Date.new())"/>
<xsl:message>DEBUG: processing time <xsl:value-of select="$endTime2 - $startTime2"/> msec.</xsl:message>
<xsl:message>END xalan:nodeset</xsl:message> -->
<xsl:choose>
<xsl:when test="$isGenerateTableIF = 'true'"><!-- skip last page --></xsl:when>
<xsl:when test="$layoutVersion = '1951'"/>
<xsl:when test="$layoutVersion = '1972'"/>
<xsl:when test="$layoutVersion = '1979'"/>
<xsl:when test="(($layoutVersion = '1987' and $doctype = 'technical-report') or ($layoutVersion = '1979' and $doctype = 'addendum'))"><!-- UDC, Keywords and Price renders on the first page for technical-report --></xsl:when>
<xsl:when test="$layoutVersion = '2024'">
<xsl:call-template name="insertLastPage_2024"/>
</xsl:when>
<xsl:otherwise>
<xsl:if test="$isPublished = 'true'">
<xsl:call-template name="insertLastPage"/>
</xsl:if>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</fo:root>
</xsl:template>
<xsl:template name="printAddendumTitle">
<xsl:value-of select="java:toUpperCase(java:java.lang.String.new($doctype))"/>
<xsl:text> </xsl:text>
<xsl:value-of select="/iso:iso-standard/iso:bibdata/iso:ext/iso:structuredidentifier/iso:project-number/@addendum"/>
<xsl:text> : </xsl:text>
<xsl:value-of select="/iso:iso-standard/iso:bibdata/iso:title[@type = 'title-add']"/>
</xsl:template>
<xsl:template match="iso:preface/iso:clause[@type = 'provenance']" priority="5">
<xsl:param name="process">false</xsl:param>
<xsl:if test="$process = 'true'">
<fo:block margin-top="30mm" role="SKIP" font-size="8pt">
<xsl:apply-templates/>
</fo:block>
</xsl:if>
</xsl:template>
<xsl:template name="insertMainSectionsAmendmentPageSequences">
<xsl:element name="sections" namespace="{$namespace_full}"> <!-- save context element -->
<xsl:element name="page_sequence" namespace="{$namespace_full}">
<xsl:for-each select="/*/*[local-name()='sections']/*">
<xsl:sort select="@displayorder" data-type="number"/>
<xsl:apply-templates select="." mode="update_xml_step_move_pagebreak"/>
</xsl:for-each>
</xsl:element>
</xsl:element>
</xsl:template> <!-- END: processMainSectionsAmendmentDefault_items -->
<xsl:template name="processPrefaceAndMainSectionsISO_items">
<!-- <xsl:if test="$debug = 'true'"><xsl:message>START updated_xml_step_move_pagebreak</xsl:message></xsl:if>
<xsl:variable name="startTime1" select="java:getTime(java:java.util.Date.new())"/> -->
<xsl:variable name="updated_xml_step_move_pagebreak">
<xsl:element name="{$root_element}" namespace="{$namespace_full}">
<xsl:call-template name="copyCommonElements"/>
<xsl:call-template name="insertPrefaceSectionsPageSequences"/>
<xsl:choose>
<xsl:when test="$doctype = 'amendment'">
<xsl:call-template name="insertMainSectionsAmendmentPageSequences"/>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="insertMainSectionsPageSequences"/>
</xsl:otherwise>
</xsl:choose>
</xsl:element>
</xsl:variable>
<!-- <xsl:variable name="endTime1" select="java:getTime(java:java.util.Date.new())"/>
<xsl:if test="$debug = 'true'">
<xsl:message>DEBUG: processing time <xsl:value-of select="$endTime1 - $startTime1"/> msec.</xsl:message>
<xsl:message>END updated_xml_step_move_pagebreak</xsl:message>
</xsl:if> -->
<xsl:variable name="updated_xml_step_move_pagebreak_filename" select="concat($output_path,'_main_', java:getTime(java:java.util.Date.new()), '.xml')"/>
<!-- <xsl:if test="$debug = 'true'"><xsl:message>START write updated_xml_step_move_pagebreak</xsl:message></xsl:if>
<xsl:variable name="startTime2" select="java:getTime(java:java.util.Date.new())"/> -->
<redirect:write file="{$updated_xml_step_move_pagebreak_filename}">
<xsl:copy-of select="$updated_xml_step_move_pagebreak"/>
</redirect:write>
<!-- <xsl:variable name="endTime2" select="java:getTime(java:java.util.Date.new())"/>
<xsl:if test="$debug = 'true'">
<xsl:message>DEBUG: processing time <xsl:value-of select="$endTime2 - $startTime2"/> msec.</xsl:message>
<xsl:message>END write updated_xml_step_move_pagebreak</xsl:message>
</xsl:if> -->
<!-- <xsl:if test="$debug = 'true'"><xsl:message>START loading document() updated_xml_step_move_pagebreak</xsl:message></xsl:if>
<xsl:variable name="startTime3" select="java:getTime(java:java.util.Date.new())"/> -->
<xsl:copy-of select="document($updated_xml_step_move_pagebreak_filename)"/>
<!-- <xsl:variable name="endTime3" select="java:getTime(java:java.util.Date.new())"/>
<xsl:if test="$debug = 'true'">
<xsl:message>DEBUG: processing time <xsl:value-of select="$endTime3 - $startTime3"/> msec.</xsl:message>
<xsl:message>END loading document() updated_xml_step_move_pagebreak</xsl:message>
</xsl:if>
-->
<xsl:if test="$debug = 'true'">
<redirect:write file="page_sequence_preface_and_main.xml">
<xsl:copy-of select="$updated_xml_step_move_pagebreak"/>
</redirect:write>
</xsl:if>
<xsl:call-template name="deleteFile">
<xsl:with-param name="filepath" select="$updated_xml_step_move_pagebreak_filename"/>
</xsl:call-template>
</xsl:template> <!-- END: processPrefaceAndMainSectionsISO_items -->
<xsl:template name="insertCoverPage">
<xsl:if test="$isGenerateTableIF = 'false'"> <!-- no need cover page for auto-layout algorithm -->
<xsl:variable name="fo_cover_page">
<!-- cover page -->
<xsl:choose>
<xsl:when test="$layoutVersion = '1951'">
<fo:page-sequence master-reference="cover-page_1951" force-page-count="no-force">
<fo:static-content flow-name="cover-page-header" font-family="Times New Roman" font-size="8.5pt" font-weight="bold">
<xsl:if test="$revision_date_num < 19680101">
<xsl:attribute name="font-family">Arial</xsl:attribute>
<xsl:attribute name="font-size">8pt</xsl:attribute>
</xsl:if>
<fo:block-container height="99%" display-align="after">
<fo:block text-align-last="justify" role="SKIP">
<!-- Example: UDC 669.7 : 620.178.1 -->
<xsl:value-of select="$udc"/>
<fo:inline keep-together.within-line="always" role="SKIP">
<fo:leader leader-pattern="space"/>
<fo:inline font-weight="normal"><xsl:value-of select="concat($i18n_reference_number_abbrev, ' : ')"/></fo:inline><xsl:value-of select="$ISOnumber"/> <!-- font-family="Arial" -->
</fo:inline>
</fo:block>
</fo:block-container>
</fo:static-content>
<fo:static-content flow-name="cover-page-footer" font-size="9.5pt">
<fo:block text-align="center">
<!-- COPYRIGHT RESERVED -->
<xsl:apply-templates select="/iso:iso-standard/iso:boilerplate/iso:copyright-statement"/>
</fo:block>
</fo:static-content>
<fo:flow flow-name="xsl-region-body">
<fo:block text-align="center" font-family="Arial" margin-top="14mm">
<fo:block>
<fo:instream-foreign-object content-width="23mm" fox:alt-text="Image ISO Logo">
<xsl:copy-of select="$Image-ISO-Logo-1951-SVG"/>
</fo:instream-foreign-object>
</fo:block>
<fo:block margin-top="2mm" font-size="8pt" font-weight="bold">
<xsl:call-template name="add-letter-spacing">
<xsl:with-param name="text">
<xsl:choose>
<xsl:when test="$lang = 'fr'"><xsl:value-of select="java:toUpperCase(java:java.lang.String.new('Organisation Internationale de Normalisation'))"/></xsl:when>
<xsl:otherwise>
<xsl:value-of select="java:toUpperCase(java:java.lang.String.new(/iso:iso-standard/iso:bibdata/iso:copyright/iso:owner/iso:organization/iso:name))"/>
</xsl:otherwise>
</xsl:choose>
</xsl:with-param>
<xsl:with-param name="letter-spacing" select="0.55"/>
</xsl:call-template>
</fo:block>
<fo:block font-size="20pt" margin-top="31mm">
<!-- ISO RECOMMENDATION -->
<xsl:call-template name="add-letter-spacing">
<xsl:with-param name="text" select="$doctype_uppercased"/>
<xsl:with-param name="letter-spacing" select="0.35"/>
</xsl:call-template>
</fo:block>
<fo:block font-size="24pt" margin-top="5mm">
<xsl:value-of select="$docnumber_with_prefix"/>
</fo:block>
<fo:block-container height="39mm" display-align="center">
<fo:block font-size="11pt">
<xsl:if test="$revision_date_num < 19680101">
<xsl:attribute name="font-size">14pt</xsl:attribute>
</xsl:if>
<xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-intro']"/>
<xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-main']"/>
<fo:block font-size="11pt" text-transform="uppercase" margin-top="2mm">
<xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-part']/node()"/>
</fo:block>
</fo:block>
</fo:block-container>
<fo:block-container margin-top="8.5mm" font-size="10pt"> <!-- height="40mm" display-align="center" -->
<!-- Example: 1st EDITION -->
<!-- <fo:block><xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:edition[@language != '']" /></fo:block> -->
<fo:block><xsl:value-of select="/iso:iso-standard/iso:bibdata/iso:edition[@language != '']"/></fo:block> <!-- font-weight="bold" -->
<!-- <fo:block> </fo:block> -->
<!-- Example: October 1971 -->
<fo:block margin-top="2mm" font-size="9pt">
<xsl:call-template name="convertDate">
<xsl:with-param name="date" select="/iso:iso-standard/iso:bibdata/iso:version/iso:revision-date"/>
</xsl:call-template>
</fo:block>
<fo:block margin-top="14mm">
<xsl:value-of select="/iso:iso-standard/iso:bibdata/iso:ext/iso:edn-replacement"/>
</fo:block>
</fo:block-container>
</fo:block>
</fo:flow>
</fo:page-sequence>
</xsl:when> <!-- END: $layoutVersion = '1951' -->
<xsl:when test="$layoutVersion = '1972' or ($layoutVersion = '1979' and not($doctype = 'addendum'))">
<fo:page-sequence master-reference="cover-page_1972" force-page-count="no-force">
<fo:static-content flow-name="cover-page-footer" font-size="7pt">
<xsl:call-template name="insertSingleLine"/>
<fo:block font-size="11pt" font-weight="bold" text-align-last="justify" margin-right="1mm">
<fo:inline keep-together.within-line="always" role="SKIP">
<xsl:value-of select="$udc"/>
<fo:leader leader-pattern="space"/>
<fo:inline role="SKIP">
<xsl:value-of select="concat($i18n_reference_number, ' ', $ISOnumber)"/>
</fo:inline>
</fo:inline>
</fo:block>
<xsl:if test="/iso:iso-standard/iso:bibdata/iso:keyword">
<fo:block margin-top="10pt">
<fo:inline font-weight="bold"><xsl:value-of select="$i18n_descriptors"/> : </fo:inline>
<xsl:call-template name="insertKeywords">
<xsl:with-param name="sorting">no</xsl:with-param>
<xsl:with-param name="charDelim" select="', '"/>
</xsl:call-template>
</fo:block>
</xsl:if>
<fo:block-container position="absolute" left="0mm" top="0mm" height="25mm" text-align="right" display-align="after" role="SKIP">
<fo:block>
<xsl:for-each select="xalan:nodeset($price_based_on_items)/item">
<xsl:value-of select="."/>
<xsl:if test="position() != last()">
<fo:page-number-citation ref-id="lastBlock"/>
</xsl:if>
</xsl:for-each>
</fo:block>
</fo:block-container>
</fo:static-content>
<fo:static-content flow-name="left-region">
<fo:block-container reference-orientation="90">
<fo:block font-size="8pt" margin-left="7mm" margin-top="10mm">
<xsl:value-of select="$ISOnumber"/>
</fo:block>
</fo:block-container>
</fo:static-content>
<fo:flow flow-name="xsl-region-body">
<xsl:variable name="docnumber">
<xsl:variable name="value" select="/iso:iso-standard/iso:bibdata/iso:docnumber"/>
<xsl:value-of select="$value"/>
<xsl:if test="$part != ''">/<xsl:value-of select="$part"/></xsl:if>
</xsl:variable>
<fo:table table-layout="fixed" width="100%" border-top="2pt solid black" border-bottom="2pt solid black">
<xsl:choose>
<xsl:when test="string-length($docnumber) > 4">
<fo:table-column column-width="proportional-column-width(110)"/>
<fo:table-column column-width="proportional-column-width(28)"/>
<fo:table-column column-width="proportional-column-width(43)"/>
</xsl:when>
<xsl:otherwise>
<fo:table-column column-width="proportional-column-width(123)"/>
<fo:table-column column-width="proportional-column-width(28)"/>
<fo:table-column column-width="proportional-column-width(30)"/>
</xsl:otherwise>
</xsl:choose>
<fo:table-body>
<fo:table-row height="39mm" display-align="center">
<xsl:if test="$layoutVersion = '1972'">
<xsl:attribute name="height">42mm</xsl:attribute>
<xsl:attribute name="font-family">Univers 59 Ultra Condensed</xsl:attribute>
<xsl:attribute name="text-transform">uppercase</xsl:attribute>
</xsl:if>
<fo:table-cell>
<fo:block font-size="32pt" margin-top="2mm">
<xsl:if test="string-length($docnumber) > 4">
<xsl:attribute name="font-size">29pt</xsl:attribute>
</xsl:if>
<xsl:if test="$layoutVersion = '1972'">
<xsl:attribute name="font-size">40pt</xsl:attribute>
</xsl:if>
<xsl:if test="$layoutVersion = '1979'">
<xsl:attribute name="letter-spacing">-0.02em</xsl:attribute>
</xsl:if>
<xsl:value-of select="$doctype_localized"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block font-size="0">
<xsl:variable name="content-height">
<xsl:choose>
<xsl:when test="$layoutVersion = '1972'">33</xsl:when>
<xsl:otherwise>27</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<fo:external-graphic src="{concat('data:image/png;base64,', normalize-space($Image-ISO-Logo-1972))}" content-height="{$content-height}mm" content-width="scale-to-fit" scaling="uniform" fox:alt-text="Image ISO Logo"/>
</fo:block>
</fo:table-cell>
<fo:table-cell text-align="right">
<fo:block font-size="34pt" margin-top="2mm">
<xsl:if test="$layoutVersion = '1972'">
<xsl:attribute name="font-size">38pt</xsl:attribute>
</xsl:if>
<xsl:value-of select="$docnumber"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row border-top="2pt solid black" height="4.5mm" display-align="center">
<fo:table-cell number-columns-spanned="3" font-size="5.6pt" text-align-last="justify">
<!-- <fo:block><xsl:value-of select="$ISO_title_en"/>●<xsl:value-of select="$ISO_title_ru"/>●<xsl:value-of select="$ISO_title_fr"/></fo:block> -->
<fo:block>
<xsl:value-of select="$ISO_title_en"/>
<xsl:call-template name="insertBlackCircle"/>
<xsl:value-of select="$ISO_title_ru"/>
<xsl:call-template name="insertBlackCircle"/>
<xsl:value-of select="$ISO_title_fr"/></fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
<fo:block font-size="18pt" font-family="Univers" font-weight="bold" margin-top="44mm" margin-bottom="6mm" role="H1">
<xsl:call-template name="insertTitlesLangMain"/>
</fo:block>
<xsl:for-each select="xalan:nodeset($lang_other)/lang">
<xsl:variable name="lang_other" select="."/>
<fo:block font-size="8pt" font-style="italic" line-height="1.1" role="H1">
<!-- Example: title-intro fr -->
<xsl:call-template name="insertTitlesLangOther">
<xsl:with-param name="lang_other" select="$lang_other"/>
</xsl:call-template>
</fo:block>
</xsl:for-each>
<fo:block margin-top="6mm" font-weight="bold">
<xsl:call-template name="printEdition"/>
<xsl:text> — </xsl:text>
<xsl:value-of select="/iso:iso-standard/iso:bibdata/iso:version/iso:revision-date"/>
</fo:block>
</fo:flow>
</fo:page-sequence>
</xsl:when> <!-- END: $layoutVersion = '1972' or ($layoutVersion = '1979' and not($doctype = 'addendum')) -->
<xsl:when test="(($layoutVersion = '1987' and $doctype = 'technical-report') or ($layoutVersion = '1979' and $doctype = 'addendum'))"><!-- see preface pages below --></xsl:when>
<xsl:when test="$layoutVersion = '1987'">
<fo:page-sequence master-reference="cover-page_1987" force-page-count="no-force">
<fo:static-content flow-name="right-region">
<fo:block-container height="50%">
<fo:block-container margin-top="8mm" margin-left="2mm">
<fo:block-container margin-top="0" margin-left="0" font-family="Times New Roman">
<fo:block font-size="24pt" line-height="1.1">
<xsl:value-of select="$docidentifierISO_with_break"/>
</fo:block>
<fo:block line-height="1">
<xsl:call-template name="printEdition"/>
<xsl:value-of select="$linebreak"/>
<xsl:text> </xsl:text><xsl:value-of select="/iso:iso-standard/iso:bibdata/iso:version/iso:revision-date"/>
</fo:block>
</fo:block-container>
</fo:block-container>
</fo:block-container>
<fo:block-container height="50%" display-align="after">
<fo:block-container margin-left="3mm">
<fo:block-container margin-left="0" font-family="Times New Roman">
<fo:block font-size="8pt" font-family="Times New Roman" margin-bottom="-0.5mm">
<xsl:value-of select="$i18n_reference_number"/>
<xsl:value-of select="$linebreak"/>
<xsl:value-of select="$ISOnumber"/>
</fo:block>
</fo:block-container>
</fo:block-container>
</fo:block-container>
</fo:static-content>
<fo:flow flow-name="xsl-region-body">
<fo:block-container height="99.5%" border="1.25pt solid black">
<fo:block-container margin-left="11mm" margin-top="16mm" margin-right="10.5mm">
<fo:block-container margin-left="0" margin-top="0" margin-right="0">
<fo:block font-family="Times New Roman" font-size="24pt">
<!-- INTERNATIONAL STANDARD -->
<xsl:call-template name="add-letter-spacing">
<xsl:with-param name="text" select="$doctype_uppercased"/>
<xsl:with-param name="letter-spacing" select="0.1"/>
</xsl:call-template>
</fo:block>
<fo:table table-layout="fixed" width="100%" margin-top="16mm">
<fo:table-column column-width="proportional-column-width(23)"/>
<fo:table-column column-width="proportional-column-width(108)"/>
<fo:table-body>
<fo:table-row>
<fo:table-cell>
<fo:block margin-top="-0.5mm" font-size="0">
<xsl:variable name="content-height">18</xsl:variable>
<fo:external-graphic src="{concat('data:image/png;base64,', normalize-space($Image-ISO-Logo-1987))}" content-height="{$content-height}mm" content-width="scale-to-fit" scaling="uniform" fox:alt-text="Image ISO Logo"/>
</fo:block>
</fo:table-cell>
<fo:table-cell font-size="7.5pt" border-top="0.5pt solid black" border-bottom="0.5pt solid black" text-align-last="justify" display-align="center" line-height="1.6" padding-left="32mm">
<fo:block><xsl:value-of select="$ISO_title_en"/></fo:block>
<fo:block><xsl:value-of select="$ISO_title_fr"/></fo:block>
<fo:block><xsl:value-of select="$ISO_title_ru"/></fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
<fo:block font-size="13pt" font-weight="bold" margin-top="32mm" margin-bottom="9mm" role="H1">
<xsl:call-template name="insertTitlesLangMain"/>
</fo:block>
<xsl:for-each select="xalan:nodeset($lang_other)/lang">
<xsl:variable name="lang_other" select="."/>
<fo:block font-size="8pt" font-style="italic" line-height="1.1" role="H1">
<!-- Example: title-intro fr -->
<xsl:call-template name="insertTitlesLangOther">
<xsl:with-param name="lang_other" select="$lang_other"/>
</xsl:call-template>
</fo:block>
</xsl:for-each>
</fo:block-container>
</fo:block-container>
</fo:block-container>
</fo:flow>
</fo:page-sequence>
</xsl:when> <!-- END: $layoutVersion = '1987' -->
<xsl:when test="$layoutVersion = '2024'">
<fo:page-sequence master-reference="cover-page_2024" force-page-count="no-force">
<fo:flow flow-name="xsl-region-body">
<fo:table table-layout="fixed" width="100%">
<xsl:call-template name="insertInterFont"/>
<fo:table-column column-width="proportional-column-width(113.8)"/>
<fo:table-column column-width="proportional-column-width(2)"/>
<fo:table-column column-width="proportional-column-width(2)"/>
<fo:table-column column-width="proportional-column-width(72.2)"/>
<fo:table-body>
<fo:table-row>
<fo:table-cell number-columns-spanned="2" border-right="{$cover_page_border}">
<fo:block>
<xsl:call-template name="insertLogoImages2024"/>
</fo:block>
</fo:table-cell>
<!-- International
Standard -->
<fo:table-cell number-columns-spanned="2" padding-left="6mm">
<fo:block-container height="46mm" role="SKIP">
<fo:block font-size="20pt" font-weight="bold" line-height="1.25" margin-top="3mm">
<xsl:variable name="updates-document-type" select="/iso:iso-standard/iso:bibdata/iso:ext/iso:updates-document-type"/>
<xsl:variable name="updates-document-type_localized">
<xsl:call-template name="getLocalizedString">
<xsl:with-param name="key" select="concat('doctype_dict.',$updates-document-type)"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="updates-document-type_str">
<xsl:choose>
<xsl:when test="$updates-document-type != '' and $updates-document-type_localized != $updates-document-type">
<xsl:value-of select="$updates-document-type_localized"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="java:toUpperCase(java:java.lang.String.new(translate($updates-document-type,'-',' ')))"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:choose>
<xsl:when test="$stage-abbreviation = 'DIS'"> <!-- or $stage-abbreviation = 'DAMD' or $stage-abbreviation = 'DAM' -->
<xsl:value-of select="java:toUpperCase(java:java.lang.String.new($stagename))"/>
<xsl:value-of select="$linebreak"/>
<xsl:value-of select="$doctype_localized"/>
</xsl:when>
<!-- <xsl:when test="$stage-abbreviation = 'FDAmd' or $stage-abbreviation = 'FDAM'"><xsl:value-of select="$doctype_uppercased"/></xsl:when> -->
<xsl:when test="$stagename-header-coverpage != ''">
<xsl:attribute name="margin-top">12pt</xsl:attribute>
<xsl:value-of select="$stagename-header-coverpage"/>
<!-- if there is iteration number, then print it -->
<xsl:variable name="iteration" select="number(/iso:iso-standard/iso:bibdata/iso:status/iso:iteration)"/>
<xsl:if test="number($iteration) = $iteration and ($stage-abbreviation = 'NWIP' or $stage-abbreviation = 'NP' or $stage-abbreviation = 'PWI' or $stage-abbreviation = 'AWI' or $stage-abbreviation = 'WD' or $stage-abbreviation = 'CD')">
<xsl:text> </xsl:text><xsl:value-of select="$iteration"/>
</xsl:if>
<xsl:value-of select="$linebreak"/>
<xsl:choose>
<xsl:when test="$doctype = 'amendment'">
<xsl:value-of select="$updates-document-type_str"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$doctype_localized"/>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="$doctype = 'amendment'">
<xsl:value-of select="$updates-document-type_str"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$doctype_localized"/>
</xsl:otherwise>
</xsl:choose>
</fo:block>
</fo:block-container>
</fo:table-cell>
</fo:table-row>
<fo:table-row height="46mm">
<fo:table-cell number-columns-spanned="2" border-right="{$cover_page_border}">
<fo:block role="SKIP"><fo:wrapper role="artifact"> </fo:wrapper></fo:block>
</fo:table-cell>
<fo:table-cell number-columns-spanned="2" display-align="after" padding-left="6mm">
<fo:block font-size="19pt" font-weight="bold" line-height="1">
<xsl:if test="$stage >=60">
<xsl:attribute name="color"><xsl:value-of select="$color_red"/></xsl:attribute>
</xsl:if>
<xsl:value-of select="$docidentifierISO"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row height="1.4mm" font-size="0pt">
<fo:table-cell border-bottom="{$cover_page_border}"><fo:block role="SKIP"><fo:wrapper role="artifact"> </fo:wrapper></fo:block></fo:table-cell>
<fo:table-cell number-columns-spanned="2"><fo:block role="SKIP"><fo:wrapper role="artifact"> </fo:wrapper></fo:block></fo:table-cell>
<fo:table-cell border-bottom="{$cover_page_border}"><fo:block role="SKIP"><fo:wrapper role="artifact"> </fo:wrapper></fo:block></fo:table-cell>
</fo:table-row>
<fo:table-row height="1.4mm" font-size="0pt">
<fo:table-cell number-columns-spanned="4"><fo:block role="SKIP"><fo:wrapper role="artifact"> </fo:wrapper></fo:block></fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell number-columns-spanned="2" border-right="{$cover_page_border}" padding-right="4mm">
<fo:block-container font-family="Cambria" line-height="1.1" role="SKIP" height="110mm">
<fo:block margin-right="3.5mm" role="SKIP">
<fo:block font-size="18pt" font-weight="bold" margin-top="2.5mm" role="H1">
<xsl:call-template name="insertTitlesLangMain"/>
</fo:block>
<xsl:if test="not($stage-abbreviation = 'FDAMD' or $stage-abbreviation = 'FDAM')">
<xsl:for-each select="xalan:nodeset($lang_other)/lang">
<xsl:variable name="lang_other" select="."/>
<fo:block font-size="12pt" role="SKIP"><xsl:value-of select="$linebreak"/></fo:block>
<fo:block font-size="11pt" font-style="italic" line-height="1.1" role="H1">
<!-- Example: title-intro fr -->
<xsl:call-template name="insertTitlesLangOther">
<xsl:with-param name="lang_other" select="$lang_other"/>
</xsl:call-template>
</fo:block>
</xsl:for-each>
</xsl:if>
<xsl:if test="$stage-abbreviation = 'NWIP' or $stage-abbreviation = 'NP' or $stage-abbreviation = 'PWI' or $stage-abbreviation = 'AWI' or $stage-abbreviation = 'WD' or $stage-abbreviation = 'CD' or $stage-abbreviation = 'FDIS' or $stagename_abbreviation = 'FDIS' or $stage-abbreviation = 'DIS' or $stage-abbreviation = 'DAMD' or $stage-abbreviation = 'DAM' or $stagename_abbreviation = 'DIS'">
<fo:block margin-top="20mm">
<xsl:copy-of select="$ics"/>
</fo:block>
</xsl:if>
</fo:block>
</fo:block-container>
</fo:table-cell>
<fo:table-cell number-columns-spanned="2" padding-left="6mm">
<fo:block margin-top="2.5mm" line-height="1.1" role="SKIP">
<xsl:if test="not($stage-abbreviation = 'DIS' or $stage-abbreviation = 'DAMD' or $stage-abbreviation = 'DAM')">
<xsl:variable name="edition_and_date">
<xsl:call-template name="insertEditionAndDate"/>
</xsl:variable>
<xsl:if test="normalize-space($edition_and_date) != ''">
<fo:block font-size="18pt" font-weight="bold" margin-bottom="3mm">
<xsl:value-of select="$edition_and_date"/>
</fo:block>
</xsl:if>
</xsl:if>
<xsl:if test="$doctype = 'amendment'"> <!-- and not($stage-abbreviation = 'FDAMD' or $stage-abbreviation = 'FDAM') -->
<fo:block font-size="18pt" font-weight="bold" margin-bottom="3mm">
<xsl:value-of select="$doctype_uppercased"/>
<xsl:text> </xsl:text>
<xsl:variable name="amendment-number" select="/iso:iso-standard/iso:bibdata/iso:ext/iso:structuredidentifier/iso:project-number/@amendment"/>
<xsl:if test="normalize-space($amendment-number) != ''">
<xsl:value-of select="$amendment-number"/><xsl:text> </xsl:text>
</xsl:if>
</fo:block>
<!-- </xsl:if>
<xsl:if test="$doctype = 'amendment' and not($stage-abbreviation = 'FDAMD' or $stage-abbreviation = 'FDAM')"> -->
<xsl:if test="/iso:iso-standard/iso:bibdata/iso:date[@type = 'updated']">
<fo:block font-size="18pt" font-weight="bold" margin-bottom="3mm">
<xsl:value-of select="/iso:iso-standard/iso:bibdata/iso:date[@type = 'updated']"/>
</fo:block>
</xsl:if>
</xsl:if>
<xsl:variable name="date_corrected" select="normalize-space(/iso:iso-standard/iso:bibdata/iso:date[@type = 'corrected'])"/>
<xsl:if test="$date_corrected != ''">
<fo:block font-size="18pt" font-weight="bold" margin-bottom="3mm">
<xsl:value-of select="$i18n_corrected_version"/>
<xsl:value-of select="$linebreak"/>
<xsl:value-of select="$date_corrected"/>
</fo:block>
</xsl:if>
<xsl:if test="$stage-abbreviation = 'DIS' or $stage-abbreviation = 'DAMD' or $stage-abbreviation = 'DAM' or $stagename_abbreviation = 'DIS' or $stage-abbreviation = 'FDIS' or $stage-abbreviation = 'FDAMD' or $stage-abbreviation = 'FDAM' or $stagename_abbreviation = 'FDIS' or $stage-abbreviation = 'NWIP' or $stage-abbreviation = 'NP' or $stage-abbreviation = 'PWI' or $stage-abbreviation = 'AWI' or $stage-abbreviation = 'WD' or $stage-abbreviation = 'CD'">
<xsl:if test="normalize-space($editorialgroup) != ''">
<fo:block margin-bottom="3mm">
<xsl:copy-of select="$editorialgroup"/>
</fo:block>
</xsl:if>
<xsl:if test="normalize-space($secretariat) != ''">
<fo:block margin-bottom="3mm">
<xsl:copy-of select="$secretariat"/>
</fo:block>
</xsl:if>
</xsl:if>
<xsl:if test="$stage-abbreviation = 'DIS' or $stage-abbreviation = 'DAMD' or $stage-abbreviation = 'DAM' or $stagename_abbreviation = 'DIS' or $stage-abbreviation = 'FDIS' or $stage-abbreviation = 'FDAMD' or $stage-abbreviation = 'FDAM' or $stagename_abbreviation = 'FDIS'">
<fo:block margin-bottom="3mm">
<!-- Voting begins on: -->
<xsl:value-of select="concat($i18n_voting_begins_on, ':')"/>
<fo:block font-weight="bold">
<xsl:call-template name="insertVoteStarted"/>
</fo:block>
</fo:block>
<fo:block margin-bottom="3mm">
<!-- Voting terminates on: -->
<xsl:value-of select="concat($i18n_voting_terminates_on, ':')"/>
<fo:block font-weight="bold">
<xsl:call-template name="insertVoteEnded"/>
</fo:block>
</fo:block>
</xsl:if>
</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row height="60mm">
<fo:table-cell number-columns-spanned="2" border-right="{$cover_page_border}" display-align="after" padding-right="4mm">
<xsl:variable name="additionalNotes">
<xsl:call-template name="insertCoverPageAdditionalNotes"/>
</xsl:variable>
<xsl:if test="normalize-space($additionalNotes) != '' or $stage-abbreviation = 'PRF'">
<xsl:attribute name="display-align">center</xsl:attribute>
<fo:block>
<xsl:copy-of select="$additionalNotes"/>
</fo:block>
</xsl:if>
<xsl:if test="$stage-abbreviation = 'PRF'">
<fo:block font-size="28pt" font-weight="bold">
<xsl:call-template name="add-letter-spacing">
<xsl:with-param name="text" select="$proof-text"/>
<xsl:with-param name="letter-spacing" select="0.65"/>
</xsl:call-template>
</fo:block>
</xsl:if>
<fo:block>
<xsl:variable name="feedback_link" select="normalize-space(/iso:iso-standard/iso:metanorma-extension/iso:semantic-metadata/iso:feedback-link)"/>
<xsl:if test="$stage >=60 and $feedback_link != ''">
<fo:block-container width="69mm" background-color="rgb(242,242,242)" display-align="before">
<fo:table table-layout="fixed" width="100%" role="SKIP">
<fo:table-column column-width="proportional-column-width(26)"/>
<fo:table-column column-width="proportional-column-width(43.5)"/>
<fo:table-body>
<fo:table-row>
<fo:table-cell text-align="right" padding-top="3mm">
<fo:block>
<fo:instream-foreign-object fox:alt-text="QRcode">
<!-- Todo: link generation -->
<barcode:barcode message="{$feedback_link}">
<barcode:qr>
<barcode:module-width>0.7mm</barcode:module-width>
<barcode:ec-level>M</barcode:ec-level>
</barcode:qr>
</barcode:barcode>
</fo:instream-foreign-object>
</fo:block>
</fo:table-cell>
<fo:table-cell padding="4mm">
<fo:block color="black" font-size="7.5pt" line-height="1.35">
<xsl:text>Please share your feedback about the standard. Scan the QR code with your phone or click the link</xsl:text>
<fo:block margin-top="2pt">
<fo:basic-link external-destination="{$feedback_link}" fox:alt-text="{$feedback_link}">
<xsl:call-template name="add-zero-spaces-link-java">
<xsl:with-param name="text" select="$feedback_link"/>
</xsl:call-template>
</fo:basic-link>
</fo:block>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:block-container>
</xsl:if>
</fo:block>
</fo:table-cell>
<fo:table-cell number-columns-spanned="2" padding-left="6mm" display-align="after">
<fo:block font-size="6.5pt" margin-right="15mm">
<xsl:call-template name="insertDraftComments"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row height="13mm">
<fo:table-cell number-columns-spanned="2" border-right="{$cover_page_border}" display-align="after" padding-bottom="-1mm" line-height="1.1">>
<fo:block font-size="10pt">
<xsl:value-of select="$i18n_reference_number"/>
</fo:block>
<fo:block font-size="10pt">
<xsl:value-of select="$ISOnumber"/>
</fo:block>
</fo:table-cell>
<fo:table-cell number-columns-spanned="2" padding-left="6mm" display-align="after" padding-bottom="-1mm">
<fo:block font-size="10pt" line-height="1.1">
<xsl:value-of select="concat('© ', $copyrightAbbr, ' ', $copyrightYear)"/>
<xsl:if test="$copyrightAbbrIEEE != ''">
<xsl:value-of select="$linebreak"/>
<xsl:value-of select="concat('© ', $copyrightAbbrIEEE, ' ', $copyrightYear)"/>
</xsl:if>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:flow>
</fo:page-sequence>
</xsl:when> <!-- END: $layoutVersion = '2024' -->
<xsl:when test="$stage-abbreviation != ''">
<fo:page-sequence master-reference="cover-page-publishedISO" force-page-count="no-force">
<fo:static-content flow-name="cover-page-footer" font-size="10pt">
<xsl:if test="$layoutVersion = '1989'">
<xsl:attribute name="font-size">9pt</xsl:attribute>
</xsl:if>
<fo:table table-layout="fixed" width="100%" role="SKIP">
<fo:table-column column-width="52mm"/>
<fo:table-column column-width="7.5mm"/>
<fo:table-column column-width="112.5mm"/>
<fo:table-body role="SKIP">
<fo:table-row role="SKIP">
<fo:table-cell font-size="6.5pt" text-align="justify" display-align="after" padding-bottom="8mm" role="SKIP">
<xsl:if test="$stage-abbreviation = 'DAMD' or $stage-abbreviation = 'DAM'">
<xsl:attribute name="font-size">7pt</xsl:attribute>
</xsl:if>
<!-- margin-top="-30mm" -->
<fo:block> <!-- margin-top="-100mm" -->
<xsl:call-template name="insertDraftComments"/>
</fo:block>
</fo:table-cell>
<fo:table-cell role="SKIP">
<fo:block role="SKIP"><fo:wrapper role="artifact"> </fo:wrapper></fo:block>
</fo:table-cell>
<fo:table-cell display-align="after" padding-bottom="3mm" role="SKIP">
<fo:block-container height="22.5mm" display-align="center" role="SKIP">
<xsl:variable name="iso-fast-track" select="normalize-space(/iso:iso-standard/iso:bibdata/iso:ext/iso:fast-track)"/>
<xsl:if test="normalize-space($iso-fast-track) = 'true'">
<xsl:attribute name="height">28mm</xsl:attribute>
</xsl:if>
<fo:block>
<xsl:call-template name="insertCoverPageAdditionalNotes"/>
</fo:block>
</fo:block-container>
<fo:block role="SKIP">
<xsl:call-template name="insertTripleLine"/>
<fo:table table-layout="fixed" width="100%" role="SKIP"> <!-- margin-bottom="3mm" -->
<fo:table-column column-width="50%"/>
<fo:table-column column-width="50%"/>
<fo:table-body role="SKIP">
<fo:table-row height="34mm" role="SKIP">
<fo:table-cell display-align="center" role="SKIP">
<xsl:if test="$copyrightAbbrIEEE != ''">
<xsl:attribute name="display-align">before</xsl:attribute>
</xsl:if>
<fo:block text-align="left" margin-top="2mm">
<xsl:if test="$copyrightAbbrIEEE != ''">
<xsl:attribute name="margin-top">0</xsl:attribute>
</xsl:if>
<!-- <xsl:variable name="docid" select="substring-before(/iso:iso-standard/iso:bibdata/iso:docidentifier, ' ')"/>
<xsl:for-each select="xalan:tokenize($docid, '/')"> -->
<xsl:variable name="content-height">
<xsl:choose>
<xsl:when test="$copyrightAbbrIEEE != ''">13.9</xsl:when>
<xsl:otherwise>19</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:for-each select="/iso:iso-standard/iso:bibdata/iso:copyright/iso:owner/iso:organization">
<xsl:choose>
<xsl:when test="iso:abbreviation = 'ISO'">
<xsl:choose>
<xsl:when test="$layoutVersion = '1989' and $revision_date_num < 19930101">
<fo:external-graphic src="{concat('data:image/png;base64,', normalize-space($Image-ISO-Logo-1987))}" content-height="{$content-height}mm" content-width="scale-to-fit" scaling="uniform" fox:alt-text="Image ISO Logo"/>
</xsl:when>
<xsl:otherwise>
<fo:external-graphic src="{concat('data:image/png;base64,', normalize-space($Image-ISO-Logo))}" content-height="{$content-height}mm" content-width="scale-to-fit" scaling="uniform" fox:alt-text="Image ISO Logo"/>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="iso:abbreviation = 'IEC'">
<xsl:choose>
<xsl:when test="$layoutVersion = '1989' and $revision_date_num < 19930101">
<fo:external-graphic src="{concat('data:image/png;base64,', normalize-space($Image-IEC-Logo-1989))}" content-height="{$content-height}mm" content-width="scale-to-fit" scaling="uniform" fox:alt-text="Image IEC Logo"/>
</xsl:when>
<xsl:otherwise>
<fo:external-graphic src="{concat('data:image/png;base64,', normalize-space($Image-IEC-Logo))}" content-height="{$content-height}mm" content-width="scale-to-fit" scaling="uniform" fox:alt-text="Image IEC Logo"/>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="iso:abbreviation = 'IEEE'"/>
<xsl:when test="iso:abbreviation = 'IDF' or iso:name = 'IDF'">
<fo:external-graphic src="{concat('data:image/png;base64,', normalize-space($Image-IDF-Logo))}" content-height="{$content-height}mm" content-width="scale-to-fit" scaling="uniform" fox:alt-text="Image IDF Logo"/>
</xsl:when>
<xsl:otherwise/>
</xsl:choose>
<xsl:if test="position() != last()">
<fo:inline padding-right="1mm" role="SKIP"> </fo:inline>
</xsl:if>
</xsl:for-each>
<xsl:if test="$copyrightAbbrIEEE != ''">
<fo:block>
<fo:external-graphic src="{concat('data:image/png;base64,', normalize-space($Image-IEEE-Logo))}" content-height="11mm" content-width="scale-to-fit" scaling="uniform" fox:alt-text="Image {@alt}"/>
</fo:block>
</xsl:if>
</fo:block>
</fo:table-cell>
<fo:table-cell display-align="center" role="SKIP">
<fo:block text-align="right" role="SKIP">
<!-- Reference number -->
<fo:block>
<xsl:value-of select="$i18n_reference_number"/>
</fo:block>
<fo:block>
<xsl:value-of select="$ISOnumber"/>
</fo:block>
<fo:block space-before="28pt">
<xsl:if test="$copyrightAbbrIEEE != ''">
<xsl:attribute name="space-before">14pt</xsl:attribute>
</xsl:if>
<fo:inline font-size="9pt">©</fo:inline><xsl:value-of select="concat(' ', $copyrightAbbr, ' ', $copyrightYear)"/>
<xsl:if test="$copyrightAbbrIEEE != ''">
<xsl:value-of select="$linebreak"/>
<fo:inline font-size="9pt">©</fo:inline>
<xsl:value-of select="concat(' ', $copyrightAbbrIEEE, ' ', $copyrightYear)"/>
</xsl:if>
</fo:block>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:static-content>
<xsl:choose>
<!-- COVER PAGE for DIS document only -->
<xsl:when test="$stage-abbreviation = 'DIS' or $stage-abbreviation = 'DAMD' or $stage-abbreviation = 'DAM' or $stagename_abbreviation = 'DIS'">
<fo:flow flow-name="xsl-region-body">
<fo:block-container role="SKIP">
<fo:block margin-top="-1mm" font-size="20pt" text-align="right">
<xsl:value-of select="$stage-fullname-uppercased"/>
</fo:block>
<fo:block font-size="20pt" font-weight="bold" text-align="right">
<xsl:value-of select="$docidentifierISO"/>
</fo:block>
<fo:table table-layout="fixed" width="100%" margin-top="18mm">
<fo:table-column column-width="59.5mm"/>
<fo:table-column column-width="52mm"/>
<fo:table-column column-width="59mm"/>
<fo:table-body>
<fo:table-row>
<fo:table-cell>
<fo:block> </fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block margin-bottom="3mm">
<xsl:copy-of select="$editorialgroup"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block margin-bottom="3mm">
<xsl:copy-of select="$secretariat"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell>
<fo:block> </fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<!-- Voting begins on: -->
<xsl:value-of select="concat($i18n_voting_begins_on, ':')"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<!-- Voting terminates on: -->
<xsl:value-of select="concat($i18n_voting_terminates_on, ':')"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell>
<fo:block> </fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block font-weight="bold">
<xsl:call-template name="insertVoteStarted"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block font-weight="bold">
<xsl:call-template name="insertVoteEnded"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
<fo:block-container line-height="1.1" margin-top="3mm" role="SKIP">
<xsl:call-template name="insertTripleLine"/>
<fo:block margin-right="5mm" role="SKIP">
<fo:block font-size="18pt" font-weight="bold" margin-top="6pt" role="H1">
<xsl:if test="$layoutVersion = '1989'">
<xsl:attribute name="font-size">16pt</xsl:attribute>
</xsl:if>
<xsl:call-template name="insertTitlesLangMain"/>
</fo:block>
<xsl:for-each select="xalan:nodeset($lang_other)/lang">
<xsl:variable name="lang_other" select="."/>
<fo:block font-size="12pt" role="SKIP"><xsl:value-of select="$linebreak"/></fo:block>
<fo:block font-size="11pt" font-style="italic" line-height="1.1" role="H1">
<xsl:if test="$layoutVersion = '1989'">
<xsl:attribute name="font-size">10pt</xsl:attribute>
</xsl:if>
<!-- Example: title-intro fr -->
<xsl:call-template name="insertTitlesLangOther">
<xsl:with-param name="lang_other" select="$lang_other"/>
</xsl:call-template>
</fo:block>
</xsl:for-each>
</fo:block>
<fo:block margin-top="10mm">
<xsl:copy-of select="$ics"/>
</fo:block>
</fo:block-container>
</fo:block-container>
</fo:flow>
</xsl:when> <!-- END: $stage-abbreviation = 'DIS' 'DAMD' 'DAM'-->
<xsl:otherwise>
<!-- COVER PAGE for all documents except DIS, DAMD and DAM -->
<fo:flow flow-name="xsl-region-body">
<fo:block-container role="SKIP">
<fo:table table-layout="fixed" width="100%" font-size="24pt" line-height="1" role="SKIP"> <!-- margin-bottom="35mm" -->
<xsl:if test="$layoutVersion = '1989'">
<xsl:attribute name="line-height">1.14</xsl:attribute>
</xsl:if>
<xsl:if test="$layoutVersion = '1989'">
<xsl:attribute name="font-size">22pt</xsl:attribute>
</xsl:if>
<fo:table-column column-width="59.5mm"/>
<fo:table-column column-width="67.5mm"/>
<fo:table-column column-width="45.5mm"/>
<fo:table-body role="SKIP">
<fo:table-row role="SKIP">
<fo:table-cell role="SKIP">
<fo:block font-size="18pt">
<xsl:value-of select="translate($stagename-header-coverpage, ' ', $linebreak)"/>
<!-- if there is iteration number, then print it -->
<xsl:variable name="iteration" select="number(/iso:iso-standard/iso:bibdata/iso:status/iso:iteration)"/>
<xsl:if test="number($iteration) = $iteration and ($stage-abbreviation = 'NWIP' or $stage-abbreviation = 'NP' or $stage-abbreviation = 'PWI' or $stage-abbreviation = 'AWI' or $stage-abbreviation = 'WD' or $stage-abbreviation = 'CD')">
<xsl:text> </xsl:text><xsl:value-of select="$iteration"/>
</xsl:if>
<!-- <xsl:if test="$stage-name = 'draft'">DRAFT</xsl:if>
<xsl:if test="$stage-name = 'final-draft'">FINAL<xsl:value-of select="$linebreak"/>DRAFT</xsl:if> -->
</fo:block>
</fo:table-cell>
<xsl:variable name="lastWord">
<xsl:call-template name="substring-after-last">
<xsl:with-param name="value" select="$doctype_uppercased"/>
<xsl:with-param name="delimiter" select="' '"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="font-size"><xsl:if test="string-length($lastWord) >= 12">90%</xsl:if></xsl:variable> <!-- to prevent overlapping 'NORME INTERNATIONALE' to number -->
<fo:table-cell role="SKIP">
<fo:block text-align="left">
<xsl:choose>
<xsl:when test="$stage-abbreviation = 'FDAMD' or $stage-abbreviation = 'FDAM'"><xsl:value-of select="$doctype_uppercased"/></xsl:when>
<xsl:when test="$doctype = 'amendment'">
<xsl:value-of select="java:toUpperCase(java:java.lang.String.new(translate(/iso:iso-standard/iso:bibdata/iso:ext/iso:updates-document-type,'-',' ')))"/>
</xsl:when>
<xsl:otherwise>
<xsl:if test="$font-size != ''">
<xsl:attribute name="font-size"><xsl:value-of select="$font-size"/></xsl:attribute>
</xsl:if>
<xsl:choose>
<xsl:when test="$doctype = 'addendum'">
<xsl:variable name="doctype_international_standard">
<xsl:call-template name="getLocalizedString"><xsl:with-param name="key">doctype_dict.international-standard</xsl:with-param></xsl:call-template>
</xsl:variable>
<xsl:value-of select="java:toUpperCase(java:java.lang.String.new($doctype_international_standard))"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$doctype_uppercased"/>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</fo:block>
</fo:table-cell>
<fo:table-cell role="SKIP">
<fo:block text-align="right" font-weight="bold" margin-bottom="13mm">
<xsl:if test="$font-size != ''">
<xsl:attribute name="font-size"><xsl:value-of select="$font-size"/></xsl:attribute>
</xsl:if>
<xsl:choose>
<xsl:when test="$doctype = 'addendum'">
<xsl:value-of select="substring-before($docidentifierISO_with_break, ':')"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$docidentifierISO_with_break"/>
<xsl:copy-of select="$docidentifier_another"/>
</xsl:otherwise>
</xsl:choose>
</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row height="25mm" role="SKIP">
<fo:table-cell number-columns-spanned="3" font-size="10pt" line-height="1.2" role="SKIP">
<xsl:if test="$layoutVersion = '1989'">
<xsl:attribute name="font-size">9pt</xsl:attribute>
</xsl:if>
<fo:block text-align="right">
<xsl:call-template name="insertEditionAndDate"/>
</fo:block>
<!-- <xsl:value-of select="$linebreak"/>
<xsl:value-of select="/iso:iso-standard/iso:bibdata/iso:version/iso:revision-date"/> -->
<xsl:if test="$doctype = 'addendum'">
<fo:block text-align="right" margin-right="0.5mm" role="SKIP">
<fo:block font-weight="bold" margin-top="16pt">
<xsl:value-of select="$doctype_uppercased"/>
<xsl:text> </xsl:text>
<xsl:variable name="addendum-number" select="/iso:iso-standard/iso:bibdata/iso:ext/iso:structuredidentifier/iso:project-number/@addendum"/>
<xsl:if test="normalize-space($addendum-number) != ''">
<xsl:value-of select="$addendum-number"/><xsl:text> </xsl:text>
</xsl:if>
</fo:block>
<fo:block>
<xsl:if test="/iso:iso-standard/iso:bibdata/iso:date[@type = 'updated']">
<xsl:value-of select="/iso:iso-standard/iso:bibdata/iso:date[@type = 'updated']"/>
</xsl:if>
</fo:block>
</fo:block>
</xsl:if>
<xsl:if test="$doctype = 'amendment' and not($stage-abbreviation = 'FDAMD' or $stage-abbreviation = 'FDAM')">
<fo:block text-align="right" margin-right="0.5mm" role="SKIP">
<fo:block font-weight="bold" margin-top="4pt" role="H1">
<xsl:value-of select="$doctype_uppercased"/>
<xsl:text> </xsl:text>
<xsl:variable name="amendment-number" select="/iso:iso-standard/iso:bibdata/iso:ext/iso:structuredidentifier/iso:project-number/@amendment"/>
<xsl:if test="normalize-space($amendment-number) != ''">
<xsl:value-of select="$amendment-number"/><xsl:text> </xsl:text>
</xsl:if>
</fo:block>
<fo:block>
<xsl:if test="/iso:iso-standard/iso:bibdata/iso:date[@type = 'updated']">
<xsl:value-of select="/iso:iso-standard/iso:bibdata/iso:date[@type = 'updated']"/>
</xsl:if>
</fo:block>
</fo:block>
</xsl:if>
<xsl:variable name="date_corrected" select="normalize-space(/iso:iso-standard/iso:bibdata/iso:date[@type = 'corrected'])"/>
<xsl:if test="$date_corrected != ''">
<fo:block text-align="right" font-size="9.5pt">
<xsl:value-of select="$linebreak"/>
<xsl:value-of select="$linebreak"/>
<xsl:value-of select="$i18n_corrected_version"/>
<xsl:value-of select="$linebreak"/>
<xsl:value-of select="$date_corrected"/>
</fo:block>
</xsl:if>
</fo:table-cell>
</fo:table-row>
<fo:table-row height="17mm" role="SKIP">
<fo:table-cell role="SKIP"><fo:block role="SKIP"/></fo:table-cell>
<fo:table-cell number-columns-spanned="2" font-size="10pt" line-height="1.2" display-align="center" role="SKIP">
<fo:block role="SKIP">
<xsl:if test="$stage-abbreviation = 'NWIP' or $stage-abbreviation = 'NP' or $stage-abbreviation = 'PWI' or $stage-abbreviation = 'AWI' or $stage-abbreviation = 'WD' or $stage-abbreviation = 'CD'">
<fo:table table-layout="fixed" width="100%" role="SKIP">
<fo:table-column column-width="50%"/>
<fo:table-column column-width="50%"/>
<fo:table-body role="SKIP">
<fo:table-row role="SKIP">
<fo:table-cell role="SKIP">
<fo:block>
<xsl:copy-of select="$editorialgroup"/>
</fo:block>
</fo:table-cell>
<fo:table-cell role="SKIP">
<fo:block>
<xsl:copy-of select="$secretariat"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</xsl:if>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
<fo:table table-layout="fixed" width="100%" role="SKIP">
<fo:table-column column-width="52mm"/>
<fo:table-column column-width="7.5mm"/>
<fo:table-column column-width="112.5mm"/>
<fo:table-body role="SKIP">
<fo:table-row role="SKIP"> <!-- border="1pt solid black" height="150mm" -->
<fo:table-cell font-size="11pt" role="SKIP">
<fo:block role="SKIP">
<xsl:if test="$stage-abbreviation = 'FDIS' or $stage-abbreviation = 'FDAMD' or $stage-abbreviation = 'FDAM' or $stagename_abbreviation = 'FDIS'">
<fo:block-container border="0.5mm solid black" width="51mm" role="SKIP">
<fo:block margin="2mm" role="SKIP">
<fo:block margin-bottom="8pt"><xsl:copy-of select="$editorialgroup"/></fo:block>
<fo:block margin-bottom="6pt"><xsl:copy-of select="$secretariat"/></fo:block>
<fo:block margin-bottom="6pt">
<!-- Voting begins on: -->
<xsl:value-of select="concat($i18n_voting_begins_on, ':')"/>
<xsl:value-of select="$linebreak"/>
<fo:inline font-weight="bold">
<xsl:call-template name="insertVoteStarted"/>
</fo:inline>
</fo:block>
<fo:block>
<!-- Voting terminates on: -->
<xsl:value-of select="concat($i18n_voting_terminates_on, ':')"/>
<xsl:value-of select="$linebreak"/>
<fo:inline font-weight="bold">
<xsl:call-template name="insertVoteEnded"/>
</fo:inline>
</fo:block>
</fo:block>
</fo:block-container>
</xsl:if>
</fo:block>
</fo:table-cell>
<fo:table-cell role="SKIP">
<fo:block role="SKIP"><fo:wrapper role="artifact"> </fo:wrapper></fo:block>
</fo:table-cell>
<fo:table-cell role="SKIP">
<xsl:call-template name="insertTripleLine"/>
<fo:block-container line-height="1.1" role="SKIP">
<fo:block margin-right="3.5mm" role="SKIP">
<xsl:variable name="font_size">
<xsl:choose>
<xsl:when test="$layoutVersion = '1989'">16pt</xsl:when>
<xsl:otherwise>18pt</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<fo:block font-size="{$font_size}" font-weight="bold" margin-top="12pt" role="H1">
<xsl:call-template name="insertTitlesLangMain"/>
</fo:block>
<xsl:choose>
<xsl:when test="$doctype = 'addendum'">
<fo:block font-size="{$font_size}" margin-top="6pt" role="H2">
<xsl:value-of select="$doctype_uppercased"/>
<xsl:text> </xsl:text>
<xsl:value-of select="/iso:iso-standard/iso:bibdata/iso:ext/iso:structuredidentifier/iso:project-number/@addendum"/>
<xsl:text>:</xsl:text>
</fo:block>
<fo:block font-size="{$font_size}" font-weight="bold" margin-top="6pt" role="H2">
<xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-add']/node()"/>
</fo:block>
</xsl:when>
<xsl:otherwise>
<xsl:if test="not($stage-abbreviation = 'FDAMD' or $stage-abbreviation = 'FDAM')">
<xsl:for-each select="xalan:nodeset($lang_other)/lang">
<xsl:variable name="lang_other" select="."/>
<fo:block font-size="12pt" role="SKIP"><xsl:value-of select="$linebreak"/></fo:block>
<fo:block font-size="11pt" font-style="italic" line-height="1.1" role="H1">
<xsl:if test="$layoutVersion = '1989'">
<xsl:attribute name="font-size">10pt</xsl:attribute>
</xsl:if>
<!-- Example: title-intro fr -->
<xsl:call-template name="insertTitlesLangOther">
<xsl:with-param name="lang_other" select="$lang_other"/>
</xsl:call-template>
</fo:block>
</xsl:for-each>
</xsl:if>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="$stage-abbreviation = 'NWIP' or $stage-abbreviation = 'NP' or $stage-abbreviation = 'PWI' or $stage-abbreviation = 'AWI' or $stage-abbreviation = 'WD' or $stage-abbreviation = 'CD' or $stage-abbreviation = 'FDIS' or $stagename_abbreviation = 'FDIS'">
<fo:block margin-top="10mm">
<xsl:copy-of select="$ics"/>
</fo:block>
</xsl:if>
</fo:block>
</fo:block-container>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:block-container>
<fo:block-container position="absolute" left="60mm" top="222mm" height="25mm" display-align="after" role="SKIP">
<fo:block margin-bottom="2mm" role="SKIP">
<xsl:if test="$stage-abbreviation = 'PRF'">
<fo:block font-size="36pt" font-weight="bold" margin-left="1mm">
<xsl:call-template name="add-letter-spacing">
<xsl:with-param name="text" select="$proof-text"/>
<xsl:with-param name="letter-spacing" select="0.65"/>
</xsl:call-template>
</fo:block>
</xsl:if>
</fo:block>
</fo:block-container>
</fo:flow>
</xsl:otherwise>
</xsl:choose>
</fo:page-sequence>
</xsl:when> <!-- $stage-abbreviation != '' -->
<xsl:when test="$isPublished = 'true'">
<fo:page-sequence master-reference="cover-page-published" force-page-count="no-force">
<fo:static-content flow-name="cover-page-footer" font-size="10pt">
<xsl:call-template name="insertTripleLine"/>
<fo:table table-layout="fixed" width="100%" margin-bottom="3mm" role="SKIP">
<fo:table-column column-width="50%"/>
<fo:table-column column-width="50%"/>
<fo:table-body role="SKIP">
<fo:table-row height="32mm" role="SKIP">
<fo:table-cell display-align="center" role="SKIP">
<fo:block text-align="left">
<fo:external-graphic src="{concat('data:image/png;base64,', normalize-space($Image-ISO-Logo))}" width="21mm" content-height="21mm" content-width="scale-to-fit" scaling="uniform" fox:alt-text="Image {@alt}"/>
</fo:block>
</fo:table-cell>
<fo:table-cell display-align="center" role="SKIP">
<fo:block text-align="right" role="SKIP">
<fo:block>
<xsl:value-of select="$i18n_reference_number"/>
</fo:block>
<fo:block><xsl:value-of select="$ISOnumber"/></fo:block>
<fo:block role="SKIP"> </fo:block>
<fo:block role="SKIP"> </fo:block>
<fo:block><fo:inline font-size="9pt">©</fo:inline><xsl:value-of select="concat(' ', $copyrightAbbr, ' ', $copyrightYear)"/>
<xsl:if test="$copyrightAbbrIEEE != ''">
<xsl:value-of select="$linebreak"/>
<fo:inline font-size="9pt">©</fo:inline>
<xsl:value-of select="concat(' ', $copyrightAbbrIEEE, ' ', $copyrightYear)"/>
</xsl:if>
</fo:block>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:static-content>
<fo:flow flow-name="xsl-region-body">
<fo:block-container role="SKIP">
<fo:table table-layout="fixed" width="100%" font-size="24pt" line-height="1" margin-bottom="35mm" role="SKIP">
<xsl:if test="$layoutVersion = '1989'">
<xsl:attribute name="font-size">22pt</xsl:attribute>
</xsl:if>
<fo:table-column column-width="60%"/>
<fo:table-column column-width="40%"/>
<fo:table-body role="SKIP">
<fo:table-row role="SKIP">
<fo:table-cell role="SKIP">
<fo:block text-align="left">
<xsl:value-of select="$doctype_uppercased"/>
</fo:block>
</fo:table-cell>
<fo:table-cell role="SKIP">
<fo:block text-align="right" font-weight="bold" margin-bottom="13mm">
<xsl:value-of select="$docidentifierISO_with_break"/>
<xsl:copy-of select="$docidentifier_another"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row role="SKIP">
<fo:table-cell number-columns-spanned="2" font-size="10pt" line-height="1.2" role="SKIP">
<fo:block text-align="right">
<xsl:call-template name="printEdition"/>
<xsl:value-of select="$linebreak"/>
<xsl:value-of select="/iso:iso-standard/iso:bibdata/iso:version/iso:revision-date"/></fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
<xsl:call-template name="insertTripleLine"/>
<fo:block-container line-height="1.1" role="SKIP">
<fo:block margin-right="40mm" role="SKIP">
<fo:block font-size="18pt" font-weight="bold" margin-top="12pt" role="H1">
<xsl:if test="$layoutVersion = '1989'">
<xsl:attribute name="font-size">16pt</xsl:attribute>
</xsl:if>
<xsl:call-template name="insertTitlesLangMain"/>
</fo:block>
<xsl:for-each select="xalan:nodeset($lang_other)/lang">
<xsl:variable name="lang_other" select="."/>
<fo:block font-size="12pt" role="SKIP"><xsl:value-of select="$linebreak"/></fo:block>
<fo:block font-size="11pt" font-style="italic" line-height="1.1" role="H1">
<xsl:if test="$layoutVersion = '1989'">
<xsl:attribute name="font-size">10pt</xsl:attribute>
</xsl:if>
<!-- Example: title-intro fr -->
<xsl:call-template name="insertTitlesLangOther">
<xsl:with-param name="lang_other" select="$lang_other"/>
</xsl:call-template>
</fo:block>
</xsl:for-each>
</fo:block>
</fo:block-container>
</fo:block-container>
</fo:flow>
</fo:page-sequence>
</xsl:when> <!-- $isPublished = 'true' -->
<xsl:otherwise>
<fo:page-sequence master-reference="cover-page" force-page-count="no-force">
<fo:static-content flow-name="cover-page-header" font-size="10pt">
<fo:block-container height="24mm" display-align="before">
<fo:block padding-top="12.5mm">
<xsl:value-of select="$copyrightText"/>
</fo:block>
</fo:block-container>
</fo:static-content>
<fo:flow flow-name="xsl-region-body">
<fo:block-container text-align="right" role="SKIP">
<xsl:choose>
<xsl:when test="/iso:iso-standard/iso:bibdata/iso:docidentifier[@type = 'iso-tc']">
<!-- 17301 -->
<fo:block font-size="14pt" font-weight="bold" margin-bottom="12pt">
<xsl:value-of select="/iso:iso-standard/iso:bibdata/iso:docidentifier[@type = 'iso-tc']"/>
</fo:block>
<!-- Date: 2016-05-01 -->
<fo:block margin-bottom="12pt">
<xsl:text>Date: </xsl:text><xsl:value-of select="/iso:iso-standard/iso:bibdata/iso:version/iso:revision-date"/>
</fo:block>
<!-- ISO/CD 17301-1(E) -->
<fo:block margin-bottom="12pt">
<xsl:value-of select="concat(/iso:iso-standard/iso:bibdata/iso:docidentifier, $lang-1st-letter)"/>
</fo:block>
</xsl:when>
<xsl:otherwise>
<fo:block font-size="14pt" font-weight="bold" margin-bottom="12pt">
<!-- ISO/WD 24229(E) -->
<xsl:value-of select="concat(/iso:iso-standard/iso:bibdata/iso:docidentifier, $lang-1st-letter)"/>
</fo:block>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="normalize-space($editorialgroup) != ''">
<!-- ISO/TC 34/SC 4/WG 3 -->
<fo:block margin-bottom="12pt">
<xsl:copy-of select="$editorialgroup"/>
</fo:block>
</xsl:if>
<!-- Secretariat: AFNOR -->
<fo:block margin-bottom="100pt">
<xsl:value-of select="$secretariat"/>
<xsl:text> </xsl:text>
</fo:block>
</fo:block-container>
<fo:block-container font-size="16pt" role="SKIP">
<!-- Information and documentation — Codes for transcription systems -->
<fo:block font-weight="bold" role="H1">
<xsl:call-template name="insertTitlesLangMain"/>
</fo:block>
<xsl:for-each select="xalan:nodeset($lang_other)/lang">
<xsl:variable name="lang_other" select="."/>
<fo:block font-size="12pt" role="SKIP"><xsl:value-of select="$linebreak"/></fo:block>
<fo:block role="H1">
<!-- Example: title-intro fr -->
<xsl:call-template name="insertTitlesLangOther">
<xsl:with-param name="lang_other" select="$lang_other"/>
</xsl:call-template>
</fo:block>
</xsl:for-each>
</fo:block-container>
<fo:block font-size="11pt" margin-bottom="8pt" role="SKIP"><xsl:value-of select="$linebreak"/></fo:block>
<fo:block-container font-size="40pt" text-align="center" margin-bottom="12pt" border="0.5pt solid black" role="SKIP">
<xsl:variable name="stage-title" select="substring-after(substring-before($docidentifierISO, ' '), '/')"/>
<xsl:choose>
<xsl:when test="normalize-space($stage-title) != ''">
<fo:block padding-top="2mm"><xsl:value-of select="$stage-title"/><xsl:text> stage</xsl:text></fo:block>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="border">0pt solid white</xsl:attribute>
<fo:block role="SKIP"> </fo:block>
</xsl:otherwise>
</xsl:choose>
</fo:block-container>
<fo:block role="SKIP"><xsl:value-of select="$linebreak"/></fo:block>
<xsl:if test="/iso:iso-standard/iso:boilerplate/iso:license-statement">
<fo:block-container font-size="10pt" margin-top="12pt" margin-bottom="6pt" border="0.5pt solid black" role="SKIP">
<fo:block padding-top="1mm">
<xsl:apply-templates select="/iso:iso-standard/iso:boilerplate/iso:license-statement"/>
</fo:block>
</fo:block-container>
</xsl:if>
</fo:flow>
</fo:page-sequence>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:apply-templates select="xalan:nodeset($fo_cover_page)" mode="set_table_role_skip"/>
</xsl:if> <!-- $isGenerateTableIF = 'false' -->
</xsl:template> <!-- END insertCoverPage -->
<xsl:template match="iso:preface/iso:introduction" mode="update_xml_step1" priority="3">
<xsl:param name="process">false</xsl:param>
<xsl:choose>
<xsl:when test="$layoutVersion = '1951'">
<xsl:if test="$process = 'true'">
<xsl:copy>
<xsl:apply-templates select="@*" mode="update_xml_step1"/>
<xsl:attribute name="displayorder">
<xsl:value-of select="concat(../../iso:sections/iso:p[@class = 'zzSTDTitle1']/@displayorder, '.1')"/>
</xsl:attribute>
<xsl:apply-templates select="node()" mode="update_xml_step1"/>
</xsl:copy>
</xsl:if>
</xsl:when>
<xsl:otherwise>
<xsl:copy>
<xsl:apply-templates select="@*|node()" mode="update_xml_step1"/>
</xsl:copy>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="iso:sections/iso:p[@class = 'zzSTDTitle1']" mode="update_xml_step1" priority="3">
<xsl:copy>
<xsl:apply-templates select="@*|node()" mode="update_xml_step1"/>
</xsl:copy>
<xsl:if test="$layoutVersion = '1951'">
<xsl:apply-templates select="../../iso:preface/iso:introduction" mode="update_xml_step1">
<xsl:with-param name="process">true</xsl:with-param>
</xsl:apply-templates>
</xsl:if>
</xsl:template>
<!-- transform NOTE to Note for smallcaps feature working -->
<xsl:template match="iso:note/iso:name/text() | iso:example/iso:name/text()" mode="update_xml_step1" priority="3">
<xsl:choose>
<xsl:when test="$layoutVersion = '1951'"> <!-- and $revision_date_num < 19680101 -->
<xsl:value-of select="substring(., 1, 1)"/>
<xsl:value-of select="java:toLowerCase(java:java.lang.String.new(substring(., 2)))"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="insertLogoImages2024">
<xsl:variable name="content-height">20</xsl:variable>
<xsl:for-each select="/iso:iso-standard/iso:bibdata/iso:copyright/iso:owner/iso:organization">
<xsl:choose>
<xsl:when test="iso:abbreviation = 'ISO'">
<fo:instream-foreign-object content-height="{$content-height}mm" fox:alt-text="Image ISO Logo">
<xsl:copy-of select="$Image-ISO-Logo-SVG"/>
</fo:instream-foreign-object>
</xsl:when>
<xsl:when test="iso:abbreviation = 'IEC'">
<fo:instream-foreign-object content-height="{$content-height}mm" fox:alt-text="Image IEC Logo">
<xsl:copy-of select="$Image-IEC-Logo-SVG"/>
</fo:instream-foreign-object>
</xsl:when>
<xsl:when test="iso:abbreviation = 'IEEE'"/>
<xsl:when test="iso:abbreviation = 'IDF' or iso:name = 'IDF'">
<fo:external-graphic src="{concat('data:image/png;base64,', normalize-space($Image-IDF-Logo))}" content-height="{$content-height}mm" content-width="scale-to-fit" scaling="uniform" fox:alt-text="Image IDF Logo"/>
</xsl:when>
<xsl:otherwise/>
</xsl:choose>
<xsl:if test="position() != last()">
<fo:inline padding-right="1mm" role="SKIP"> </fo:inline>
</xsl:if>
</xsl:for-each>
<xsl:if test="$copyrightAbbrIEEE != ''">
<fo:block margin-top="2mm">
<fo:external-graphic src="{concat('data:image/png;base64,', normalize-space($Image-IEEE-Logo2))}" content-width="{$content-height * 2 + 2}mm" content-height="scale-to-fit" scaling="uniform" fox:alt-text="Image IEEE Logo"/>
</fo:block>
</xsl:if>
</xsl:template>
<xsl:template name="insertTitlesLangMain">
<xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-intro']"/>
<xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-main']"/>
<xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-part']">
<xsl:with-param name="isMainLang">true</xsl:with-param>
</xsl:apply-templates>
<xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-amd']">
<xsl:with-param name="isMainLang">true</xsl:with-param>
</xsl:apply-templates>
</xsl:template>
<xsl:template name="insertTitlesLangOther">
<xsl:param name="lang_other"/>
<xsl:apply-templates select="$XML/iso:iso-standard/iso:bibdata/iso:title[@language = $lang_other and @type = 'title-intro']"/>
<xsl:apply-templates select="$XML/iso:iso-standard/iso:bibdata/iso:title[@language = $lang_other and @type = 'title-main']"/>
<xsl:apply-templates select="$XML/iso:iso-standard/iso:bibdata/iso:title[@language = $lang_other and @type = 'title-part']">
<xsl:with-param name="curr_lang" select="$lang_other"/>
</xsl:apply-templates>
<xsl:apply-templates select="$XML/iso:iso-standard/iso:bibdata/iso:title[@language = $lang_other and @type = 'title-amd']">
<xsl:with-param name="curr_lang" select="$lang_other"/>
</xsl:apply-templates>
</xsl:template>
<!-- for 1951 layout -->
<xsl:template match="iso:edition/text()" priority="3">
<xsl:choose>
<xsl:when test="contains(., ' ')"><xsl:value-of select="substring-before(., ' ')"/><xsl:text> </xsl:text><fo:inline font-weight="bold"><xsl:value-of select="substring-after(., ' ')"/></fo:inline></xsl:when>
<xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="insertEditionAndDate">
<xsl:variable name="edition">
<xsl:if test="$stage-abbreviation = 'PRF' or $stage-abbreviation = 'IS' or $stage-abbreviation = 'D' or $stage-abbreviation = 'published'">
<xsl:call-template name="printEdition"/>
</xsl:if>
</xsl:variable>
<xsl:value-of select="$edition"/>
<xsl:variable name="date">
<xsl:choose>
<xsl:when test="($stage-abbreviation = 'NWIP' or $stage-abbreviation = 'NP' or $stage-abbreviation = 'PWI' or $stage-abbreviation = 'AWI' or $stage-abbreviation = 'WD' or $stage-abbreviation = 'CD' or $stage-abbreviation = 'FDIS' or $stagename_abbreviation = 'FDIS') and /iso:iso-standard/iso:bibdata/iso:version/iso:revision-date">
<xsl:value-of select="/iso:iso-standard/iso:bibdata/iso:version/iso:revision-date"/>
</xsl:when>
<xsl:when test="$stage-abbreviation = 'IS' and /iso:iso-standard/iso:bibdata/iso:date[@type = 'published']">
<xsl:value-of select="/iso:iso-standard/iso:bibdata/iso:date[@type = 'published']"/>
</xsl:when>
<xsl:when test="($stage-abbreviation = 'IS' or $stage-abbreviation = 'D') and /iso:iso-standard/iso:bibdata/iso:date[@type = 'created']">
<xsl:value-of select="/iso:iso-standard/iso:bibdata/iso:date[@type = 'created']"/>
</xsl:when>
<xsl:when test="$stage-abbreviation = 'IS' or $stage-abbreviation = 'published'">
<xsl:value-of select="substring(/iso:iso-standard/iso:bibdata/iso:version/iso:revision-date,1, 7)"/>
</xsl:when>
</xsl:choose>
</xsl:variable>
<xsl:if test="normalize-space($date) != ''">
<xsl:choose>
<xsl:when test="$layoutVersion = '2024'">
<xsl:if test="normalize-space($edition) != ''">
<xsl:value-of select="$linebreak"/>
</xsl:if>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$linebreak"/>
</xsl:otherwise>
</xsl:choose>
<xsl:value-of select="$date"/>
</xsl:if>
</xsl:template>
<xsl:template name="insertDraftComments">
<xsl:if test="$stagename_abbreviation = 'DIS' or $stage-abbreviation = 'DIS' or $stage-abbreviation = 'DAMD' or $stage-abbreviation = 'DAM' or $stage-abbreviation = 'NWIP' or $stage-abbreviation = 'NP' or $stage-abbreviation = 'PWI' or $stage-abbreviation = 'AWI' or $stage-abbreviation = 'WD' or $stage-abbreviation = 'CD'">
<fo:block margin-bottom="1.5mm">
<xsl:text>THIS DOCUMENT IS A DRAFT CIRCULATED FOR COMMENT AND APPROVAL. IT IS THEREFORE SUBJECT TO CHANGE AND MAY NOT BE REFERRED TO AS AN INTERNATIONAL STANDARD UNTIL PUBLISHED AS SUCH.</xsl:text>
</fo:block>
</xsl:if>
<xsl:if test="$stagename_abbreviation = 'DIS' or $stagename_abbreviation = 'FDIS' or $stage-abbreviation = 'FDIS' or $stage-abbreviation = 'DIS' or $stage-abbreviation = 'FDAMD' or $stage-abbreviation = 'FDAM' or $stage-abbreviation = 'DAMD' or $stage-abbreviation = 'DAM' or $stage-abbreviation = 'NWIP' or $stage-abbreviation = 'NP' or $stage-abbreviation = 'PWI' or $stage-abbreviation = 'AWI' or $stage-abbreviation = 'WD' or $stage-abbreviation = 'CD'">
<fo:block margin-bottom="1.5mm">
<xsl:text>RECIPIENTS OF THIS DRAFT ARE INVITED TO
SUBMIT, WITH THEIR COMMENTS, NOTIFICATION
OF ANY RELEVANT PATENT RIGHTS OF WHICH
THEY ARE AWARE AND TO PROVIDE SUPPORTING
DOCUMENTATION.</xsl:text>
</fo:block>
<fo:block>
<xsl:text>IN ADDITION TO THEIR EVALUATION AS
BEING ACCEPTABLE FOR INDUSTRIAL, TECHNOLOGICAL,
COMMERCIAL AND USER PURPOSES,
DRAFT INTERNATIONAL STANDARDS MAY ON
OCCASION HAVE TO BE CONSIDERED IN THE
LIGHT OF THEIR POTENTIAL TO BECOME STANDARDS
TO WHICH REFERENCE MAY BE MADE IN
NATIONAL REGULATIONS.</xsl:text>
</fo:block>
</xsl:if>
</xsl:template>
<xsl:template name="insertVoteStarted">
<xsl:variable name="vote_started" select="normalize-space(/iso:iso-standard/iso:bibdata/iso:date[@type = 'vote-started']/iso:on)"/>
<xsl:choose>
<xsl:when test="$vote_started != ''">
<xsl:value-of select="$vote_started"/>
</xsl:when>
<xsl:otherwise>YYYY-MM-DD</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="insertVoteEnded">
<xsl:variable name="vote_ended" select="normalize-space(/iso:iso-standard/iso:bibdata/iso:date[@type = 'vote-ended']/iso:on)"/>
<xsl:choose>
<xsl:when test="$vote_ended != ''">
<xsl:value-of select="$vote_ended"/>
</xsl:when>
<xsl:otherwise>YYYY-MM-DD</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="insertCoverPageAdditionalNotes">
<xsl:if test="$stage-abbreviation = 'NWIP' or $stage-abbreviation = 'NP' or $stage-abbreviation = 'PWI' or $stage-abbreviation = 'AWI' or $stage-abbreviation = 'WD' or $stage-abbreviation = 'CD' or $stage-abbreviation = 'FCD' or $stage-abbreviation = 'DIS' or $stage-abbreviation = 'FDIS' or $stage-abbreviation = 'DAMD' or $stage-abbreviation = 'DAM' or $stagename_abbreviation = 'DIS' or $stagename_abbreviation = 'FDIS'">
<xsl:variable name="text">
<xsl:for-each select="/iso:iso-standard/iso:preface/iso:note[@coverpage='true']/iso:p">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</xsl:for-each>
</xsl:variable>
<xsl:if test="normalize-space($text) != ''">
<fo:block-container margin-left="1mm" role="SKIP"> <!-- margin-bottom="7mm" margin-top="-15mm" -->
<fo:block font-size="9pt" border="0.5pt solid black" fox:border-radius="5pt" padding-left="2mm" padding-top="2mm" padding-bottom="2mm">
<xsl:if test="$layoutVersion = '2024'">
<!-- <xsl:attribute name="font-size">9pt</xsl:attribute> -->
<xsl:attribute name="fox:border-radius">0pt</xsl:attribute>
<xsl:attribute name="border">1pt solid black</xsl:attribute>
</xsl:if>
<!-- <xsl:text>This document is circulated as received from the committee secretariat.</xsl:text> -->
<xsl:copy-of select="xalan:nodeset($text)/node()"/>
</fo:block>
</fo:block-container>
</xsl:if>
<xsl:variable name="iso-fast-track" select="normalize-space(/iso:iso-standard/iso:bibdata/iso:ext/iso:fast-track)"/>
<xsl:if test="normalize-space($iso-fast-track) = 'true'">
<fo:block-container space-before="2mm" role="SKIP">
<fo:block background-color="rgb(77,77,77)" color="white" fox:border-radius="5pt" text-align="center" display-align="center" font-size="19pt" font-weight="bold" role="SKIP">
<xsl:if test="$layoutVersion = '2024'">
<xsl:attribute name="fox:border-radius">0pt</xsl:attribute>
</xsl:if>
<fo:block-container height="13.2mm" role="SKIP">
<xsl:if test="$layoutVersion = '2024'">
<xsl:attribute name="height">11.2mm</xsl:attribute>
<xsl:attribute name="padding-top">2mm</xsl:attribute>
</xsl:if>
<fo:block>
<!-- <xsl:text>FAST TRACK PROCEDURE</xsl:text> -->
<xsl:value-of select="java:toUpperCase(java:java.lang.String.new($i18n_fast_track_procedure))"/>
</fo:block>
</fo:block-container>
</fo:block>
</fo:block-container>
</xsl:if>
</xsl:if>
</xsl:template>
<xsl:template match="iso:preface//iso:clause[@type = 'toc']" priority="3">
<xsl:choose>
<xsl:when test="$isGenerateTableIF = 'true'"/>
<xsl:when test="$toc_level = 0"/>
<xsl:when test="$doctype = 'amendment'"/><!-- ToC shouldn't be generated in amendments. -->
<xsl:when test="$layoutVersion = '1987' and $doctype = 'technical-report'"/>
<xsl:otherwise>
<fo:block-container font-weight="bold">
<xsl:if test="$layoutVersion = '1987'">
<xsl:attribute name="font-size">9pt</xsl:attribute>
<xsl:attribute name="font-weight">normal</xsl:attribute>
</xsl:if>
<xsl:if test="$layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987' or ($layoutVersion = '1989' and $revision_date_num <= 19981231)">
<xsl:attribute name="margin-top">62mm</xsl:attribute>
</xsl:if>
<!-- render 'Contents' outside if role="TOC" -->
<xsl:apply-templates select="*[local-name() = 'title']"/>
<fo:block role="TOC">
<xsl:apply-templates select="node()[not(local-name() = 'title')]"/>
<xsl:if test="count(*) = 1 and *[local-name() = 'title']"> <!-- if there isn't user ToC -->
<!-- <xsl:if test="$debug = 'true'">
<redirect:write file="contents_.xml">
<xsl:copy-of select="$contents"/>
</redirect:write>
</xsl:if> -->
<xsl:variable name="margin-left">12</xsl:variable>
<xsl:for-each select="$contents//item[@display = 'true']"><!-- [not(@level = 2 and starts-with(@section, '0'))] skip clause from preface -->
<xsl:if test="$layoutVersion = '1987'">
<xsl:if test="@type = 'annex' and @level = 1 and not(preceding-sibling::item[@type = 'annex' and @level = 1])">
<fo:block role="TOCI" font-weight="bold" margin-top="12pt" margin-bottom="6pt" keep-with-next="always">
<xsl:call-template name="getLocalizedString">
<xsl:with-param name="key">Annex.pl</xsl:with-param>
</xsl:call-template>
</fo:block>
</xsl:if>
</xsl:if>
<fo:block role="TOCI">
<xsl:if test="@level = 1">
<xsl:attribute name="margin-top">5pt</xsl:attribute>
</xsl:if>
<xsl:if test="@level = 3">
<xsl:attribute name="margin-top">-0.7pt</xsl:attribute>
</xsl:if>
<xsl:if test="$layoutVersion = '1987'">
<xsl:if test="@type = 'section'">
<xsl:attribute name="margin-top">12pt</xsl:attribute>
</xsl:if>
<xsl:attribute name="margin-bottom">6pt</xsl:attribute>
</xsl:if>
<fo:basic-link internal-destination="{@id}" fox:alt-text="{@section} {title}"> <!-- link at this level needs for PDF structure tags -->
<fo:list-block role="SKIP">
<xsl:attribute name="margin-left"><xsl:value-of select="$margin-left * (@level - 1)"/>mm</xsl:attribute>
<xsl:if test="$layoutVersion = '1987'">
<xsl:attribute name="margin-left">0</xsl:attribute>
<xsl:if test="@level >= 3">
<xsl:attribute name="margin-left"><xsl:value-of select="$margin-left div 2 * 1.2 * (@level - 2)"/>mm</xsl:attribute>
</xsl:if>
</xsl:if>
<xsl:if test="@level >= 2 or @type = 'annex'">
<xsl:attribute name="font-weight">normal</xsl:attribute>
</xsl:if>
<xsl:variable name="provisional_distance_between_starts">
<xsl:choose>
<!-- skip 0 section without subsections -->
<xsl:when test="$layoutVersion = '1987' and @level >= 3"><xsl:value-of select="$margin-left div 2 * 1.2"/></xsl:when>
<xsl:when test="@level >= 3"><xsl:value-of select="$margin-left * 1.2"/></xsl:when>
<xsl:when test="$layoutVersion = '1987' and @type = 'section'">0</xsl:when>
<xsl:when test="$layoutVersion = '1987' and @section != ''"><xsl:value-of select="$margin-left div 2 * 1.2"/></xsl:when>
<xsl:when test="@section != ''"><xsl:value-of select="$margin-left"/></xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="section_length_str" select="string-length(normalize-space(@section))"/>
<xsl:variable name="section_length_mm" select="$section_length_str * 2"/>
<!-- refine the distance depends on the section string length -->
<xsl:attribute name="provisional-distance-between-starts">
<xsl:choose>
<xsl:when test="$layoutVersion = '1987' and @type = 'section'">0</xsl:when>
<xsl:when test="$section_length_mm > $provisional_distance_between_starts">
<xsl:value-of select="concat($section_length_mm, 'mm')"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat($provisional_distance_between_starts, 'mm')"/>
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<fo:list-item role="SKIP">
<fo:list-item-label end-indent="label-end()" role="SKIP">
<fo:block role="SKIP">
<xsl:if test="$layoutVersion = '1987'">
<xsl:attribute name="font-weight">bold</xsl:attribute>
</xsl:if>
<xsl:choose>
<xsl:when test="$layoutVersion = '1987' and @type = 'section'"/>
<xsl:otherwise>
<xsl:value-of select="@section"/>
</xsl:otherwise>
</xsl:choose>
</fo:block>
</fo:list-item-label>
<fo:list-item-body start-indent="body-start()" role="SKIP">
<fo:block text-align-last="justify" margin-left="12mm" text-indent="-12mm" role="SKIP">
<xsl:if test="$layoutVersion = '1987' and @type = 'section'">
<xsl:attribute name="font-weight">bold</xsl:attribute>
</xsl:if>
<fo:basic-link internal-destination="{@id}" fox:alt-text="{title}" role="SKIP">
<xsl:if test="$layoutVersion = '1987' and @type = 'section'">
<xsl:value-of select="concat(@section, ' ')"/>
</xsl:if>
<xsl:apply-templates select="title"/>
<fo:inline keep-together.within-line="always" role="SKIP">
<fo:leader font-size="9pt" font-weight="normal" leader-pattern="dots"/>
<fo:inline role="SKIP">
<xsl:if test="@level = 1 and @type = 'annex'">
<xsl:attribute name="font-weight">bold</xsl:attribute>
</xsl:if>
<xsl:if test="$layoutVersion = '1987'">
<xsl:attribute name="font-weight">normal</xsl:attribute>
</xsl:if>
<fo:wrapper role="artifact">
<fo:page-number-citation ref-id="{@id}"/>
</fo:wrapper>
</fo:inline>
</fo:inline>
</fo:basic-link>
</fo:block>
</fo:list-item-body>
</fo:list-item>
</fo:list-block>
</fo:basic-link>
</fo:block>
</xsl:for-each>
<!-- List of Tables -->
<xsl:if test="$contents//tables/table">
<xsl:call-template name="insertListOf_Title">
<xsl:with-param name="title" select="$title-list-tables"/>
</xsl:call-template>
<xsl:for-each select="$contents//tables/table">
<xsl:call-template name="insertListOf_Item"/>
</xsl:for-each>
</xsl:if>
<!-- List of Figures -->
<xsl:if test="$contents//figures/figure">
<xsl:call-template name="insertListOf_Title">
<xsl:with-param name="title" select="$title-list-figures"/>
</xsl:call-template>
<xsl:for-each select="$contents//figures/figure">
<xsl:call-template name="insertListOf_Item"/>
</xsl:for-each>
</xsl:if>
</xsl:if>
</fo:block>
</fo:block-container>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="iso:preface//iso:clause[@type = 'toc']/iso:title" priority="3">
<fo:block text-align-last="justify" font-size="16pt" margin-top="10pt" margin-bottom="18pt">
<xsl:if test="$layoutVersion = '2024'">
<xsl:attribute name="margin-top">0</xsl:attribute>
</xsl:if>
<fo:inline font-size="16pt" font-weight="bold" role="SKIP">
<xsl:if test="$layoutVersion = '1987'">
<xsl:attribute name="font-size">14pt</xsl:attribute>
</xsl:if>
<!-- <xsl:if test="$layoutVersion = '2024'">
<xsl:attribute name="font-size">15.3pt</xsl:attribute>
</xsl:if> -->
<!-- Contents -->
<!-- <xsl:call-template name="getLocalizedString">
<xsl:with-param name="key">table_of_contents</xsl:with-param>
</xsl:call-template> -->
<xsl:apply-templates/>
</fo:inline>
<fo:inline keep-together.within-line="always" role="SKIP">
<fo:leader leader-pattern="space"/>
<fo:inline font-weight="normal" font-size="10pt" role="SKIP">
<xsl:if test="$layoutVersion = '1987'">
<xsl:attribute name="font-size">8pt</xsl:attribute>
</xsl:if>
<!-- <xsl:if test="$layoutVersion = '2024'">
<xsl:attribute name="font-size">9.6pt</xsl:attribute>
</xsl:if> -->
<!-- Page -->
<xsl:value-of select="$i18n_locality_page"/>
</fo:inline>
</fo:inline>
</fo:block>
</xsl:template>
<xsl:template match="iso:pagebreak" priority="2">
<xsl:copy-of select="."/>
</xsl:template>
<xsl:template name="insertListOf_Title">
<xsl:param name="title"/>
<fo:block role="TOCI" margin-top="5pt" keep-with-next="always">
<xsl:value-of select="$title"/>
</fo:block>
</xsl:template>
<xsl:template name="insertListOf_Item">
<fo:block role="TOCI" font-weight="normal" text-align-last="justify" margin-left="12mm">
<fo:basic-link internal-destination="{@id}">
<xsl:call-template name="setAltText">
<xsl:with-param name="value" select="@alt-text"/>
</xsl:call-template>
<xsl:apply-templates select="." mode="contents"/>
<fo:inline keep-together.within-line="always">
<fo:leader font-size="9pt" font-weight="normal" leader-pattern="dots"/>
<fo:inline><fo:page-number-citation ref-id="{@id}"/></fo:inline>
</fo:inline>
</fo:basic-link>
</fo:block>
</xsl:template>
<!-- ==================== -->
<!-- display titles -->
<!-- ==================== -->
<xsl:template match="iso:bibdata/iso:title[@type = 'title-intro']">
<xsl:choose>
<xsl:when test="$layoutVersion = '1951'">
<fo:block text-transform="uppercase"><xsl:apply-templates/></fo:block>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
<xsl:text> — </xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="iso:bibdata/iso:title[@type = 'title-main']">
<xsl:param name="body">false</xsl:param>
<xsl:choose>
<xsl:when test="$layoutVersion = '1951'">
<fo:block text-transform="uppercase" font-weight="bold" margin-top="5mm">
<xsl:if test="$revision_date_num < 19680101">
<xsl:if test="$body = 'false'">
<xsl:attribute name="font-weight">normal</xsl:attribute>
</xsl:if>
<xsl:if test="../iso:title[@type = 'title-intro']"> <!-- in title-intro and title-main exist both -->
<xsl:attribute name="font-size">11pt</xsl:attribute>
</xsl:if>
<xsl:attribute name="margin-top">3mm</xsl:attribute>
</xsl:if>
<xsl:apply-templates/>
</fo:block>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="iso:bibdata/iso:title[@type = 'title-part']">
<xsl:param name="curr_lang" select="$lang"/>
<xsl:param name="isMainLang">false</xsl:param>
<xsl:if test="$part != ''">
<!-- <xsl:text> — </xsl:text> -->
<xsl:choose>
<xsl:when test="$layoutVersion = '1951'"/>
<xsl:otherwise><xsl:text> — </xsl:text></xsl:otherwise>
</xsl:choose>
<xsl:variable name="part-word">
<xsl:choose>
<xsl:when test="$isMainLang = 'true'">
<xsl:value-of select="concat($i18n_locality_part, ' ', $part, ':')"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="java:replaceAll(java:java.lang.String.new($titles/title-part[@lang=$curr_lang]),'#',$part)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:choose>
<xsl:when test="$isMainLang = 'true'">
<xsl:choose>
<xsl:when test="$layoutVersion = '1951'">
<xsl:value-of select="$part-word"/>
<xsl:apply-templates/>
</xsl:when>
<xsl:when test="$layoutVersion = '1972' or $layoutVersion = '1979'">
<fo:block font-weight="bold" role="SKIP">
<xsl:value-of select="$part-word"/>
<xsl:text> </xsl:text>
<xsl:apply-templates/>
</fo:block>
</xsl:when>
<xsl:when test="$layoutVersion = '1987'">
<fo:block font-weight="bold" margin-top="12pt" role="SKIP">
<xsl:value-of select="$part-word"/>
</fo:block>
</xsl:when>
<xsl:otherwise>
<fo:block font-weight="normal" margin-top="6pt" role="SKIP">
<xsl:value-of select="$part-word"/>
</fo:block>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<!-- <xsl:value-of select="$linebreak"/> -->
<xsl:choose>
<xsl:when test="$layoutVersion = '1972' or $layoutVersion = '1979'"/>
<xsl:otherwise>
<fo:block font-size="1pt" margin-top="5pt" role="SKIP"> </fo:block>
</xsl:otherwise>
</xsl:choose>
<xsl:value-of select="$part-word"/>
<xsl:text> </xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
<xsl:choose>
<xsl:when test="$layoutVersion = '1951'"><fo:inline font-weight="normal"><xsl:apply-templates/></fo:inline></xsl:when>
<xsl:when test="($layoutVersion = '1972' or $layoutVersion = '1979') and $isMainLang = 'true'"/>
<xsl:when test="($layoutVersion = '1972' or $layoutVersion = '1979') and $isMainLang = 'false'">
<fo:inline font-weight="normal"><xsl:apply-templates/></fo:inline>
</xsl:when>
<xsl:when test="$layoutVersion = '1987'">
<fo:inline font-weight="normal"><xsl:apply-templates/></fo:inline>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="iso:bibdata/iso:title[@type = 'title-amd']">
<xsl:param name="isMainLang">false</xsl:param>
<xsl:param name="curr_lang" select="$lang"/>
<xsl:param name="isMainBody">false</xsl:param>
<xsl:if test="$doctype = 'amendment'">
<fo:block margin-right="-5mm" margin-top="6pt" role="H1">
<xsl:if test="$isMainLang = 'true'">
<xsl:attribute name="margin-top">12pt</xsl:attribute>
</xsl:if>
<xsl:if test="$stage-abbreviation = 'DIS' or $isMainBody = 'true'">
<xsl:attribute name="margin-right">0mm</xsl:attribute>
</xsl:if>
<fo:block font-weight="normal" line-height="1.1" role="SKIP">
<xsl:choose>
<xsl:when test="$isMainLang = 'false' and $curr_lang = 'fr'">AMENDEMENT</xsl:when>
<xsl:otherwise><xsl:value-of select="$doctype_uppercased"/></xsl:otherwise>
</xsl:choose>
<xsl:variable name="amendment-number" select="/iso:iso-standard/iso:bibdata/iso:ext/iso:structuredidentifier/iso:project-number/@amendment"/>
<xsl:if test="normalize-space($amendment-number) != ''">
<xsl:text> </xsl:text><xsl:value-of select="$amendment-number"/>
</xsl:if>
<xsl:if test="not($stage-abbreviation = 'DAMD' or $stage-abbreviation = 'DAM')">
<xsl:text>: </xsl:text>
<xsl:apply-templates/>
</xsl:if>
</fo:block>
</fo:block>
</xsl:if>
</xsl:template>
<xsl:template match="iso:sections//iso:p[@class = 'zzSTDTitle1']" priority="4">
<xsl:choose>
<xsl:when test="$layoutVersion = '1951'">
<fo:block font-size="13pt" font-weight="bold" text-align="center" margin-top="49mm" margin-bottom="20mm" text-transform="uppercase" line-height="1.1" role="H1">
<xsl:if test="$revision_date_num >= 19680101">
<xsl:attribute name="font-family">Arial</xsl:attribute>
<xsl:attribute name="font-size">10.5pt</xsl:attribute>
<xsl:attribute name="margin-top">24mm</xsl:attribute>
</xsl:if>
<xsl:if test="following-sibling::*[1][self::iso:p][starts-with(@class, 'zzSTDTitle')]">
<xsl:attribute name="margin-bottom">0pt</xsl:attribute>
</xsl:if>
<xsl:choose>
<xsl:when test="$revision_date_num >= 19680101">
<fo:block font-weight="normal"><xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-intro']"/></fo:block>
<fo:block space-before="24pt"><xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-main']"/></fo:block>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-intro']"/>
<xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-main']">
<xsl:with-param name="body">true</xsl:with-param>
</xsl:apply-templates>
<fo:block font-size="11pt" text-transform="uppercase" margin-top="2mm">
<xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-part']/node()"/>
</fo:block>
<!-- <xsl:apply-templates/> -->
</xsl:otherwise>
</xsl:choose>
</fo:block>
</xsl:when>
<xsl:when test="$layoutVersion = '1987' and $doctype = 'technical-report'"/>
<xsl:when test="$layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987' or $layoutVersion = '1989'">
<fo:block font-size="16pt" font-weight="bold" margin-top="40pt" margin-bottom="40pt" line-height="1.1" role="H1" span="all">
<xsl:if test="following-sibling::*[1][self::iso:p][starts-with(@class, 'zzSTDTitle')]">
<xsl:attribute name="margin-bottom">0pt</xsl:attribute>
</xsl:if>
<xsl:if test="$doctype = 'addendum'">
<xsl:attribute name="margin-bottom">0pt</xsl:attribute>
</xsl:if>
<xsl:apply-templates/>
</fo:block>
<xsl:if test="$doctype = 'addendum'">
<fo:block font-size="12pt" font-weight="bold" role="H2" line-height="1.05" margin-top="6pt" margin-bottom="40pt">
<xsl:call-template name="printAddendumTitle"/>
</fo:block>
</xsl:if>
</xsl:when>
<xsl:otherwise>
<fo:block font-size="18pt" font-weight="bold" margin-top="40pt" margin-bottom="20pt" line-height="1.1" role="H1">
<xsl:if test="$layoutVersion = '2024'">
<xsl:attribute name="margin-top">50pt</xsl:attribute>
</xsl:if>
<xsl:if test="following-sibling::*[1][self::iso:p][starts-with(@class, 'zzSTDTitle')]">
<xsl:attribute name="margin-bottom">0pt</xsl:attribute>
</xsl:if>
<xsl:apply-templates/>
</fo:block>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="iso:sections//iso:p[@class = 'zzSTDTitle1']/iso:span[@class = 'nonboldtitle']" priority="3">
<!-- Example: <span class="nonboldtitle">Part 1:</span> -->
<xsl:choose>
<xsl:when test="$layoutVersion = '1972' or $layoutVersion = '1979'">
<fo:inline font-weight="bold" role="SKIP">
<xsl:apply-templates/>
</fo:inline>
</xsl:when>
<xsl:otherwise>
<fo:block font-weight="normal" margin-top="12pt" line-height="1.1" role="SKIP">
<xsl:apply-templates/>
</fo:block>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="iso:sections//iso:p[@class = 'zzSTDTitle2']" priority="4">
<!-- Example: <p class="zzSTDTitle2" displayorder="3">AMENDMENT 1: Mass fraction of extraneous matter, milled rice (nonglutinous), sample dividers and recommendations relating to storage and transport conditions</p> -->
<xsl:if test="$doctype = 'amendment'">
<fo:block font-size="18pt" margin-top="12pt" margin-bottom="20pt" margin-right="0mm" font-weight="normal" line-height="1.1" role="H1">
<xsl:if test="$layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987' or $layoutVersion = '1989'">
<xsl:attribute name="font-size">16pt</xsl:attribute>
</xsl:if>
<!-- <xsl:if test="$layoutVersion = '2024'">
<xsl:attribute name="font-size">17.2pt</xsl:attribute>
</xsl:if> -->
<xsl:apply-templates/>
</fo:block>
</xsl:if>
</xsl:template>
<!-- ==================== -->
<!-- END display titles -->
<!-- ==================== -->
<xsl:template match="*[local-name() = 'title']/*[local-name() = 'span'][contains(@style, 'text-transform:none')]//text()" priority="6">
<fo:inline font-weight="normal"><xsl:value-of select="."/></fo:inline>
</xsl:template>
<xsl:template match="node()">
<xsl:apply-templates/>
</xsl:template>
<!-- ============================= -->
<!-- CONTENTS -->
<!-- ============================= -->
<!-- element with title -->
<xsl:template match="*[iso:title]" mode="contents">
<xsl:variable name="level">
<xsl:call-template name="getLevel">
<xsl:with-param name="depth" select="iso:title/@depth"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="section">
<xsl:call-template name="getSection"/>
</xsl:variable>
<xsl:variable name="type">
<xsl:choose>
<xsl:when test="local-name() = 'indexsect'">index</xsl:when>
<xsl:when test="@type = 'section'"><xsl:value-of select="@type"/></xsl:when>
<xsl:otherwise><xsl:value-of select="local-name()"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="display">
<xsl:choose>
<xsl:when test="ancestor-or-self::iso:annex and $level >= 2">false</xsl:when>
<xsl:when test="ancestor-or-self::iso:introduction and $level >= 2">false</xsl:when>
<xsl:when test="$section = '' and $type = 'clause'">false</xsl:when>
<xsl:when test="$level <= $toc_level">true</xsl:when>
<xsl:otherwise>false</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="skip">
<xsl:choose>
<xsl:when test="ancestor-or-self::iso:bibitem">true</xsl:when>
<xsl:when test="ancestor-or-self::iso:term">true</xsl:when>
<xsl:otherwise>false</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:if test="$skip = 'false'">
<xsl:variable name="title">
<xsl:call-template name="getName"/>
</xsl:variable>
<xsl:variable name="root">
<xsl:if test="ancestor-or-self::iso:preface">preface</xsl:if>
<xsl:if test="ancestor-or-self::iso:annex">annex</xsl:if>
</xsl:variable>
<item id="{@id}" level="{$level}" section="{$section}" type="{$type}" root="{$root}" display="{$display}">
<xsl:if test="$type = 'index'">
<xsl:attribute name="level">1</xsl:attribute>
</xsl:if>
<title>
<xsl:apply-templates select="xalan:nodeset($title)" mode="contents_item">
<xsl:with-param name="element">
<xsl:if test="$level = 1"><xsl:value-of select="$root"/></xsl:if>
</xsl:with-param>
</xsl:apply-templates>
</title>
<xsl:if test="$type != 'index'">
<xsl:apply-templates mode="contents"/>
</xsl:if>
</item>
</xsl:if>
</xsl:template>
<xsl:template match="iso:p | iso:termsource | iso:termnote" mode="contents"/>
<xsl:template match="/" mode="contents_item">
<xsl:param name="element"/>
<xsl:apply-templates mode="contents_item">
<xsl:with-param name="element" select="$element"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="*[local-name() = 'strong']/text()" mode="contents_item">
<xsl:param name="element"/>
<xsl:choose>
<xsl:when test="$layoutVersion = '1987' and $element = 'annex' and not(../preceding-sibling::node())"> <!-- omit Annex -->
<xsl:value-of select="substring-after(., ' ')"/><xsl:text> </xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="*[local-name() = 'span'][@class = 'obligation']/text()" mode="contents_item">
<xsl:param name="element"/>
<xsl:choose>
<xsl:when test="$layoutVersion = '1987' and $element = 'annex'"/>
<xsl:otherwise>
<xsl:value-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- ============================= -->
<!-- ============================= -->
<!-- <fo:block margin-bottom="12pt">© ISO 2019, Published in Switzerland.</fo:block>
<fo:block font-size="10pt" margin-bottom="12pt">All rights reserved. Unless otherwise specified, no part of this publication may be reproduced or utilized otherwise in any form or by any means, electronic or mechanical, including photocopying, or posting on the internet or an intranet, without prior written permission. Permission can be requested from either ISO at the address below or ISO’s member body in the country of the requester.</fo:block>
<fo:block font-size="10pt" text-indent="7.1mm">
<fo:block>ISO copyright office</fo:block>
<fo:block>Ch. de Blandonnet 8 • CP 401</fo:block>
<fo:block>CH-1214 Vernier, Geneva, Switzerland</fo:block>
<fo:block>Tel. + 41 22 749 01 11</fo:block>
<fo:block>Fax + 41 22 749 09 47</fo:block>
<fo:block>copyright@iso.org</fo:block>
<fo:block>www.iso.org</fo:block>
</fo:block> -->
<xsl:template match="iso:copyright-statement/iso:clause[1]/iso:title" priority="2">
<xsl:choose>
<xsl:when test="$layoutVersion = '1951'">
<fo:block><xsl:apply-templates/></fo:block> <!-- font-weight="bold" -->
<fo:block> </fo:block>
</xsl:when>
<xsl:otherwise>
<fo:block margin-left="0.5mm" margin-bottom="3mm" role="H1">
<xsl:if test="$layoutVersion = '2024'">
<xsl:attribute name="margin-bottom">3.5mm</xsl:attribute>
</xsl:if>
<fo:external-graphic src="{concat('data:image/png;base64,', normalize-space($Image-Attention))}" width="14mm" content-height="13mm" content-width="scale-to-fit" scaling="uniform" fox:alt-text="Image {@alt}">
<!-- <xsl:if test="$layoutVersion = '2024'">
<xsl:attribute name="width">13mm</xsl:attribute>
<xsl:attribute name="content-height">11.5mm</xsl:attribute>
<xsl:attribute name="margin-bottom">-1mm</xsl:attribute>
</xsl:if> -->
</fo:external-graphic>
<!-- <fo:inline padding-left="6mm" font-size="12pt" font-weight="bold">COPYRIGHT PROTECTED DOCUMENT</fo:inline> -->
<fo:inline padding-left="6mm" font-size="12pt" font-weight="bold" role="SKIP">
<xsl:if test="$layoutVersion = '1989'">
<xsl:attribute name="font-size">11pt</xsl:attribute>
</xsl:if>
<xsl:if test="$layoutVersion = '2024'">
<xsl:attribute name="baseline-shift">5%</xsl:attribute>
</xsl:if>
<xsl:apply-templates/></fo:inline>
</fo:block>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="iso:copyright-statement/iso:clause" priority="3">
<fo:block role="SKIP">
<xsl:if test="@id = 'boilerplate-copyright-default' and ../iso:clause[not(@id = 'boilerplate-copyright-default')]">
<xsl:attribute name="color">blue</xsl:attribute>
<xsl:attribute name="border">1pt solid blue</xsl:attribute>
<xsl:attribute name="padding">1mm</xsl:attribute>
</xsl:if>
<xsl:if test="not(@id = 'boilerplate-copyright-default') and preceding-sibling::iso:clause">
<xsl:attribute name="margin-top">5mm</xsl:attribute>
</xsl:if>
<xsl:copy-of select="@id"/>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="iso:copyright-statement//iso:p" priority="2">
<xsl:choose>
<xsl:when test="$layoutVersion = '1951'">
<xsl:choose>
<xsl:when test="@id = 'boilerplate-message'">
<fo:block-container width="87mm" margin-left="45mm" margin-right="45mm">
<fo:block-container margin-left="0" margin-right="0">
<fo:block text-align="justify" text-align-last="center">
<!-- The copyright of ISO Recommendations and 1SO Standards
belongs to ISO Member Bodies. Reproduction of these
documents, in any country, may be authorized therefore only
by the national standards organization of that country, being
a member of ISO. -->
<xsl:apply-templates/>
</fo:block>
</fo:block-container>
</fo:block-container>
<fo:block> </fo:block>
<fo:block> </fo:block>
<fo:block> </fo:block>
</xsl:when>
<xsl:when test="@id = 'boilerplate-place'">
<fo:block> </fo:block>
<fo:block> </fo:block>
<fo:block><xsl:apply-templates/></fo:block>
<fo:block> </fo:block>
<fo:block> </fo:block>
</xsl:when>
<xsl:otherwise>
<fo:block><xsl:apply-templates/></fo:block>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="$layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987'">
<xsl:if test="@id = 'boilerplate-place'">
<fo:block margin-top="6pt"><xsl:if test="(($layoutVersion = '1987' and $doctype = 'technical-report') or ($layoutVersion = '1979' and $doctype = 'addendum'))"><xsl:attribute name="margin-top">0</xsl:attribute></xsl:if> </fo:block>
</xsl:if>
<fo:block><xsl:apply-templates/></fo:block>
</xsl:when>
<xsl:otherwise>
<fo:block>
<xsl:if test="following-sibling::iso:p">
<xsl:attribute name="margin-bottom">3pt</xsl:attribute>
<xsl:attribute name="margin-left">0.5mm</xsl:attribute>
<xsl:attribute name="margin-right">0.5mm</xsl:attribute>
</xsl:if>
<xsl:if test="contains(@id, 'address') or contains(normalize-space(), 'Tel:') or contains(normalize-space(), 'Phone:')">
<xsl:attribute name="margin-left">4.5mm</xsl:attribute>
</xsl:if>
<xsl:apply-templates/>
</fo:block>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- ====== -->
<!-- title -->
<!-- ====== -->
<xsl:template match="iso:annex/iso:title">
<xsl:choose>
<xsl:when test="$doctype = 'amendment'">
<xsl:call-template name="titleAmendment"/>
</xsl:when>
<xsl:otherwise>
<fo:block font-size="16pt" text-align="center" margin-bottom="48pt" keep-with-next="always" role="H1">
<xsl:if test="$layoutVersion = '2024'">
<xsl:attribute name="line-height">1.1</xsl:attribute>
<!-- <xsl:attribute name="margin-bottom">52pt</xsl:attribute> -->
</xsl:if>
<xsl:if test="$layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987' or $layoutVersion = '1989'">
<xsl:attribute name="span">all</xsl:attribute>
</xsl:if>
<xsl:apply-templates/>
<xsl:apply-templates select="following-sibling::*[1][local-name() = 'variant-title'][@type = 'sub']" mode="subtitle"/>
</fo:block>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- Bibliography -->
<xsl:template match="iso:references[not(@normative='true')]/iso:title">
<xsl:choose>
<xsl:when test="$doctype = 'amendment'">
<xsl:call-template name="titleAmendment"/>
</xsl:when>
<xsl:otherwise>
<fo:block font-size="16pt" font-weight="bold" text-align="center" margin-top="6pt" margin-bottom="36pt" keep-with-next="always" role="H1">
<xsl:if test="$layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987' or $layoutVersion = '1989'">
<xsl:attribute name="font-size">14pt</xsl:attribute>
<xsl:attribute name="span">all</xsl:attribute>
</xsl:if>
<xsl:if test="$layoutVersion = '2024'">
<xsl:attribute name="margin-top">0pt</xsl:attribute>
<xsl:attribute name="margin-bottom">30pt</xsl:attribute>
</xsl:if>
<xsl:apply-templates/>
</fo:block>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="iso:title" name="title">
<xsl:param name="without_number">false</xsl:param>
<xsl:variable name="level">
<xsl:call-template name="getLevel"/>
</xsl:variable>
<xsl:variable name="font-size">
<xsl:choose>
<xsl:when test="$layoutVersion = '1951'">
<xsl:choose>
<xsl:when test="$level = 1 and ancestor::iso:preface and $revision_date_num >= 19680101">9.5pt</xsl:when> <!-- BRIEF HISTORY, FOREWORD -->
<xsl:when test="$level = 1 and ancestor::iso:preface">13pt</xsl:when>
<xsl:when test="$revision_date_num < 19680101 and ancestor::*[local-name() = 'sections'] and not(ancestor::*[local-name() = 'introduction'])">9pt</xsl:when>
<!-- <xsl:when test="$level = 1">9pt</xsl:when> -->
<xsl:otherwise>inherit</xsl:otherwise>
<!-- <xsl:when test="$level = 2">10pt</xsl:when>
<xsl:when test="$level >= 3">9pt</xsl:when> -->
</xsl:choose>
</xsl:when>
<xsl:when test="$layoutVersion = '1972'">
<xsl:choose>
<xsl:when test="$level = 1">9pt</xsl:when>
<xsl:otherwise>9pt</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="(($layoutVersion = '1987' and $doctype = 'technical-report') or ($layoutVersion = '1979' and $doctype = 'addendum'))">
<xsl:choose>
<xsl:when test="$level = 1">11pt</xsl:when>
<xsl:when test="$level = 2">10pt</xsl:when>
<xsl:when test="$level >= 3">9pt</xsl:when>
</xsl:choose>
</xsl:when>
<xsl:when test="$layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987' or $layoutVersion = '1989'">
<xsl:choose>
<xsl:when test="ancestor::iso:annex and $level = 2">12pt</xsl:when>
<xsl:when test="ancestor::iso:annex and $level = 3">11pt</xsl:when>
<xsl:when test="ancestor::iso:introduction and $level >= 2">10pt</xsl:when>
<xsl:when test="ancestor::iso:preface">14pt</xsl:when>
<xsl:when test="$level = 2">10pt</xsl:when>
<xsl:when test="$level >= 3">10pt</xsl:when>
<xsl:otherwise>12pt</xsl:otherwise>
</xsl:choose>
</xsl:when>
<!-- <xsl:when test="$layoutVersion = '2024'">
<xsl:choose>
<xsl:when test="ancestor::iso:annex and $level = 2">12.5pt</xsl:when>
<xsl:when test="ancestor::iso:annex and $level = 3">11.5pt</xsl:when>
<xsl:when test="ancestor::iso:introduction and $level >= 2">10.5pt</xsl:when>
<xsl:when test="ancestor::iso:preface">15.3pt</xsl:when>
<xsl:when test="$level = 2">11.5pt</xsl:when>
<xsl:when test="$level >= 3">10.5pt</xsl:when>
<xsl:otherwise>12.5pt</xsl:otherwise>
</xsl:choose>
</xsl:when> -->
<xsl:otherwise>
<xsl:choose>
<xsl:when test="ancestor::iso:annex and $level = 2">13pt</xsl:when>
<xsl:when test="ancestor::iso:annex and $level = 3">12pt</xsl:when>
<xsl:when test="ancestor::iso:introduction and $level >= 2">11pt</xsl:when>
<xsl:when test="ancestor::iso:preface">16pt</xsl:when>
<xsl:when test="$level = 2">12pt</xsl:when>
<xsl:when test="$level >= 3">11pt</xsl:when>
<xsl:otherwise>13pt</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:variable> <!-- font-size -->
<xsl:variable name="element-name">
<xsl:choose>
<xsl:when test="@inline-header = 'true'">fo:inline</xsl:when>
<xsl:when test="../@inline-header = 'true'">fo:inline</xsl:when>
<xsl:otherwise>fo:block</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:choose>
<xsl:when test="(($layoutVersion = '1987' and $doctype = 'technical-report') or ($layoutVersion = '1979' and $doctype = 'addendum')) and parent::iso:foreword"><!-- skip Foreword title --></xsl:when>
<xsl:when test="$doctype = 'amendment' and not(ancestor::iso:preface)">
<fo:block font-size="11pt" font-style="italic" margin-bottom="12pt" keep-with-next="always" role="H{$level}">
<!-- <xsl:if test="$layoutVersion = '2024'">
<xsl:attribute name="font-size">10.5pt</xsl:attribute>
</xsl:if> -->
<xsl:apply-templates/>
<xsl:apply-templates select="following-sibling::*[1][local-name() = 'variant-title'][@type = 'sub']" mode="subtitle"/>
</fo:block>
</xsl:when>
<xsl:otherwise>
<xsl:if test="(($layoutVersion = '1987' and $doctype = 'technical-report') or ($layoutVersion = '1979' and $doctype = 'addendum')) and parent::iso:introduction">
<fo:block span="all" text-align="center" margin-top="15mm" keep-with-previous="always" role="SKIP">
<fo:leader leader-pattern="rule" leader-length="12%"/>
</fo:block>
</xsl:if>
<xsl:element name="{$element-name}">
<xsl:if test="$layoutVersion = '1951' or $layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987' or $layoutVersion = '1989'">
<!-- copy @id from empty preceding clause -->
<xsl:copy-of select="preceding-sibling::*[1][local-name() = 'clause' and count(node()) = 0]/@id"/>
</xsl:if>
<xsl:attribute name="font-size"><xsl:value-of select="$font-size"/></xsl:attribute>
<xsl:attribute name="font-weight">bold</xsl:attribute>
<xsl:variable name="attribute-name-before">
<xsl:choose>
<xsl:when test="ancestor::iso:preface and $level = 1">margin-top</xsl:when> <!-- for Foreword and Introduction titles -->
<xsl:otherwise>space-before</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:attribute name="{$attribute-name-before}"> <!-- space-before or margin-top -->
<xsl:choose>
<xsl:when test="$layoutVersion = '1951' and ancestor::iso:preface and $level = 1">20mm</xsl:when>
<xsl:when test="$layoutVersion = '1951' and $level = 1 and $revision_date_num >= 19680101">12pt</xsl:when>
<xsl:when test="ancestor::iso:introduction and $level >= 2 and ../preceding-sibling::iso:clause">30pt</xsl:when>
<xsl:when test="(($layoutVersion = '1987' and $doctype = 'technical-report') or ($layoutVersion = '1979' and $doctype = 'addendum')) and ancestor::iso:preface and $level = 1">10mm</xsl:when>
<xsl:when test="($layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987' or ($layoutVersion = '1989' and $revision_date_num <= 19981231)) and ancestor::iso:preface and $level = 1">62mm</xsl:when>
<xsl:when test="$layoutVersion = '1972' and $level = 1">30pt</xsl:when>
<xsl:when test="$layoutVersion = '1989' and ancestor::iso:preface and $level = 1">56pt</xsl:when>
<xsl:when test="$layoutVersion = '2024' and ancestor::iso:preface and $level = 1">0pt</xsl:when>
<xsl:when test="ancestor::iso:preface">8pt</xsl:when>
<xsl:when test="$level = 2 and ancestor::iso:annex">18pt</xsl:when>
<xsl:when test="$level = 1">18pt</xsl:when>
<xsl:when test="($level = 2 or $level = 3) and not(../preceding-sibling::iso:clause) and $layoutVersion = '2024'">12pt</xsl:when> <!-- first title in 3rd level clause -->
<xsl:when test="($level = 2 or $level = 3) and not(../preceding-sibling::iso:clause)">14pt</xsl:when> <!-- first title in 3rd level clause -->
<xsl:when test="$level = 3">14pt</xsl:when>
<xsl:when test="$level > 3">3pt</xsl:when>
<xsl:when test="$level = ''">6pt</xsl:when>
<xsl:otherwise>12pt</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:attribute name="space-after"> <!-- margin-bottom -->
<xsl:choose>
<xsl:when test="$layoutVersion = '1951' and $level = 1 and ancestor::iso:preface">14.7mm</xsl:when>
<xsl:when test="$layoutVersion = '1951' and parent::iso:introduction and $revision_date_num < 19680101">6mm</xsl:when>
<xsl:when test="$layoutVersion = '1951' and parent::iso:introduction">2mm</xsl:when>
<!-- <xsl:when test="$layoutVersion = '1951' and $revision_date_num >= 19680101">4pt</xsl:when> -->
<xsl:when test="$layoutVersion = '1951' and $level = 1">12pt</xsl:when>
<xsl:when test="ancestor::iso:introduction and $level >= 2">8pt</xsl:when>
<xsl:when test="ancestor::iso:preface">18pt</xsl:when>
<xsl:when test="$level = 3">9pt</xsl:when>
<!-- <xsl:when test="$level = 2 and ancestor::iso:annex and $layoutVersion = '2024'">2pt</xsl:when> -->
<!-- <xsl:otherwise>12pt</xsl:otherwise> -->
<xsl:otherwise>8pt</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:attribute name="keep-with-next">always</xsl:attribute>
<xsl:attribute name="role">H<xsl:value-of select="$level"/></xsl:attribute>
<xsl:if test="@type = 'floating-title' or @type = 'section-title'">
<xsl:copy-of select="@id"/>
</xsl:if>
<xsl:if test="$layoutVersion = '1951'">
<xsl:if test="$element-name = 'fo:block' and ($level = 1 or parent::iso:introduction)">
<xsl:if test="($revision_date_num < 19690101) or ancestor::iso:preface or (parent::iso:introduction and $revision_date_num >= 19680101)">
<xsl:attribute name="text-align">center</xsl:attribute>
</xsl:if>
<xsl:attribute name="text-transform">uppercase</xsl:attribute>
<xsl:if test="ancestor::iso:preface or ancestor::iso:introduction">
<xsl:attribute name="font-weight">normal</xsl:attribute>
</xsl:if>
</xsl:if>
</xsl:if>
<xsl:if test="$layoutVersion = '1972'">
<xsl:if test="$level = 1">
<xsl:attribute name="text-transform">uppercase</xsl:attribute>
</xsl:if>
</xsl:if>
<xsl:if test="$layoutVersion = '1987' and ../@type = 'section'">
<xsl:attribute name="font-size">14pt</xsl:attribute>
<xsl:attribute name="text-align">center</xsl:attribute>
<xsl:attribute name="margin-bottom">18pt</xsl:attribute>
<xsl:attribute name="keep-with-next">always</xsl:attribute>
</xsl:if>
<xsl:if test="$element-name = 'fo:inline'">
<xsl:choose>
<xsl:when test="$lang = 'zh'">
<xsl:value-of select="$tab_zh"/>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="padding-right">2mm</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
<xsl:choose>
<xsl:when test="$layoutVersion = '1951' and ((ancestor::iso:preface and $level = 1) or (parent::iso:introduction and $revision_date_num < 19680101))">
<xsl:call-template name="add-letter-spacing">
<xsl:with-param name="text" select="."/>
<xsl:with-param name="letter-spacing" select="0.65"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="($layoutVersion = '1951' or $layoutVersion = '1972') and ($level = 3 or $level = 4) and *[local-name() = 'tab']">
<xsl:if test="$without_number = 'false'">
<fo:inline>
<xsl:apply-templates select="*[local-name() = 'tab'][1]/preceding-sibling::node() | node()"/>
</fo:inline>
<xsl:apply-templates select="*[local-name() = 'tab'][1]"/>
</xsl:if>
<xsl:choose>
<xsl:when test="$level = 3">
<fo:inline font-weight="normal" font-style="italic"><xsl:apply-templates select="*[local-name() = 'tab'][1]/following-sibling::node()"/></fo:inline>
</xsl:when>
<xsl:otherwise> <!-- i.e. $level = 4 -->
<!-- small caps text with letter spacing -->
<fo:inline font-weight="normal">
<xsl:for-each select="*[local-name() = 'tab'][1]/following-sibling::node()">
<xsl:choose>
<xsl:when test="self::text()">
<fo:inline font-size="70%" letter-spacing="0.1em">
<xsl:variable name="textSmallCaps">
<xsl:call-template name="recursiveSmallCaps">
<xsl:with-param name="text" select="."/>
<xsl:with-param name="ratio" select="0.70"/>
<xsl:with-param name="letter-spacing" select="'0.1em'"/>
</xsl:call-template>
</xsl:variable>
<xsl:for-each select="xalan:nodeset($textSmallCaps)/node()">
<xsl:choose>
<xsl:when test="self::fo:inline">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:call-template name="add-letter-spacing">
<xsl:with-param name="text" select="."/>
<xsl:with-param name="letter-spacing">0.2</xsl:with-param>
</xsl:call-template>
</xsl:copy>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="add-letter-spacing">
<xsl:with-param name="text" select="."/>
<xsl:with-param name="letter-spacing">0.2</xsl:with-param>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</fo:inline>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</fo:inline> <!-- END: small caps text with letter spacing -->
</xsl:otherwise> <!-- END: $level = 4 -->
</xsl:choose>
</xsl:when> <!-- $layoutVersion = '1972' and ($level = 3 or $level = 4) -->
<xsl:otherwise>
<xsl:choose>
<xsl:when test="$without_number = 'true'">
<xsl:apply-templates select="*[local-name() = 'tab'][1]/following-sibling::node()"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
<xsl:apply-templates select="following-sibling::*[1][local-name() = 'variant-title'][@type = 'sub']" mode="subtitle"/>
</xsl:element>
<xsl:if test="$element-name = 'fo:inline' and not(following-sibling::iso:p)">
<fo:block role="SKIP"> <!-- margin-bottom="12pt" -->
<xsl:value-of select="$linebreak"/>
</fo:block>
</xsl:if>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="iso:title[../@inline-header = 'true'][following-sibling::*[1][local-name() = 'p']]" priority="3">
<xsl:param name="without_number">false</xsl:param>
<xsl:choose>
<xsl:when test="($layoutVersion = '1951' or $layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987' or $layoutVersion = '1989') and $layout_columns != 1"/> <!-- don't show 'title' with inline-header='true' if next element is 'p' -->
<xsl:otherwise>
<xsl:call-template name="title">
<xsl:with-param name="without_number" select="$without_number"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="titleAmendment">
<!-- <xsl:variable name="id">
<xsl:call-template name="getId"/>
</xsl:variable> id="{$id}" -->
<fo:block font-size="11pt" font-style="italic" margin-bottom="12pt" keep-with-next="always">
<!-- <xsl:if test="$layoutVersion = '2024'">
<xsl:attribute name="font-size">10.5pt</xsl:attribute>
</xsl:if> -->
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<!-- ====== -->
<!-- ====== -->
<xsl:template match="*[local-name() = 'clause'][normalize-space() != '' or *[local-name() = 'figure']]" priority="2">
<xsl:choose>
<xsl:when test="($layoutVersion = '1951' or $layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987' or $layoutVersion = '1989') and local-name() = 'clause' and count(node()) = 0 and following-sibling::*[1][local-name() = 'title' and not(@id)]"/> <!-- @id will be added to title -->
<xsl:otherwise>
<xsl:call-template name="template_clause_iso"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="iso:p" name="paragraph">
<xsl:param name="inline" select="'false'"/>
<xsl:param name="split_keep-within-line"/>
<xsl:variable name="previous-element" select="local-name(preceding-sibling::*[1])"/>
<xsl:variable name="element-name">
<xsl:choose>
<xsl:when test="$inline = 'true'">fo:inline</xsl:when>
<xsl:when test="../@inline-header = 'true' and $previous-element = 'title'">fo:inline</xsl:when> <!-- first paragraph after inline title -->
<xsl:when test="local-name(..) = 'admonition'">fo:inline</xsl:when>
<xsl:otherwise>fo:block</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:element name="{$element-name}">
<xsl:call-template name="setBlockAttributes">
<xsl:with-param name="text_align_default">justify</xsl:with-param>
</xsl:call-template>
<xsl:attribute name="margin-bottom">8pt</xsl:attribute>
<xsl:if test="count(ancestor::iso:li) = 1 and not(ancestor::iso:li[1]/following-sibling::iso:li) and not(following-sibling::iso:p)">
<xsl:attribute name="margin-bottom">0pt</xsl:attribute>
</xsl:if>
<xsl:if test="starts-with(ancestor::*[local-name() = 'table'][1]/@type, 'recommend') and not(following-sibling::*[local-name() = 'p'])">
<xsl:attribute name="margin-bottom">0pt</xsl:attribute>
</xsl:if>
<xsl:if test="parent::*[local-name() = 'td' or local-name() = 'th']">
<xsl:choose>
<xsl:when test="not(following-sibling::*)"> <!-- last paragraph in table cell -->
<xsl:attribute name="margin-bottom">2pt</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="margin-bottom">5pt</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
<!-- Special case: if paragraph in 'strong', i.e. it's sub-header, then keeps with next -->
<xsl:if test="count(node()) = count(*[local-name() = 'strong']) and following-sibling::*">
<xsl:attribute name="keep-with-next">always</xsl:attribute>
</xsl:if>
</xsl:if>
<xsl:if test="@id">
<xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
</xsl:if>
<!-- bookmarks only in paragraph -->
<xsl:if test="count(iso:bookmark) != 0 and count(*) = count(iso:bookmark) and normalize-space() = ''">
<xsl:attribute name="font-size">0</xsl:attribute>
<xsl:attribute name="margin-bottom">0pt</xsl:attribute>
<xsl:attribute name="line-height">0</xsl:attribute>
</xsl:if>
<xsl:if test="$element-name = 'fo:inline'">
<xsl:attribute name="role">P</xsl:attribute>
</xsl:if>
<xsl:if test="ancestor::*[local-name() = 'li' or local-name() = 'td' or local-name() = 'th' or local-name() = 'dd']">
<xsl:attribute name="role">SKIP</xsl:attribute>
</xsl:if>
<!-- <xsl:apply-templates>
<xsl:with-param name="split_keep-within-line" select="$split_keep-within-line"/>
</xsl:apply-templates> -->
<!-- <xsl:apply-templates select="node()[not(self::iso:note[not(following-sibling::*) or count(following-sibling::*) = count(../iso:note) - 1])]"> -->
<xsl:if test="$layoutVersion = '1951'">
<xsl:if test="not(ancestor::*[local-name() = 'li' or local-name() = 'td' or local-name() = 'th' or local-name() = 'dd'])">
<!-- for paragraphs in the main text -->
<xsl:choose>
<xsl:when test="$revision_date_num < 19600101">
<xsl:attribute name="margin-bottom">14pt</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="margin-bottom">6pt</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
<xsl:if test="(ancestor::iso:preface and parent::iso:clause) or ancestor::iso:foreword">
<xsl:attribute name="text-indent">7.1mm</xsl:attribute>
</xsl:if>
</xsl:if>
<xsl:if test="$layoutVersion = '2024'">
<xsl:attribute name="line-height">1.13</xsl:attribute>
<xsl:if test="parent::iso:li/following-sibling::* or parent::iso:dd">
<xsl:attribute name="margin-bottom">9pt</xsl:attribute>
</xsl:if>
</xsl:if>
<!-- put inline title in the first paragraph -->
<xsl:if test="($layoutVersion = '1951' or $layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987' or $layoutVersion = '1989') and $layout_columns != 1">
<!-- <xsl:if test="preceding-sibling::*[1]/@inline-header = 'true' and preceding-sibling::*[1][self::iso:title]"> -->
<xsl:if test="ancestor::*[1]/@inline-header = 'true' and preceding-sibling::*[1][self::iso:title]">
<xsl:attribute name="space-before">0pt</xsl:attribute>
<xsl:for-each select="preceding-sibling::*[1]">
<xsl:call-template name="title"/>
</xsl:for-each>
<xsl:text> </xsl:text>
</xsl:if>
</xsl:if>
<xsl:apply-templates select="node()[not(self::iso:note)]"> <!-- note renders below paragraph for correct PDF tags order (see https://github.com/metanorma/metanorma-iso/issues/1003) -->
<xsl:with-param name="split_keep-within-line" select="$split_keep-within-line"/>
</xsl:apply-templates>
</xsl:element>
<xsl:apply-templates select="iso:note"/> <!-- [not(following-sibling::*) or count(following-sibling::*) = count(../iso:note) - 1] -->
<xsl:if test="$element-name = 'fo:inline' and not($inline = 'true') and not(local-name(..) = 'admonition')">
<fo:block margin-bottom="12pt" role="SKIP">
<xsl:if test="ancestor::iso:sections or ancestor::iso:annex or following-sibling::iso:table">
<xsl:attribute name="margin-bottom">0</xsl:attribute>
</xsl:if>
<xsl:value-of select="$linebreak"/>
</fo:block>
</xsl:if>
<xsl:if test="$inline = 'true'">
<fo:block role="SKIP"> </fo:block>
</xsl:if>
</xsl:template>
<xsl:template match="iso:li//iso:p//text()">
<xsl:choose>
<xsl:when test="contains(., '	')">
<!-- <fo:inline white-space="pre"><xsl:value-of select="translate(., $thin_space, ' ')"/></fo:inline> -->
<fo:inline white-space="pre"><xsl:value-of select="."/></fo:inline>
</xsl:when>
<xsl:otherwise>
<!-- <xsl:value-of select="translate(., $thin_space, ' ')"/> -->
<!-- <xsl:value-of select="."/> -->
<xsl:call-template name="text"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="iso:p/iso:fn/iso:p">
<xsl:apply-templates/>
</xsl:template>
<!-- For express listings PDF attachments -->
<xsl:template match="*[local-name() = 'eref'][java:endsWith(java:java.lang.String.new(@bibitemid),'.exp')]" priority="2">
<fo:inline xsl:use-attribute-sets="eref-style">
<xsl:variable name="url" select="concat('url(embedded-file:', @bibitemid, ')')"/>
<fo:basic-link external-destination="{$url}" fox:alt-text="{@citeas}">
<xsl:if test="normalize-space(@citeas) = ''">
<xsl:attribute name="fox:alt-text"><xsl:value-of select="."/></xsl:attribute>
</xsl:if>
<xsl:apply-templates/>
</fo:basic-link>
</fo:inline>
</xsl:template>
<xsl:template match="*[local-name() = 'eref'][contains(@bibitemid,'.exp_')]" priority="2">
<xsl:variable name="bibitemid" select="@bibitemid"/>
<xsl:variable name="uri" select="normalize-space($bibitems/*[local-name() ='bibitem'][@hidden = 'true'][@id = $bibitemid][1]/*[local-name() = 'uri'][@type='citation'])"/>
<xsl:choose>
<xsl:when test="$uri != ''">
<xsl:variable name="filename" select="concat(substring-before($bibitemid, '.exp_'), '.exp')"/>
<fo:inline xsl:use-attribute-sets="eref-style">
<xsl:variable name="url" select="concat('url(embedded-file:', $filename, ')')"/>
<fo:basic-link external-destination="{$url}" fox:alt-text="{@citeas}">
<xsl:if test="normalize-space(@citeas) = ''">
<xsl:attribute name="fox:alt-text"><xsl:value-of select="."/></xsl:attribute>
</xsl:if>
<xsl:apply-templates/>
</fo:basic-link>
</fo:inline>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="eref"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="*[local-name() = 'note']/*[local-name() = 'name']/text()" priority="5">
<xsl:choose>
<xsl:when test="$layoutVersion = '1951' and not(translate(.,'0123456789','') = .)"> <!-- NOTE with number -->
<fo:inline padding-right="2mm" role="SKIP">
<xsl:value-of select="substring-after(., ' ')"/>
<xsl:text>. </xsl:text>
</fo:inline>
</xsl:when>
<xsl:when test="$layoutVersion = '1951'"> <!-- and $revision_date_num < 19610101 -->
<xsl:call-template name="smallcaps"/>
<xsl:value-of select="concat('. ', $em_dash, ' ')"/>
</xsl:when>
<xsl:when test="$layoutVersion = '1987' and not(translate(.,'0123456789','') = .)"> <!-- NOTE with number -->
<xsl:value-of select="substring-after(., ' ')"/>
</xsl:when>
<xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="*[local-name() = 'example']/*[local-name() = 'name']/text()" priority="5">
<xsl:choose>
<xsl:when test="$layoutVersion = '1951'"> <!-- and $revision_date_num < 19610101 -->
<xsl:call-template name="smallcaps"/>
<xsl:text>:</xsl:text>
</xsl:when>
<xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="*[local-name() = 'figure']/*[local-name() = 'name']/text()" priority="5">
<xsl:choose>
<xsl:when test="$layoutVersion = '1951' and not(ancestor::*[local-name() = 'figure'][1]/@unnumbered = 'true') and not(preceding-sibling::node())">
<xsl:choose>
<xsl:when test="contains(., '—')">
<xsl:call-template name="smallcaps">
<xsl:with-param name="txt" select="substring-before(., '—')"/>
</xsl:call-template>
<xsl:text>— </xsl:text>
<xsl:value-of select="substring-after(., '—')"/>
</xsl:when>
<xsl:otherwise><xsl:call-template name="smallcaps"/></xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="*[local-name() = 'table']/*[local-name() = 'name']/text()" priority="5">
<xsl:choose>
<xsl:when test="$layoutVersion = '1951' and not(ancestor::*[local-name() = 'table'][1]/@unnumbered = 'true') and not(preceding-sibling::node())">
<xsl:choose>
<xsl:when test="contains(., '—')">
<xsl:call-template name="smallcaps">
<xsl:with-param name="txt" select="substring-before(., '—')"/>
</xsl:call-template>
<xsl:text>— </xsl:text>
<xsl:value-of select="substring-after(., '—')"/>
</xsl:when>
<xsl:otherwise><xsl:call-template name="smallcaps"/></xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="iso:clause[@type = 'section']" priority="3">
<xsl:choose>
<!-- skip empty clause after templates mode="update_xml_step_move_pagebreak" -->
<xsl:when test="not(iso:title) and normalize-space() = ''"/>
<xsl:otherwise>
<xsl:if test="preceding-sibling::iso:clause[@type = 'section']">
<fo:block break-after="page"/>
</xsl:if>
<fo:block span="all">
<xsl:copy-of select="@id"/>
<xsl:apply-templates select="iso:title"/>
</fo:block>
<xsl:apply-templates select="*[not(self::iso:title)]"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- main sections -->
<xsl:template match="/*/*[local-name() = 'sections']/*" name="sections_node_iso" priority="3">
<fo:block>
<xsl:call-template name="setId"/>
<xsl:call-template name="sections_element_style"/>
<xsl:if test="$layoutVersion = '1951' and $revision_date_num >= 19680101">
<xsl:attribute name="space-before">6pt</xsl:attribute>
<xsl:if test="self::iso:introduction">
<xsl:attribute name="space-after">36pt</xsl:attribute>
</xsl:if>
</xsl:if>
<xsl:call-template name="addReviewHelper"/>
<xsl:call-template name="processElementContent"/>
</fo:block>
</xsl:template>
<xsl:template match="*[local-name() = 'sections' or local-name() = 'annex']//*[local-name() = 'clause'][normalize-space() != '' or *[local-name() = 'figure'] or @id]" name="template_clause_iso"> <!-- if clause isn't empty -->
<fo:block>
<xsl:if test="parent::*[local-name() = 'copyright-statement']">
<xsl:attribute name="role">SKIP</xsl:attribute>
</xsl:if>
<xsl:call-template name="setId"/>
<xsl:call-template name="setBlockSpanAll"/>
<xsl:call-template name="refine_clause_style"/>
<xsl:call-template name="addReviewHelper"/>
<xsl:call-template name="processElementContent"/>
</fo:block>
</xsl:template>
<xsl:template name="processElementContent">
<xsl:variable name="level">
<xsl:call-template name="getLevel">
<xsl:with-param name="depth" select="iso:title/@depth"/>
</xsl:call-template>
</xsl:variable>
<xsl:choose>
<xsl:when test="$layoutVersion = '1951' and ($revision_date_num >= 19690101 or $level >= 2) and ancestor::*[local-name() = 'sections' or local-name() = 'annex'] and not(self::iso:introduction)">
<fo:list-block role="SKIP">
<xsl:attribute name="provisional-distance-between-starts">
<xsl:choose>
<xsl:when test="$level = 2">8mm</xsl:when>
<xsl:when test="$level = 3">12mm</xsl:when>
<xsl:when test="$level = 4">14mm</xsl:when>
<xsl:when test="$level > 4">16mm</xsl:when>
<xsl:otherwise>6mm</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<fo:list-item>
<fo:list-item-label end-indent="label-end()">
<fo:block>
<xsl:variable name="element_title">
<xsl:apply-templates select="iso:title"/>
</xsl:variable>
<xsl:for-each select="xalan:nodeset($element_title)/*[1]"> <!-- process fo: element -->
<xsl:copy-of select="@font-size"/>
<xsl:copy-of select="@role"/>
<xsl:copy-of select="@font-weight"/>
<xsl:copy-of select="@font-style"/>
</xsl:for-each>
<xsl:value-of select="xalan:nodeset($element_title)/*[1]/node()[1]"/>
</fo:block>
</fo:list-item-label>
<fo:list-item-body start-indent="body-start()">
<fo:block>
<xsl:apply-templates select="iso:title">
<xsl:with-param name="without_number">true</xsl:with-param>
</xsl:apply-templates>
<xsl:apply-templates select="node()[not(local-name() = 'title')]"/>
</fo:block>
</fo:list-item-body>
</fo:list-item>
</fo:list-block>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- page_sequence/sections/clause -->
<xsl:template match="*[local-name() = 'sections']/*[local-name() = 'page_sequence']/*[not(@top-level)]" priority="3">
<xsl:choose>
<xsl:when test="local-name() = 'clause' and normalize-space() = '' and count(*) = 0"/>
<xsl:otherwise>
<xsl:call-template name="sections_node_iso"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- =================== -->
<!-- Index processing -->
<!-- =================== -->
<xsl:template match="iso:indexsect"/>
<xsl:template match="iso:indexsect" mode="index">
<fo:page-sequence master-reference="index" force-page-count="no-force">
<!-- <xsl:variable name="header-title">
<xsl:choose>
<xsl:when test="./iso:title[1]/*[local-name() = 'tab']">
<xsl:apply-templates select="./iso:title[1]/*[local-name() = 'tab'][1]/following-sibling::node()" mode="header"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="./iso:title[1]" mode="header"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable> -->
<xsl:call-template name="insertHeaderFooter">
<!-- <xsl:with-param name="header-title" select="$header-title"/> -->
<xsl:with-param name="font-weight">normal</xsl:with-param>
</xsl:call-template>
<fo:flow flow-name="xsl-region-body">
<fo:block id="{@id}" text-align="center" span="all">
<xsl:apply-templates select="iso:title"/>
</fo:block>
<fo:block role="Index">
<xsl:apply-templates select="*[not(local-name() = 'title')]"/>
</fo:block>
</fo:flow>
</fo:page-sequence>
</xsl:template>
<xsl:template match="iso:xref" priority="2">
<xsl:call-template name="insert_basic_link">
<xsl:with-param name="element">
<fo:basic-link internal-destination="{@target}" fox:alt-text="{@target}" xsl:use-attribute-sets="xref-style">
<xsl:if test="$layoutVersion = '2024' and (ancestor::iso:termsource or $bibitems/*[local-name() ='bibitem'][@id = current()/@target and @type = 'standard'])">
<xsl:attribute name="color">inherit</xsl:attribute>
<xsl:attribute name="text-decoration">none</xsl:attribute>
</xsl:if>
<xsl:choose>
<xsl:when test="@pagenumber='true'">
<fo:inline>
<xsl:if test="@id">
<xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
</xsl:if>
<fo:page-number-citation ref-id="{@target}"/>
</fo:inline>
</xsl:when>
<xsl:when test="$layoutVersion = '2024' and $bibitems/*[local-name() ='bibitem'][@id = current()/@target and not(@type = 'standard')]"> <!-- if reference to bibitem -->
<!-- <fo:inline baseline-shift="30%" font-size="80%"> -->
<xsl:choose>
<xsl:when test="contains(., '[') and contains(., ']')">
<fo:inline color="black" text-decoration="none">[</fo:inline>
<xsl:value-of select="translate(.,'[]','')"/>
<fo:inline color="black" text-decoration="none">]</fo:inline>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
<!-- </fo:inline> -->
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</fo:basic-link>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template match="*[local-name()='sup'][*[local-name()='xref'][@type = 'footnote']]" priority="2">
<fo:inline font-size="80%">
<xsl:choose>
<xsl:when test="$layoutVersion = '2024'">
<xsl:attribute name="baseline-shift">20%</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="vertical-align">super</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
<xsl:apply-templates/>
</fo:inline>
</xsl:template>
<!-- =================== -->
<!-- End of Index processing -->
<!-- =================== -->
<!-- add columns=1 for elements which should be rendered in <block span="all"> -->
<xsl:template match="*[local-name() = 'annex']/*[local-name() = 'title']" mode="update_xml_step_move_pagebreak">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:if test="$layout_columns != 1">
<xsl:attribute name="columns">1</xsl:attribute>
</xsl:if>
<xsl:apply-templates mode="update_xml_step_move_pagebreak"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[local-name() = 'references'][not(@normative='true')]/*[local-name() = 'title']" mode="update_xml_step_move_pagebreak">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:if test="$layout_columns != 1">
<xsl:attribute name="columns">1</xsl:attribute>
</xsl:if>
<xsl:apply-templates mode="update_xml_step_move_pagebreak"/>
</xsl:copy>
</xsl:template>
<!--
<xsl:template match="text()[contains(., $thin_space)]">
<xsl:value-of select="translate(., $thin_space, ' ')"/>
</xsl:template> -->
<xsl:template name="insertHeaderFooter">
<xsl:param name="font-weight" select="'bold'"/>
<xsl:param name="is_footer">false</xsl:param>
<xsl:param name="is_header">true</xsl:param>
<xsl:param name="border_around_page">false</xsl:param>
<xsl:param name="insert_header_first">true</xsl:param>
<xsl:param name="insert_footer_last">true</xsl:param>
<xsl:if test="($layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987' or ($layoutVersion = '1989' and $revision_date_num <= 19981231)) and $is_footer = 'true'">
<xsl:call-template name="insertFooterFirst1972_1998">
<xsl:with-param name="font-weight" select="$font-weight"/>
</xsl:call-template>
</xsl:if>
<xsl:call-template name="insertHeaderEven">
<xsl:with-param name="border_around_page" select="$border_around_page"/>
<xsl:with-param name="is_header" select="$is_header"/>
</xsl:call-template>
<xsl:call-template name="insertFooterEven">
<xsl:with-param name="font-weight" select="$font-weight"/>
<xsl:with-param name="insert_footer_last" select="$insert_footer_last"/>
</xsl:call-template>
<xsl:choose>
<xsl:when test="$layoutVersion = '1951'"/>
<xsl:when test="not((($layoutVersion = '1987' and $doctype = 'technical-report') or ($layoutVersion = '1979' and $doctype = 'addendum'))) and $insert_header_first = 'true'">
<xsl:call-template name="insertHeaderFirst"/>
</xsl:when>
</xsl:choose>
<xsl:call-template name="insertHeaderOdd">
<xsl:with-param name="border_around_page" select="$border_around_page"/>
<xsl:with-param name="is_header" select="$is_header"/>
</xsl:call-template>
<xsl:call-template name="insertFooterOdd">
<xsl:with-param name="font-weight" select="$font-weight"/>
</xsl:call-template>
</xsl:template>
<xsl:variable name="font-size_header">
<xsl:choose>
<xsl:when test="$layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987' or $layoutVersion = '1989'">11pt</xsl:when>
<xsl:otherwise>12pt</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:template name="insertHeaderEven">
<xsl:param name="is_header">true</xsl:param>
<xsl:param name="border_around_page">false</xsl:param>
<fo:static-content flow-name="header-even" role="artifact">
<xsl:if test="$layoutVersion = '1951' and $border_around_page = 'true'">
<!-- box around page -->
<fo:block-container position="absolute" left="16.5mm" top="15mm" height="270mm" width="170mm" border="1.25pt solid black" role="SKIP">
<fo:block> </fo:block>
</fo:block-container>
</xsl:if>
<fo:block-container height="24mm" display-align="before">
<xsl:if test="$layoutVersion = '2024'">
<xsl:attribute name="height">23mm</xsl:attribute>
</xsl:if>
<xsl:choose>
<xsl:when test="$layoutVersion = '1951'">
<xsl:call-template name="insertHeader1951">
<xsl:with-param name="is_header" select="$is_header"/>
<xsl:with-param name="odd_or_even">even</xsl:with-param>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<fo:block font-size="{$font-size_header}" font-weight="bold" padding-top="12.5mm" line-height="1.1">
<xsl:call-template name="insertLayoutVersionAttributesTop">
<xsl:with-param name="odd_or_even">even</xsl:with-param>
</xsl:call-template>
<xsl:if test="$is_header = 'true'">
<xsl:value-of select="$ISOnumber"/>
</xsl:if>
</fo:block>
</xsl:otherwise>
</xsl:choose>
</fo:block-container>
</fo:static-content>
</xsl:template>
<xsl:template name="insertHeaderFirst">
<fo:static-content flow-name="header-first" role="artifact">
<xsl:choose>
<xsl:when test="$stage-abbreviation = 'FDAMD' or $stage-abbreviation = 'FDAM' or $stage-abbreviation = 'DAMD' or $stage-abbreviation = 'DAM'">
<fo:block-container height="24mm" display-align="before">
<fo:block font-size="{$font-size_header}" font-weight="bold" text-align="right" padding-top="12.5mm" line-height="1.1">
<xsl:call-template name="insertLayoutVersionAttributesTop"/>
<xsl:value-of select="$ISOnumber"/>
</fo:block>
</fo:block-container>
</xsl:when>
<xsl:otherwise>
<fo:block-container margin-top="13mm" width="172mm" border-top="0.5mm solid black" border-bottom="0.5mm solid black" display-align="center" background-color="white">
<xsl:if test="$layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987' or $layoutVersion = '1989'">
<xsl:attribute name="border-top">0.5mm solid black</xsl:attribute>
<xsl:attribute name="border-bottom">0.5mm solid black</xsl:attribute>
</xsl:if>
<xsl:if test=" $layoutVersion = '2024'">
<xsl:attribute name="width">180mm</xsl:attribute>
<xsl:attribute name="border-top">0.8mm solid black</xsl:attribute>
<xsl:attribute name="border-bottom">0.8mm solid black</xsl:attribute>
</xsl:if>
<!-- <fo:block text-align-last="justify" font-size="{$font-size_header}" font-weight="bold" line-height="1.1">
<xsl:choose>
<xsl:when test="$layoutVersion = '2024'">
<xsl:choose>
<xsl:when test="$doctype = 'committee-document'"><xsl:value-of select="$doctype_localized"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$stagename-header-firstpage"/></xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$stagename-header-firstpage-uppercased"/>
</xsl:otherwise>
</xsl:choose>
<fo:inline keep-together.within-line="always">
<fo:leader leader-pattern="space"/>
<fo:inline><xsl:value-of select="$ISOnumber"/></fo:inline>
</fo:inline>
</fo:block> -->
<fo:table table-layout="fixed" width="100%" font-size="{$font-size_header}" font-weight="bold" line-height="1.1">
<fo:table-column column-width="50%"/>
<fo:table-column column-width="50%"/>
<fo:table-body>
<fo:table-row display-align="center" height="9mm">
<xsl:if test="$layoutVersion = '1972' or $layoutVersion = '1979'">
<xsl:attribute name="height">11mm</xsl:attribute>
</xsl:if>
<xsl:if test="$layoutVersion = '2024'">
<xsl:attribute name="height">8.5mm</xsl:attribute>
</xsl:if>
<fo:table-cell>
<fo:block>
<xsl:choose>
<xsl:when test="$layoutVersion = '2024'">
<xsl:choose>
<xsl:when test="$doctype = 'committee-document'"><xsl:value-of select="$doctype_localized"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$stagename-header-firstpage"/></xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$stagename-header-firstpage-uppercased"/>
</xsl:otherwise>
</xsl:choose>
</fo:block>
</fo:table-cell>
<fo:table-cell text-align="right"> <!-- padding-top="2mm" padding-bottom="2mm" -->
<xsl:if test="contains($ISOnumber, $linebreak)">
<xsl:attribute name="padding-top">2mm</xsl:attribute>
<xsl:attribute name="padding-bottom">2mm</xsl:attribute>
</xsl:if>
<fo:block><xsl:value-of select="$ISOnumber"/></fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:block-container>
</xsl:otherwise>
</xsl:choose>
</fo:static-content>
</xsl:template>
<xsl:template name="insertHeaderOdd">
<xsl:param name="is_header">true</xsl:param>
<xsl:param name="border_around_page">false</xsl:param>
<fo:static-content flow-name="header-odd" role="artifact">
<xsl:if test="$layoutVersion = '1951' and $border_around_page = 'true'">
<!-- box around page -->
<fo:block-container position="absolute" left="23.5mm" top="15mm" height="270mm" width="170mm" border="1.25pt solid black" role="SKIP">
<fo:block> </fo:block>
</fo:block-container>
</xsl:if>
<fo:block-container height="24mm" display-align="before">
<xsl:if test="$layoutVersion = '2024'">
<xsl:attribute name="height">23mm</xsl:attribute>
</xsl:if>
<xsl:choose>
<xsl:when test="$layoutVersion = '1951'">
<xsl:call-template name="insertHeader1951">
<xsl:with-param name="is_header" select="$is_header"/>
<xsl:with-param name="odd_or_even">odd</xsl:with-param>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<fo:block font-size="{$font-size_header}" font-weight="bold" text-align="right" padding-top="12.5mm" line-height="1.1">
<xsl:call-template name="insertLayoutVersionAttributesTop">
<xsl:with-param name="odd_or_even">odd</xsl:with-param>
</xsl:call-template>
<xsl:if test="$is_header = 'true'">
<xsl:value-of select="$ISOnumber"/>
</xsl:if>
</fo:block>
</xsl:otherwise>
</xsl:choose>
</fo:block-container>
</fo:static-content>
</xsl:template>
<xsl:template name="insertHeader1951">
<xsl:param name="is_header"/>
<xsl:param name="odd_or_even"/>
<fo:block-container font-size="{$font-size_header}" font-weight="bold" text-align="right" padding-top="12.5mm" line-height="1.1">
<xsl:call-template name="insertLayoutVersionAttributesTop">
<xsl:with-param name="odd_or_even" select="$odd_or_even"/>
</xsl:call-template>
<fo:block-container margin-left="0mm" margin-right="0mm">
<fo:table table-layout="fixed" width="100%">
<fo:table-column column-width="proportional-column-width(1)"/>
<fo:table-column column-width="proportional-column-width(1)"/>
<fo:table-column column-width="proportional-column-width(1)"/>
<fo:table-body>
<fo:table-row>
<fo:table-cell>
<fo:block> </fo:block>
</fo:table-cell>
<fo:table-cell padding-top="-0.5mm">
<fo:block font-size="9.5pt" font-weight="normal" text-align="center">
<xsl:if test="$revision_date_num >= 19690101">
<xsl:value-of select="$en_dash"/> <fo:page-number/> <xsl:value-of select="$en_dash"/>
</xsl:if>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:if test="$is_header = 'true'">
<xsl:value-of select="$ISOnumber"/>
</xsl:if>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:block-container>
</fo:block-container>
</xsl:template>
<xsl:variable name="font-size_footer_copyright">
<xsl:choose>
<xsl:when test="$layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987' or $layoutVersion = '1989'">8pt</xsl:when>
<xsl:otherwise>9pt</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:template name="insertFooterFirst1972_1998">
<xsl:param name="font-weight" select="'bold'"/>
<fo:static-content flow-name="footer-preface-first_1972-1998" role="artifact">
<fo:block-container display-align="after" height="86mm">
<fo:block line-height="90%" role="SKIP" margin-bottom="9mm">
<xsl:if test="$layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987'">
<xsl:attribute name="margin-bottom">5mm</xsl:attribute>
</xsl:if>
<fo:block font-size="8pt" text-align="justify" role="SKIP">
<xsl:apply-templates select="/iso:iso-standard/iso:boilerplate/iso:copyright-statement"/>
</fo:block>
</fo:block>
<fo:table table-layout="fixed" width="100%">
<fo:table-column column-width="33%"/>
<fo:table-column column-width="33%"/>
<fo:table-column column-width="34%"/>
<fo:table-body>
<fo:table-row>
<fo:table-cell display-align="center" padding-top="0mm" font-size="11pt" font-weight="{$font-weight}">
<xsl:if test="contains($copyrightText, 'IEEE')">
<xsl:attribute name="display-align">before</xsl:attribute>
</xsl:if>
<fo:block><fo:page-number/></fo:block>
</fo:table-cell>
<fo:table-cell display-align="center">
<fo:block font-size="10pt" font-weight="bold" text-align="center">
<xsl:if test="$stage-abbreviation = 'PRF'">
<xsl:value-of select="$proof-text"/>
</xsl:if>
</fo:block>
</fo:table-cell>
<fo:table-cell display-align="center" padding-top="0mm" font-size="{$font-size_footer_copyright}">
<fo:block text-align="right"/>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:block-container>
</fo:static-content>
</xsl:template>
<xsl:template name="insertFooterEven">
<xsl:param name="font-weight" select="'bold'"/>
<xsl:param name="insert_footer_last">true</xsl:param>
<fo:static-content flow-name="footer-even" role="artifact">
<fo:block-container>
<xsl:choose>
<xsl:when test="$layoutVersion = '1951'">
<xsl:call-template name="insertFooter1951"/>
</xsl:when>
<xsl:when test="$layoutVersion = '2024'">
<xsl:call-template name="insertFooter2024">
<xsl:with-param name="font-weight" select="$font-weight"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<fo:table table-layout="fixed" width="100%">
<fo:table-column column-width="33%"/>
<fo:table-column column-width="33%"/>
<fo:table-column column-width="34%"/>
<fo:table-body>
<fo:table-row>
<fo:table-cell display-align="center" padding-top="0mm" font-size="11pt" font-weight="{$font-weight}">
<xsl:if test="contains($copyrightText, 'IEEE')">
<xsl:attribute name="display-align">before</xsl:attribute>
</xsl:if>
<fo:block><fo:page-number/></fo:block>
</fo:table-cell>
<fo:table-cell display-align="center">
<fo:block font-size="10pt" font-weight="bold" text-align="center">
<xsl:if test="$stage-abbreviation = 'PRF'">
<xsl:value-of select="$proof-text"/>
</xsl:if>
</fo:block>
</fo:table-cell>
<fo:table-cell display-align="center" padding-top="0mm" font-size="{$font-size_footer_copyright}">
<fo:block text-align="right">
<xsl:choose>
<xsl:when test="$layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987' or ($layoutVersion = '1989' and $revision_date_num <= 19981231)"/>
<xsl:otherwise><xsl:value-of select="$copyrightText"/></xsl:otherwise>
</xsl:choose>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</xsl:otherwise>
</xsl:choose>
</fo:block-container>
</fo:static-content>
<!-- for layout 1951 only -->
<xsl:if test="$layoutVersion = '1951'">
<fo:static-content flow-name="footer-even-last" role="artifact">
<fo:block-container>
<xsl:call-template name="insertFooter1951">
<xsl:with-param name="insert_footer_last" select="$insert_footer_last"/>
</xsl:call-template>
</fo:block-container>
</fo:static-content>
</xsl:if>
</xsl:template>
<xsl:template name="insertFooterOdd">
<xsl:param name="font-weight" select="'bold'"/>
<fo:static-content flow-name="footer-odd" role="artifact">
<fo:block-container>
<xsl:choose>
<xsl:when test="$layoutVersion = '1951'">
<xsl:call-template name="insertFooter1951"/>
</xsl:when>
<xsl:when test="$layoutVersion = '2024'">
<xsl:call-template name="insertFooter2024">
<xsl:with-param name="font-weight" select="$font-weight"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<fo:table table-layout="fixed" width="100%">
<fo:table-column column-width="33%"/>
<fo:table-column column-width="33%"/>
<fo:table-column column-width="34%"/>
<fo:table-body>
<fo:table-row>
<fo:table-cell display-align="center" padding-top="0mm" font-size="{$font-size_footer_copyright}">
<fo:block>
<xsl:choose>
<xsl:when test="$layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987' or ($layoutVersion = '1989' and $revision_date_num <= 19981231)"/>
<xsl:otherwise><xsl:value-of select="$copyrightText"/></xsl:otherwise>
</xsl:choose>
</fo:block>
</fo:table-cell>
<fo:table-cell display-align="center">
<fo:block font-size="10pt" font-weight="bold" text-align="center">
<xsl:if test="$stage-abbreviation = 'PRF'">
<xsl:value-of select="$proof-text"/>
</xsl:if>
</fo:block>
</fo:table-cell>
<fo:table-cell display-align="center" padding-top="0mm" font-size="11pt" font-weight="{$font-weight}">
<xsl:if test="contains($copyrightText, 'IEEE')">
<xsl:attribute name="display-align">before</xsl:attribute>
</xsl:if>
<fo:block text-align="right"><fo:page-number/></fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</xsl:otherwise>
</xsl:choose>
</fo:block-container>
</fo:static-content>
</xsl:template>
<xsl:template name="insertFooter1951">
<xsl:param name="insert_footer_last">false</xsl:param>
<xsl:attribute name="height"><xsl:value-of select="$marginBottom - 2"/>mm</xsl:attribute>
<xsl:attribute name="display-align">after</xsl:attribute>
<xsl:attribute name="text-align">center</xsl:attribute>
<fo:block-container margin-left="-13mm" margin-right="-13mm">
<fo:block-container margin-left="0mm" margin-right="0mm">
<fo:table table-layout="fixed" width="100%" margin-bottom="5mm">
<fo:table-column column-width="proportional-column-width(35)"/>
<fo:table-column column-width="proportional-column-width(100)"/>
<fo:table-column column-width="proportional-column-width(35)"/>
<fo:table-body>
<fo:table-row>
<fo:table-cell font-size="8pt">
<fo:block line-height="1" margin-top="2mm">
<!-- <xsl:variable name="date_first_printing" select="normalize-space(/iso:iso-standard/iso:metanorma-extension/iso:presentation-metadata/iso:first-printing-date)"/> -->
<xsl:variable name="number_printing" select="normalize-space(/iso:iso-standard/iso:metanorma-extension/iso:presentation-metadata[iso:printing-date][1]/iso:printing-date)"/>
<xsl:variable name="date_printing" select="normalize-space(/iso:iso-standard/iso:metanorma-extension/iso:presentation-metadata[iso:printing-date][last()]/iso:printing-date)"/>
<xsl:if test="$insert_footer_last = 'true' and $date_printing != ''">
<xsl:variable name="date_number_printing">
<xsl:choose>
<xsl:when test="$number_printing != $date_printing">
<!-- <xsl:value-of select="java:replaceAll(java:java.lang.String.new($i18n_date_printing), '%', $number_printing)"/> -->
<xsl:value-of select="/iso:iso-standard/iso:bibdata/iso:ext/iso:date-printing"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$i18n_date_first_printing"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<fo:block><xsl:value-of select="$date_number_printing"/>:</fo:block>
<fo:block>
<!-- Example: December 1965 -->
<xsl:call-template name="convertDate">
<xsl:with-param name="date" select="$date_printing"/>
</xsl:call-template>
</fo:block>
</xsl:if>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block font-size="9.5pt" font-weight="bold">
<xsl:if test="$revision_date_num < 19690101">
<xsl:value-of select="$em_dash"/> <fo:page-number/> <xsl:value-of select="$em_dash"/>
</xsl:if>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block font-size="8.5pt" text-align="right" font-weight="bold">
<xsl:variable name="price_" select="normalize-space(/iso:iso-standard/iso:metanorma-extension/iso:presentation-metadata/iso:price)"/>
<xsl:variable name="price" select="java:replaceAll(java:java.lang.String.new($price_), '-{2}', $em_dash)"/>
<xsl:if test="$insert_footer_last = 'true'">
<xsl:choose>
<xsl:when test="$price != ''">
<!-- Example: Price: Sw. fr. 3.- -->
<xsl:value-of select="concat($i18n_price, ': ', $price)"/>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="font-size">7pt</xsl:attribute>
<xsl:attribute name="font-weight">normal</xsl:attribute>
<xsl:call-template name="insertPriceBasedOn"/>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:block-container>
</fo:block-container>
</xsl:template>
<xsl:template name="insertFooter2024">
<xsl:param name="font-weight" select="'bold'"/>
<xsl:attribute name="text-align">center</xsl:attribute>
<xsl:attribute name="line-height">1.1</xsl:attribute>
<fo:block font-size="9pt">
<!-- <xsl:call-template name="insertInterFont"/> -->
<xsl:value-of select="$copyrightText"/>
</fo:block>
<xsl:if test="$copyrightAbbrIEEE = ''"><fo:block> </fo:block></xsl:if>
<fo:block font-size="11pt" font-weight="{$font-weight}"><fo:page-number/></fo:block>
</xsl:template>
<xsl:template name="insertLayoutVersionAttributesTop">
<xsl:param name="odd_or_even"/>
<xsl:if test="$layoutVersion = '1951'">
<xsl:attribute name="font-family">Arial</xsl:attribute>
<xsl:attribute name="font-size">8pt</xsl:attribute>
<xsl:attribute name="text-align">right</xsl:attribute>
<xsl:attribute name="padding-top">8mm</xsl:attribute>
<xsl:if test="$revision_date_num >= 19690101">
<xsl:attribute name="padding-top">11mm</xsl:attribute>
<xsl:attribute name="font-family">Times New Roman</xsl:attribute>
</xsl:if>
<xsl:if test="$odd_or_even = 'odd'">
<xsl:attribute name="margin-right">16.5mm</xsl:attribute>
<xsl:if test="$revision_date_num >= 19690101">
<xsl:attribute name="margin-left">23.5mm</xsl:attribute>
</xsl:if>
</xsl:if>
<xsl:if test="$odd_or_even = 'even'">
<xsl:attribute name="margin-right">23.5mm</xsl:attribute>
<xsl:if test="$revision_date_num >= 19690101">
<xsl:attribute name="margin-left">16.5mm</xsl:attribute>
</xsl:if>
</xsl:if>
</xsl:if>
<xsl:if test="$layoutVersion = '2024'">
<!-- <xsl:attribute name="font-size">11.5pt</xsl:attribute> -->
<xsl:attribute name="padding-top">12.2mm</xsl:attribute>
<xsl:attribute name="text-align">center</xsl:attribute>
</xsl:if>
</xsl:template>
<xsl:variable name="price_based_on_items">
<xsl:call-template name="split">
<xsl:with-param name="pText" select="$i18n_price_based_on"/>
<xsl:with-param name="sep" select="'%'"/>
<xsl:with-param name="normalize-space">false</xsl:with-param>
</xsl:call-template>
</xsl:variable>
<xsl:template name="insertPriceBasedOn">
<xsl:for-each select="xalan:nodeset($price_based_on_items)/item">
<xsl:value-of select="."/>
<xsl:if test="position() != last()">
<fo:page-number-citation ref-id="lastBlock"/>
</xsl:if>
</xsl:for-each>
</xsl:template>
<xsl:template name="insertLastPage">
<fo:page-sequence master-reference="last-page" force-page-count="no-force">
<xsl:call-template name="insertHeaderEven"/>
<fo:static-content flow-name="last-page-footer" font-size="10pt">
<fo:table table-layout="fixed" width="100%">
<fo:table-column column-width="33%"/>
<fo:table-column column-width="33%"/>
<fo:table-column column-width="34%"/>
<fo:table-body>
<fo:table-row>
<fo:table-cell display-align="center">
<fo:block font-size="{$font-size_footer_copyright}">
<xsl:choose>
<xsl:when test="$layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987' or ($layoutVersion = '1989' and $revision_date_num <= 19981231)"/>
<xsl:otherwise><xsl:value-of select="$copyrightText"/></xsl:otherwise>
</xsl:choose>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block font-size="10pt" font-weight="bold" text-align="center">
<xsl:if test="$stage-abbreviation = 'PRF'">
<xsl:value-of select="$proof-text"/>
</xsl:if>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block> </fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:static-content>
<fo:flow flow-name="xsl-region-body">
<fo:block-container height="252mm" display-align="after">
<xsl:choose>
<xsl:when test="$layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987'">
<xsl:call-template name="insertSingleLine"/>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="insertTripleLine"/>
</xsl:otherwise>
</xsl:choose>
<fo:block-container>
<fo:block font-size="12pt" font-weight="bold" padding-top="3.5mm" padding-bottom="0.5mm">
<xsl:if test="$layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987'">
<xsl:attribute name="font-size">11pt</xsl:attribute>
<xsl:attribute name="padding-top">1mm</xsl:attribute>
<xsl:attribute name="padding-bottom">1mm</xsl:attribute>
</xsl:if>
<xsl:if test="$layoutVersion = '1989'">
<xsl:attribute name="font-size">11pt</xsl:attribute>
<xsl:attribute name="padding-top">5.5mm</xsl:attribute>
<xsl:attribute name="padding-bottom">1mm</xsl:attribute>
<xsl:if test="$revision_date_num <= 19981231">
<xsl:attribute name="padding-top">2mm</xsl:attribute>
<xsl:attribute name="padding-bottom">2mm</xsl:attribute>
</xsl:if>
</xsl:if>
<xsl:if test="$layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987' or ($layoutVersion = '1989' and $revision_date_num <= 19981231)">
<fo:block margin-bottom="6pt">
<xsl:value-of select="$udc"/>
</fo:block>
</xsl:if>
<xsl:for-each select="/iso:iso-standard/iso:bibdata/iso:ext/iso:ics/iso:code">
<xsl:if test="position() = 1"><fo:inline>ICS </fo:inline></xsl:if>
<xsl:value-of select="."/>
<xsl:if test="position() != last()">
<xsl:choose>
<xsl:when test="$layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987' or $layoutVersion = '1989'"><xsl:text>: </xsl:text></xsl:when>
<xsl:otherwise><xsl:text>; </xsl:text></xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:for-each>
<!-- <xsl:choose>
<xsl:when test="$stage-name = 'FDIS'">ICS  01.140.30</xsl:when>
<xsl:when test="$stage-name = 'PRF'">ICS  35.240.63</xsl:when>
<xsl:when test="$stage-name = 'published'">ICS  35.240.30</xsl:when>
<xsl:otherwise>ICS  67.060</xsl:otherwise>
</xsl:choose> -->
</fo:block>
<xsl:if test="/iso:iso-standard/iso:bibdata/iso:keyword">
<fo:block font-size="{$font-size_footer_copyright}" margin-bottom="6pt">
<fo:inline font-weight="bold"><xsl:value-of select="$i18n_descriptors"/>: </fo:inline>
<xsl:call-template name="insertKeywords">
<xsl:with-param name="sorting">no</xsl:with-param>
</xsl:call-template>
</fo:block>
</xsl:if>
<!-- Price based on ... pages -->
<fo:block font-size="{$font-size_footer_copyright}">
<xsl:for-each select="xalan:nodeset($price_based_on_items)/item">
<xsl:value-of select="."/>
<xsl:if test="position() != last()">
<fo:page-number-citation ref-id="lastBlock"/>
</xsl:if>
</xsl:for-each>
</fo:block>
<xsl:if test="$layoutVersion = '1989' and $revision_date_num >= 19990101">
<fo:block> </fo:block>
</xsl:if>
</fo:block-container>
<xsl:choose>
<xsl:when test="$layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987'">
<xsl:call-template name="insertSingleLine"/>
</xsl:when>
<xsl:when test="$layoutVersion = '1989' and $revision_date_num <= 19981231">
<xsl:call-template name="insertTripleLine"/>
</xsl:when>
</xsl:choose>
</fo:block-container>
</fo:flow>
</fo:page-sequence>
</xsl:template> <!-- END: insertLastPage -->
<xsl:template name="insertLastPage_2024">
<fo:page-sequence master-reference="last-page_2024" force-page-count="no-force">
<fo:flow flow-name="xsl-region-body">
<xsl:variable name="fo_last_page">
<fo:table table-layout="fixed" width="100%" margin-bottom="-1mm">
<xsl:call-template name="insertInterFont"/>
<fo:table-column column-width="proportional-column-width(73)"/>
<fo:table-column column-width="proportional-column-width(1.45)"/>
<fo:table-column column-width="proportional-column-width(1.45)"/>
<fo:table-column column-width="proportional-column-width(114.3)"/>
<fo:table-body>
<fo:table-row height="91.8mm">
<fo:table-cell number-columns-spanned="2" border-right="{$cover_page_border}">
<fo:block>
<xsl:call-template name="insertLogoImages2024"/>
</fo:block>
</fo:table-cell>
<fo:table-cell number-columns-spanned="2"><fo:block role="SKIP"><fo:wrapper role="artifact"> </fo:wrapper></fo:block></fo:table-cell>
</fo:table-row>
<fo:table-row height="1.4mm" font-size="0pt">
<fo:table-cell border-bottom="{$cover_page_border}"><fo:block role="SKIP"><fo:wrapper role="artifact"> </fo:wrapper></fo:block></fo:table-cell>
<fo:table-cell number-columns-spanned="2"><fo:block role="SKIP"><fo:wrapper role="artifact"> </fo:wrapper></fo:block></fo:table-cell>
<fo:table-cell border-bottom="{$cover_page_border}"><fo:block role="SKIP"><fo:wrapper role="artifact"> </fo:wrapper></fo:block></fo:table-cell>
</fo:table-row>
<fo:table-row height="2mm" font-size="0pt">
<fo:table-cell number-columns-spanned="4"><fo:block role="SKIP"><fo:wrapper role="artifact"> </fo:wrapper></fo:block></fo:table-cell>
</fo:table-row>
<fo:table-row height="182mm"> <!-- 174 -->
<fo:table-cell number-columns-spanned="2" display-align="after" border-right="{$cover_page_border}">
<fo:block font-size="12pt" font-weight="bold">
<xsl:for-each select="/iso:iso-standard/iso:bibdata/iso:ext/iso:ics/iso:code">
<xsl:if test="position() = 1"><fo:inline>ICS </fo:inline></xsl:if>
<xsl:value-of select="."/>
<xsl:if test="position() != last()"><xsl:text>; </xsl:text></xsl:if>
</xsl:for-each>
</fo:block>
<!-- Price based on ... pages -->
<fo:block font-size="9pt" space-before="2pt">
<fo:block>
<xsl:for-each select="xalan:nodeset($price_based_on_items)/item">
<xsl:value-of select="."/>
<xsl:if test="position() != last()">
<fo:page-number-citation ref-id="lastBlock"/>
</xsl:if>
</xsl:for-each>
</fo:block>
<fo:block margin-top="18pt" margin-bottom="-1mm" line-height="1.1"><xsl:value-of select="$copyrightTextLastPage2024"/></fo:block>
</fo:block>
</fo:table-cell>
<fo:table-cell number-columns-spanned="2" text-align="right" display-align="after">
<fo:block font-size="16pt" font-weight="bold" margin-bottom="1mm" margin-right="1.5mm">
<xsl:if test="$stage >=60">
<xsl:attribute name="color"><xsl:value-of select="$color_red"/></xsl:attribute>
</xsl:if>
<xsl:text>iso.org</xsl:text>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</xsl:variable>
<xsl:apply-templates select="xalan:nodeset($fo_last_page)" mode="set_table_role_skip"/>
</fo:flow>
</fo:page-sequence>
</xsl:template> <!-- END: insertLastPage_2024 -->
<xsl:template name="insertSingleLine">
<fo:block font-size="1.25pt" role="SKIP">
<fo:block role="SKIP"><fo:leader leader-pattern="rule" rule-thickness="1.25pt" leader-length="100%"/></fo:block>
</fo:block>
</xsl:template>
<xsl:template name="insertTripleLine">
<fo:block font-size="1.25pt" role="SKIP">
<fo:block role="SKIP"><fo:leader leader-pattern="rule" rule-thickness="0.75pt" leader-length="100%"/></fo:block>
<fo:block role="SKIP"><fo:leader leader-pattern="rule" rule-thickness="0.75pt" leader-length="100%"/></fo:block>
<fo:block role="SKIP"><fo:leader leader-pattern="rule" rule-thickness="0.75pt" leader-length="100%"/></fo:block>
</fo:block>
</xsl:template>
<xsl:variable name="Image-ISO-Logo">
<xsl:text>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</xsl:text>
</xsl:variable>
<xsl:variable name="Image-ISO-Logo-1987">
<xsl:text>iVBORw0KGgoAAAANSUhEUgAAANoAAADdCAMAAADqxpxRAAADAFBMVEUAAAD////+/v79/f38/Pz7+/v6+vr5+fn4+Pj39/f29vb19fX09PTz8/Py8vLx8fHw8PDv7+/u7u7t7e3s7Ozr6+vq6urp6eno6Ojn5+fm5ubl5eXk5OTj4+Pi4uLh4eHg4ODf39/e3t7d3d3c3Nzb29va2trZ2dnY2NjX19fW1tbV1dXU1NTT09PS0tLR0dHQ0NDPz8/Ozs7MzMzLy8vKysrJycnIyMjHx8fGxsbFxcXExMTDw8PCwsLBwcHAwMC/v7++vr69vb28vLy7u7u6urq5ubm4uLi3t7e2tra1tbW0tLSzs7OysrKxsbGwsLCvr6+urq6tra2srKyrq6uqqqqpqamoqKinp6empqalpaWkpKSjo6OioqKhoaGgoKCfn5+enp6dnZ2cnJybm5uampqZmZmYmJiXl5eWlpaVlZWUlJSSkpKRkZGQkJCPj4+Ojo6NjY2MjIyLi4uKioqJiYmIiIiHh4eGhoaFhYWEhISDg4OCgoKBgYGAgIB/f39+fn59fX18fHx7e3t6enp5eXl4eHh3d3d2dnZ1dXV0dHRzc3NycnJxcXFwcHBvb29ubm5tbW1sbGxra2tqamppaWloaGhnZ2dmZmZlZWVkZGRjY2NiYmJhYWFgYGBeXl5dXV1cXFxbW1taWlpZWVlYWFhXV1dWVlZVVVVUVFRTU1NSUlJRUVFQUFBPT09OTk5NTU1MTExLS0tKSkpJSUlISEhHR0dGRkZFRUVERERDQ0NCQkJBQUFAQEA/Pz8+Pj49PT08PDw7Ozs6Ojo5OTk4ODg3Nzc2NjY1NTU0NDQzMzMyMjIxMTEwMDAvLy8uLi4tLS0sLCwrKysqKiopKSkoKCgnJycmJiYlJSUkJCQjIyMiIiIhISEgICAfHx8eHh4dHR0cHBwbGxsaGhoZGRkYGBgXFxcWFhYVFRUUFBQTExMSEhIREREQEBAPDw8ODg4NDQ0MDAwLCwsKCgoJCQkICAgHBwcGBgYFBQUEBAQDAwMCAgIBAQEAAAAAAAAAAADJRZoKAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAgAElEQVR4nO1deWAVRZqvJkHDwiMwggiCB0IMjhwuiAIOISOouK4R8IiZ0R0uBVyFGHEdQRAcR8wG3VlB5ZjRmRAdOdcRFZ1HGEEudzh0IBMQD26JR3xggoT8sfXV1XV293sJ6Lr7+yPprq7urt/rrqpff/XVV8j7wQJZU3tW7vS8FQODT11fWXnzxMo5XofKyrNWVN7sFVR+rzAdeenoO8TQhYGH222h/z/1vMPBF6rzPJx36niE9jJCc5HXJP87RIe+gYebXUf/3+h5w4IvdJvn4byXdsV5GaE+9hfyB4H/C9SyCmy4vBP8beYN6tLTevx7jMtxXcsleMpaO5dPgb/Dcjc++WIyrcO+993H1ia2HUDoyHtkZ1v8Y3FgZxzjXZwhTiFtSsCpaDNsvI9qacpH+8xcGBNxC1nR+HhksPvYWcsH/qqi4pmeZGegd584MAJenvYVFW3YeyRtSsCpFZfAxtUV5TTl3mkhL+QPD/9P7fRgTGI1/Hs3cefURBlPxJt9KvjODfQlXJLAYO+jN+Up+Rq9RV5c1xpZ4HRLldivKg+jGrhCLTr0OUrw6+HNT0/wnf0kQ+VRaHZqeIav5NuLvKbQmpzzAnon5xayPesFkfqan2NWzmy6MSqHpB7OyfkSUp/6Sw4g5iz7TeUUV9gPZ+c0KrIModXB65H/E6852b6oh00QXeRl0Y3WXl9fBeHUq8zi3l0mYTP7bcpFygWpPuEoOGV1rXUJIKB/A7wIeUaeohKcEmpXFRUVPaZwmFOs4i3p2Ps4d1Fz/RpdiwTyOhQFoId3Gd1o513L09pRak0aqmhuUss0tKBgmSj2+lKKTK3gg1n6fp5xHL5QdznHTT73zVODnvy8gt/SjYcKVvO0h6jQSosf3xQ/AAm1+NCmKrSHChWSuo/Jmc/x4SM0/XOegeMlvzwZWLHt9u+6KT405Pk+IQkttDA3t7f/5K3qKQlMhBdyXTfvMVA6q7Hm6javYjy9NknFiol0NfPw4Wdousigo3V29iD1B+0VQgyj/VzljG3Z2eHnRETj1bWMQlq6o9XVtayg/ZuGndT8RZb16+rqb8lGXWZmeuMUqPGozfQfFd9EYe+jt5LnxBV/Ad++rHEKxKjNSWBl0ymROJtqmAj4SrnMu4nEcVyovbFYLE2iVpOYHHTzPYk6iVpGLJZPto8l5NOmRiyQjqeY0KpGWNnsQehDqmEi4IR/83TQRgiVZmV1JvuPf+5nq6qc4+DVobKyzs/3IflQiWVldaOnTRf52kyLWCIVT7fDjX9qOkZY8i4pXwOXmpWTRfcXlh/EuztyiPzCOALaqrXGK6+8fD0twoKcnHHw/73y68kRXJxdeHd/+bM877kple+CBte1IWWroGAPYqFF8TwQWpU/xAP5tZX/hkvLVDDN9WB+/qX4ueQXwM7GYewS1+VDB1VVVtqwojWM2m0lb+NCnCwsPJslpJUcwwkrf8p2hxWuCnppHhGnFSbw7roR/LrXFC7G+/UlJec2oHBAbUK74UFKRkNn/+QRG3EBDhTP4vsdiibjhMXFV/tZrnvLSexksfSRMK0Y1/R1eWK/f/EfIM9srKMY7kyijIDBILSqH9rqvL8J0aAPL4DT9j4qitPpETj+mtJR9/wd/PxEVDGpvAS2NwG1gmZyzslYxmyWVFuX0kWQfR6XX4/DFfa+cYykbiBXxJsryXWr8OaSUhUjQWglh770Tk1yoVLtic8QZemIpV59PN5FeSugH6h9m2yO+juwjJMWJY/wbKdkfSCOMxwe5CfgkiVAfgltOTI+s9vLpLzX8wxdITU+F2/+yNOQYl27Akqm6igg8ameD0z6G/jOBCT1GZYrME2sEoaOfGNKZUyNWtOfGgVr9iQWSX/TM2JqJ/7Md8Kp3QC9ahdFaD2Du8z33F/uAUiNGv3iUAqmPB85dZnYCafm9YVUVWhZ34YowGokqnIRNiZvbA0uI5FUAkuxuP2vf9CvDqkOaukgO44N0U5Iz4bUa+SkMyfiGgoSkKJjMkIratPIy/h45WHc5GcpRVqB36RSoxPSUhVqXtNuyKKfSeq+m+WkVuPh7lSJ4QxZEZGM0LqUXnsW6CjtFVmOW7IFKlkAdA6ShFSpeU3x7vbr9XOa5HyBUMWdchJ9/d9zGMKcSLquPUE+yNGxP4iUNmVl+AV97lIjK2iul/v4+xq1JvlYlI8y7zAMf3hvl9KH/IW+NeW5yZXURq1/yX1YMcngLxVO/Yy9nidLWLN1/jylZ5UAY7RTpH1M7cuJWoY39dqG8fMdCG0dyfeue5vXCD/vmJJwjMAvpCFRlqBPiGLywVqyliT1DWaPmk40V9ffwPYLps04rQi/pW8MVqmp7/E0zO31wZ6B0dsRev9nZHN4EblZfXHxYelqK5GKg8+ZTcNcrEZKw0FNoW3+FU5ZPcgbXPoGOXtWQUEBsSQvPt8sH1SleI6cYlDTK6PAWCxWdhfczrQc1lG/B6G1G71VcC05/oBWvhlnmWUemURdawst1VoqtC6Jr/Z/HyaeVGRcbTSAE1QdhTH/czs1KspO5n4Bl9+HdRRB0UdJCZPo1Frfg0lUnMV30yv4N/K3H9iyn4ds1L7V9Ap+sxZ1tJ0+XvxwR/yRwXsPJWPyYtSaZTogemEwWJ38Qj71Q8Ztb0vLddMvwUeOqm3EmG8MWbFY6dN9ZExixI5Vy9aV0d+AyasJ2W7qKjJDM0ZNWJN0iPta9A7/FDrhmXCoX5t+tlFz2cQk/XyTWVitGaHC5VtXhhOr6TXnHMdfU5phvjn/hE4kengagNqFaWoa1mc2avwWPpYQ85iNWtMceBl6ks2YBROxlGbIQGHC5Txyyfm4d33rPK0EK3zr1yeVijbyhnyK9K8TWwvpeefMMVT1etmqpmouXHMGoiBDZassv5ARmxFc3ZcZcgNeyGUPszJUlMu9seXDy04NXr2v/+jvtisvZ2/Qjpxc+Dday5+RG1VzRaOG1ZWsmCieIzqqU37+z2hZKsvK/pMdGvIOru75GdoJLmoidUhZ2Qp6rZfz84dgJfaVZOfigNRImotSG4t1CR/t8yEUxqOfoZf0H4rYrmhqWmFh4U5Soq+pKBv6trVxsVLrv5icFoMycEk1r5Ddbdx+2c7FMW6fr7nuDxNauGDriopEs6RWYaKYDBkLYmNxX7E7ppiZTFFJEdVGEakR0QyqbSe/7ZxiX7VN2oObOuOULb7mmlS8nfymxQaGBwkt2nY3/zki6koFpK5UGvdbSpn8YqhTDVaURNXtWtoVfOCPokofZnwAqyvD5fRx/DBF6lgo6m/Mnyy8rmXeiu+4qa8ldW0XPa8iv8C1K7eDdLTzU+qzJM5hkmcDDEmaTwj3uO/01hN/fcDeHSoIoxYDN4tduq6P3WppAAHg8CUPiPwy2wcZJKzz93+svv577UOSj1XZhCNOfZu7L7TNtuIcTM2uU9h50IpXn61f2Z7KsMTZ/wfhqOXDjWBKjc2i9bCfOsN+wbku20idT8Kio+ypHMH+xA64u+Hx1tbHT3VT82Kf9XsTzdAlCz0Na6O95k9mT1WobYZrbA/j04/calAotfqvAlLPtCkuEFr42EUZHbPOMs4FTDxs+8XsqQILsChbRfTO+UysddMYPcRVHO3Uw8TTeP8lCkuVEdyM4J5ux5URUwVMUUaNZi+SFx222mtnwLddgHhqOw7Vlxsm/bZ321IlKNTSNK+puz5Am83abU8VAJOX9cu5B35Rq26zHWkOQ4cBQ/pgU15q+HNB6jl0s0uZiVH2ZoS2tmBcsfQejk8sDpe9w6VGAOnB1MhjNd9YP7XvXs87pDAYDU8tzdQoxfdyalt+YVxwxEa05V+Cqb2jS9oo1BYY33wqidmd3annTYHBRxl9g+vaSrRtpDXV5OtjxCeq8VGCm1paaY35+SKhzSLbYz0LUg3zs0AAtcs32spoT/Wh21UluKmR0wKokcf6YAc9NS1+HP2blNot92Lyf0AuuJpjarpCYR7oXXday7gVHXT4aIkyujKEUHvY4vrOQexnFu6HRCqU/BW0iDCoQncRoWU0I1PEzdBMXbx7LbfbzPQ+Mo9Y7fgEQdR21zkftshwj/5t62V+hlhqejWgFp2o5pgdTM1s6g67Sw6Ar7iUqME3WCA1WwZa9Kl+wgy03N8BoaXhTHJWoh5O+7ZMu9phNOyMgPufTmq9EwlC7bjvDH9mTHrNXM0If5aJyjVyamVdsLccUButu6xyNJia5LnleYM/5a+Z+ZFH4KDWbg34uueA23ut5GHVNKRrDc4QRu2jSUGX7r1BJjGq/ANgdVPOeoT2P0bTZpXLmITaqPKEyRncG94NhLLyYSrU0jLa6bd5ydYES4AMKVK7bovz52dYKTL8uqwME9sN0xK9nDjiFUz+YoePmpZF/p5wtoLhQPYR3b4QMiwtGcIGCQOdbsnFUqMmldyBYRvIgCIbvlxXWECTr1nFqQ0rlHG1IrSEsxUoT2EfSCPDdq8XFcEg4ZxAhzAYW7SMIkalJvlo2bCAOM4/AA/hjeLhInkG+uBntuzWutZpKqpXDEswbEcxLugzgqg692MNpRZiyhFjLitLZQPbzZvso25WajeZX3nEgQowxv7RSpB5WwOoPRFmpepJ61I9ccySMR7t7E+3Ouf6uBg1VUQW8SFqfQ86Ybgkebfvo9zGZjsFEQzPGNavqNTgobip4bIRZ1lbyWAyNt2SzSRzUUemS2pQHf57NstqK4IY0JqZmdnCev8rkN2ExxBO7VXrdZtmZv5IlNhyhdHfcGoPV1fLQothvP/ChlFDNm8sQIOp2SuNMkhou0Iep6ZAUDsjJsZ27dTAMQuhztRKVbfTVoaGUcuYhV41vLwwxtRQUsNhZFAfviTIs5m8bM3IxMNoq/FFS8xYGB+ymRcndlhu0SwrK4vUVjnSg6+wW3FveQfaZOk9y3q4AI9+MFQdGZSQJzV7PeEU4s+F2vnShI3gzYT3Ir1cw8dIRT1Lf0y/z0KcWClltDjDT7acppeWXPy4fMftWDzZM7e9m1PLK/9vyPoeEVrnGa/xTLR5CFFMkbB3pnyTtLKyL225lpaVQVfUlaq5D/Fp8N+lox/0Zyiq2FVW9ozthL6ovqwVbHT1J0f2QS19aTKWZLttA26Dz7Ne2Qq5RWltn5NP8GbJiO6L1CRbvQTnsD0BtyPDjDrazxB2Ox9mXSPdS0rUumpTDXWs+52WMN0YEelAdVQwphcZVbYTTtV/qEakljU7+kkMunLpFDi/0MeT+tAepmYYKkV4Bz7jD8uZfTNTodb56aSZadQ6506JemIxs10Z1NpKQsu3jQiT8VwvBWra9MFoUKgldwXVtat9BaN2dUVFBdpViw5WTEPMFoQRZ9RqS1KgJqYPJgWJWovMJK/wp0y5OcEPaACb45hW3W5t9Z2WuraSmCiSpqY7X0aDRG1L8mfL0gbePc2Q/H2hFhJwyQ7pyysCtRVHU6K2IupkRRWcWro8ATEJVPrfV1lVjFp7Ed6BC61J4r1IhVoyU6kkMGrt1qR2utRPp2FRRql1YofmCqE1l1N7/tLkqT1vVVfhoNS6rkjtbIxlfEARPLcoteaG0LqaUyPuT0lSS6mmIE7tihTPBvz+Ev7cDqGl6pixXte2UO+n00mt63+keDaBaDsO6UM5GrXhH9PjbRaFX5Ri76Mwb9F6aDF19XrDepCAUAvztA2GoDb3C0atCY+jlUFlyYX0uBjBS2dzDF0BQ2r5JMQZkPe4NQP7SLsE57Jk4NQ6BqurnR8FUxNDhwN28aLTA3NRexrEajyntld1Pxysf4IyyN1lk+zPgzN43roKa+8A1Ca4i02ia7FAW87egb+F62rZZho9YZr2Qh5GI7QxJnsdr5PtB01tOXQX+cUi6ENEanXViuv97uoT9nxiQHGLNrZoUNOHVe3UFIuWlZrpxKV7koZQM4xbLsHDhw63KKOIFmr6yKDjqckWLTs1lEgkFM+ZMycZWTC1qZaHCTCNW81esOcMpja/cgL8s40MOjodpa5hkWPHPtWiZTygXtZnSWAxJDvmWejU0hSh9TkdkbQ53bS8JZRaenmQB+SR8nI+x7ftuFNLbRbRJjBvcTLE0WK6hPiLwTxAY3TM3nsrTy3f3q8J1IP5apDlFXBTW/UTk1rfpdasfIbiFuE4f1M+9Aiq+1nJMYManVQYSC2aGnmzpKREEwKPnA32Myuso4iOn4Hl/fmOgGbE9kJGqGupCa2viyG8g8vjNQVqd+4MprZSNzJFovbsF8mQWl3q+683IjXejGhCqwOnNkYfPItELbnvNXmkPylqI/9uzbuC+uTNq2ItJJF1eyYyoTWCU0vthfSWJ/WV/cts8QmZFLW20+2Z6TD9hWv4C7kWM5rQSHUtadvIfN4hO6jVzrZRc7yQxxfBwdi2IDVy+qiJbstBze74E1jXwIs1mFoNmYXo66iI1FwqyAU+1dBB7fhTngUOat+SItdzauk8vEMHokpuFtT0kkeklvS8hZo1gacl00L6mCqx4GYf5SMOpUIt+8VkiCH4Vj1F1Fi8Ci60LvKpPc+CkCZJjfi6J4UTjUVtFaHwFQqra3qchsjUvF6FyY3VkAARDmqvX21e30mNhoIYt89CbQIfdGtAC0lw/vNJcYNRURc1S9AH9wtJ+zWhRkiMin6eUdeiUbP7jcBXQrtkhEmvxhRa3mvaUzub2KWGNpDa5dQudhtCw3ZbTzgN1PpsCK5rH+kTMyNR67pTOrYXy5x90ajltTgF8thFbYAeYzQKtczP5GPw3G+Ascj6cG7OZUFs1JrNahC1VF5IzewjrhDhKy4paq4YFC5qNLwDi4AU+6wxqbWIxWKOH5qhX3pG8JNIjtoE5sfPhBZtIQ8ladGqkV3kNWr7KqWJJ22ysm52U/tkoKv+fGWZJ+ag9nQ7To2y8HgcrQwe39NLuV8z7JCqbm8pYpeaGOrsq44862mgAbxMRDKx2ixadmq7bpSyGNTMuWHD8u3D8EPd+qxK9cZ6ruyAI6NP7XllHqdhPdbG3xzUDsq/j2k93lpyn0Fuo52aezjjaz+AV+sSEgjVipfZtNVHDwub/qMlJZgFakljZ13JqS1WYwK4xvW+LAyihmvRXTo369MJogaYTUsXJPk5n2mMGiaUQOiPRYP5WLaY/jSLuj/xePFOv6uTLMNAh82/Ch+THOeHFqy2ZAL72eCUx+hVanzUk4fUGsmEVvwOTo0eJ1GwImGZczgDoTEgvrrr8eIlNMKo6DY+LBo24MvH36KPZb91gZsazaDHi5dAqLlGJ6Mh8lh2y+10/C2pYfpgakFouAfCUR4mM5O/cGlaHC0OPon1fw017gRJDASEmu8SwwOAUhNSi+1UrZweap1poC0SpTQV1PlBU4Ha8DNUajyOlqpWTg81/nXfVI//EBFW9zNByHSJOW0vZF2OGFsmUUqTxuGBNmquZuR0UlPG8Ycl30zulsQeOO//mzYfEongWSPJ/h07SeCq00BNjV0KN04KYtYhQcv7WYvSXYqjJUgwK3wKvscpUTvwsPa+jBaRuKJg7XDl5JYPMGqXSnG02vCoWZMkajQ0aTSkRk0KKC9wy6aoZ68u1db9sTvDa8DUlnfvm0QhU6K2b4bJzPPy4u9FOXltXI8oQ8J6aXMRTWrzvsLv5immdrDiERszjJ5B3lgMlhUQRcCY1nIcrTQROYvN+IPZGb0TSVHTbFc11dXfBJ1x7A4HMQqnNxbGiWrVc0un5odwlRx0hVNUKhNPVNvVqBA1H31hHgOOyaR2ak1aNYwaCQcPtqsYc8HqFzuDRBNtZc1+AmcMXRipWYyvxqNgQkyO3iDhhm+w5iLBZ89Q42ipoUkhhGjiFTOM6RztPnUs3Z8o2CrrZkjljntN4Ogr2llaQPkAxOjly/1zx2R6BZWv2PLmWUNqWSZUzkx1NmpwuLfQNQcck5c144F9GmxEaj0W6tYkAh6gHbA5/0YzA1Crd84kTJlaj/x8yYV3t+XGuGQ0PtddahwtOUppMc06Hn0y1ryAb55ZWWgj5ogt62PA4kBqEFfc0UrQEBMEiinN4+Vlk5cVGyxtIV+gMxi/niWoGfYob8ASdsriYuuwHkZ3WDVnmiu2IrlCqjEQaIgJwJfGuoj4ugep1eoWNWApCK0LHiiVo34OXmMEFh0k1i98zR3jgHwu24LEU4S8kGHhHR4X6yKOV0NMzHC0DZHCOwzIFfZRM0qpBKA2zBldEaK9B1PbN9N9WKz/AG2lEgg1iFpXqkz8eHeDP0Z12bz3aQpxqRA6UlEBn1T9jYBPEnqCSS7FyBUXrgkLpdIJ9yQJmFSI8XB2Np912B53VmRG+YV6wFIstNjA32ZQW5SQH0qlaSaEeEfHqh/wvD6JwJJ79FvIvcBhWGwfmO4YgJXUGyu9upqozD9RYdj8Beaj5a0FfXbiKEI8vIOmOy7TqLHObKgoeSi11MMWBUdkkiLk0KER+ha+Jg/T46+WvqIuoSZqEK00Qe1oD1hnkMZ0YNoISm6smqNT6+fUUWHU7I5ZHO/WoRmsNjSPgUfYSVhvcV2dTw30WbM0HmvVEWyKhBD9BBZ0Bm2UJaqdddUcCUDtEyMCM0cYtacCol5oj/WcLLICIl1kMbk4WuI1fSdHDk0aFkcr46epvpCwiE/gC7kswXzdGc7NuZsVcSHo0rTy8vIrvVF+OIo7PT2OFnVapyFEIUC76pMOY4vlgzw3gLsrw62bgyMNPm8u4qNm0KbEtLmHUhPudOVlH/iNxvZRejOiONkZ4eAbFI4voMsmYeaD4kNaM4AZiw8dNinUcTVqrQcrpUOHacXHrGWc9pkYhrQWwXEaAJY9dFErDqEGv/QSPdC5I5XDHdVz7hfW1ZC2htQJeLMspwHcdQ3mLRrB5yWQ6PRGHSapKQUstZOYX4UWXmwmC7gDlkL8Bwe1KBF0Nxm1w0/NzDWhx9GioBpm+VH0tBGfJGDVHIp1tS5q9x1yUWv642BqzXJs8bkgVZIYGo5MQx2ryTrQCqhwgfVx5pshklyr5nBstcU5BcAiPnZqwSJGC6GnpLJVZHpXG5jskaAcrvje9uDNqYZ0dreQqVOzvFUCJGBpmuOgnUTGLMuqOT5c1GARH2u8qzB9JhmswlMlBDQjzLhlJs/UfLRUnL9GpTaEhVugc9zqeXgt6bq99qCgyPAF+21WHXuqDAQSRbKWLygvvyNPDqklr4/DcOHssG9KuiT0cqJ4PjBqOMHXVA/htvuqv+LdPPf6AOPVQUKKUZUiVVJXWsDSlxB63ZdZX2KJslksZQgOVNKqhhwTrKkSNVgSmqyAGIqNZWV/gf9m4HeOWzbbzFgzfOOWtgpDFWjEJ7Q4WjLYuF6v30qrGgrYUxnut05///dCboN4pHAnWrnYyPCiI/jibett9oFbpdT+asnHguaCaFSBdc1jViqjdbKnEv+oov1SeRcL+XYuKQ2dajimeHB/kqi4lC0oKrKZyhbgLu1ePXH4RluqhjBqxJRjRim1pnYqkEcc68UiPgwwMqhNViwVS00T8KUMJQxajSqNSHVDcStspuqQ4mgZIONYl7yLLFFKzdRuublKfK/at/Rb2YWWavfegW97pnT08g22L80tMKmQbA1wFh4LrYAxGdaJ2j9UlFRpEKqd5+qcw1Il2y//CLAJ0nQ5g2QbOUSUcp5fL0XAUguYFSQdRgaNqOyEGkn1bWLoZHV1W4+smmNZAdFJjcWKeMYfcbwnk0g1uG7NZO0Ejdri6mo6Q3F3Nbhr/VPcp2bcywLbj0dHeTUfE15ybUnbEGq++7k/GDTXJGGn5kYkai22I3Rcn71JVtg5PvufE7ydmxeLcWt8dGogv3xq/ojjt4nVHcHsacShJ6nDg6LTc0SiZognClCLX/G2/qEsqTOAQA7RqC001lDMytpBLlizR6rvAj0h9UZiXe1ZGYjpcsBSG1hg0ZV+/HWVGkWevqwODLVpUUqt1MDB3VDgvXP8QOgaNSLKbqJiIcRNgg3TPwGOwbvyC1jq5nxiLMJqhVu0clbroUklauaqhl4nGO3T+nRQbZaJwcGBHFRqMHx5Mp99DbbJDwQTWp2vwX9uF2ahGz2aKl30mlXasJ2/vrTmbEUBffqzWkBc0zZy/x7Ht11/rsRISHoOWF/aejcrotU1j9qjpGG7lv6q07JfvACZgKiND1hXXtacrRjEQCVCbxTxePHX4iIcCBkYkOBT63Rt89uxhjnX61kgQ0gf6rRO1RWXVOtLwa3KXNXQo13CQ+pjM6gN/9hhR7kCBiqPlZbSb4fNtAyDoFLMoJsFoeju8ThaublTdtxal5u768HcF5Xa6Eufq+JMXXVmkmpTfKiXRzSgZbyw3Wq9pphCC/eXO22ePxAD/kj8Zc9bGiehdXbmDsKSaoM/tvhr1yQUQH08ngCbMo+jFQjuFNUBhu3GZrPAotTGRF3Z88y459Cnj20lJegWrSYwJGkzx8Io4pfMB2JeBSFXR4cvxfrSjwWU9m+et8wI7xCKdOGNdbKar3VIBhQtnSjx3Jogt53qC5kG0d5t7lottyvhHaaIL1pDcwUjOWq+EJbKSIWW5efX9dkE8zSbGUs/TfhdRVFXEpKl1oJGhpcDtFMvr1rzJ9XKCBGzwqmRtX8myB82jBrx/QKhFRE8vEMEsOVvzicNpWLRonG0qqZ5Gi7aqaTONB/2jUYV7QCR18coLkOU2pX01e4ZFKRbwdyg7zUVvGvtQVRQ7Z/lu/fbhWxKDFbN8XtkldolYE8wBsZJ6mjlwxdsV+gkd5xvmRMVIo5WOMSi0n3zYSqa6o11HYguQ4mBjqoUHbpCrQ+skH63pjItqQ/SxXasSySGINm6RtCLLCms6KhhhbhUB3QHKsWDR/HRsvlzXVeyApYBkv2UQImh9wu8VJASNa97MeiokiJ5eUJNiRGM2Q6r5jCHL9lH67LfYRLFakcPOkr4iR6uR3oAAARJSURBVAGaUPMYX29xeFFSGIyah2sWBcyMRSOaKmOLshLjAHc54vB1fQHx8oK5iAXnkpWkj72oEKPTEqv81aHbFMDIINpQOpJlSDIA8Vx0Np/oeIToKBV7IGApFS4cIgozSV3IA8oDriKu7KoDFTFY1amzDh8k9uXDyijoAGiI9kmLSrclDeOmuBj1nB9PDhMRWQca8Ixnaq7x3mAiXJb7SZKRlwbP2uY7pPWkDlS/9L3Vg6K9+25gVHNJOsprm02+GAPW8wlHanWNgQYh3Stcu5i6QjMz6YijEu29hprJZHIXZRJ/rnS6wk7NA+wiLTIzIXyAr+VSQ4Oo+QZSPQ46bRaV2kGVmC1eApt1KHQUm50e5MwbBWTWIW3o+gTqlsneDfIuC7R1JnNaP5bgOrdFDPqmE6s74UwnaRn3Eu8v1udSV7CJ/FHCtYj1kekoCM5ATnuVm8emRlVWhtAiblVESX3qrhYYVZXyOIX/k8ayBpKEQ5W8pnQED/gaLohKrevutMpip1EIH/qelXSJm6d8J/s20+wFeostVv1LcNc6SDzn/wh3+wn+mZTwDslCcovJYNEb9vMRRymk1qwcp2M/Pk1MNaTDm6PLy/9KdifnqN5YVlzKIma1hwy0OBfD3fB1qbhuYF1jGJafT/qQYzD62EvUwAdZfC73aaxaYdX2RBn1sDqJNV3QcorR0TjUKNSJNEGzGXyokRF0k+Rh9wh3OHh4h9ThrzNIBhQFTupO6zaMkONZrC3+hThwGbl2YnbKxRJxtBoAKRZOF3Cp9+fqjiNxQ12siMLzu4eVpcpMwsGlbtSg1btR5Rp0bBE5zY5hPI5WA6CbSEEQSYFFl0ujed1lX6pbRZZquEyQk72GJfEriuITB8RfTjOWPZTRmHXNR0FFhS1UxVtmeOiDWLuZ7huNglNDDaMTkVXuMNZ1VHfJFq0MrNjwd05LNgtS2szEn70tmpIMdLMZzJKkEybPyMhsnp6poemppEbhDqxoiXrHPsMlo5kYSMYd3xYW4ohsknURWbi9GeABrwG+F1BkC1FEqIo2Q1+xWsBw2VuaIE5cNPIoUjchzPzJmsRxsQlvw0k6Zll7HJ0wpqbW+HG0glDnDPw+Oitr+ioQNVV4cw5CW7N8x/mk0dGY6NgwRBFaA71+jiNnYRVE3Lz74c0Lc3L+MVVapwSnuK59l4BZh7H7S0qGSIERfhAYQtTI9P0wQKcvRHi6sTip8A5ufF1C/k31/PAO3zV6ebc0ynV+k0b+DftB17Xv5rathTt923Ni2Vg/ds3w2oMXvuGb36ptdvYFJNUf+riwRXtxHG+e4zWD9bBh1iHdzCaf7FJ4h9OJwlf51pPzbweb2GcDwPr1Kp3jKOOeWQi9R1JHiLO3j/AjmuPNBZm5eKPLNvyHbqIBmRBHq8EfNd9XRByE6hd7Ac3LB9MUn1eq66ZVaEYsNkjkdeqr04eM/wGvNLWQwIO90gAAAABJRU5ErkJggg==</xsl:text>
</xsl:variable>
<xsl:variable name="Image-ISO-Logo-SVG">
<xsl:variable name="logo_color">
<xsl:choose>
<xsl:when test="$stage >=60"><xsl:value-of select="$color_red"/></xsl:when>
<xsl:otherwise>rgb(88,88,90)</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<svg xmlns="http://www.w3.org/2000/svg" id="Layer_1" data-name="Layer 1" viewBox="0 0 54.9 54.9">
<defs>
<style>
.cls-1 {
fill: <xsl:value-of select="$logo_color"/>; <!-- #ed1c24 -->
}
.cls-1, .cls-2, .cls-3 {
stroke-width: 0px;
}
.cls-2 {
fill: none;
}
.cls-3 {
fill: #fff;
}
.cls-4 {
clip-path: url(#clippath);
}
</style>
<clipPath id="clippath">
<rect class="cls-2" width="54.9" height="54.9"/>
</clipPath>
</defs>
<rect class="cls-1" width="54.9" height="54.9"/>
<g class="cls-4">
<path class="cls-3" d="m42.26,37.75c-.88,1.26-1.92,2.4-3.09,3.4-1.79-.5-3.82-.88-5.96-1.12.24-.72.46-1.48.65-2.28h-1.18c-.2.77-.41,1.49-.65,2.16-1.52-.14-3.1-.21-4.68-.21s-3.01.06-4.45.18c-.23-.66-.44-1.37-.64-2.13h-1.18c.19.78.41,1.53.64,2.24-2.15.23-4.18.61-6.01,1.11-1.14-.98-2.16-2.11-3.03-3.35h-1.39c3.42,5.34,9.39,8.88,16.17,8.88s12.76-3.54,16.18-8.88h-1.39Zm-25.38,4.25c1.61-.39,3.4-.69,5.27-.89.71,1.81,1.63,3.29,2.55,4.23-2.85-.46-5.58-1.69-7.82-3.34m10.6,3.57c-1.45,0-2.95-1.71-4.13-4.56,1.31-.1,2.66-.16,4.01-.16,1.44,0,2.86.06,4.24.18-1.18,2.84-2.68,4.54-4.12,4.54m2.77-.23c.91-.93,1.84-2.41,2.54-4.2,1.86.2,3.62.51,5.22.91-2.23,1.62-4.93,2.84-7.76,3.3"/>
<path class="cls-3" d="m27.47,8.27c-6.78,0-12.75,3.54-16.18,8.88h1.39c.88-1.26,1.92-2.4,3.09-3.4,1.79.5,3.82.88,5.97,1.13-.24.72-.46,1.48-.65,2.27h1.18c.2-.77.41-1.49.65-2.15,1.52.14,3.09.21,4.68.21s3.01-.06,4.45-.19c.23.66.44,1.37.64,2.13h1.18c-.19-.78-.41-1.53-.64-2.24,2.15-.24,4.18-.61,6.01-1.11,1.14.98,2.16,2.11,3.03,3.35h1.39c-3.42-5.34-9.39-8.88-16.18-8.88m-5.31,5.5c-1.86-.2-3.62-.51-5.22-.9,2.23-1.63,4.93-2.84,7.76-3.3-.91.93-1.84,2.41-2.54,4.2m5.43.29c-1.44,0-2.86-.06-4.24-.18,1.18-2.84,2.68-4.54,4.12-4.54s2.95,1.71,4.13,4.56c-1.31.1-2.66.16-4.01.16m5.2-.27c-.71-1.81-1.63-3.29-2.55-4.23,2.85.46,5.58,1.7,7.82,3.34-1.61.39-3.4.69-5.27.88"/>
<path class="cls-3" d="m23.78,32.46c2.08,0,2.93-.47,2.93-1.32,0-2.75-10.6.45-10.6-6.91,0-3.74,3.17-5.43,7.79-5.43,1.12,0,2.24.12,3.72.29h4.01v5h-4.01v-1.06c-.59-.31-1.99-.65-3.44-.65-1.87,0-2.6.55-2.6,1.26,0,2.93,10.7-.43,10.7,6.89,0,3.03-2.03,5.51-8.1,5.51-1.12,0-2.46-.12-3.94-.3h-4.01v-5h4.01v1.06c.59.31,1.97.65,3.54.65"/>
<polygon class="cls-3" points="4.3 31.65 7 31.65 7 23.26 4.3 23.26 4.3 19.13 15.03 19.13 15.03 23.26 12.33 23.26 12.33 31.65 15.03 31.65 15.03 35.78 4.3 35.78 4.3 31.65"/>
<path class="cls-3" d="m42.1,18.8c-5.31,0-9.11,3.09-9.11,8.62s3.8,8.62,9.11,8.62,9.11-3.09,9.11-8.62-3.8-8.62-9.11-8.62m-.05,13.32c-2.1,0-3.43-1.34-3.43-4.7s1.33-4.7,3.43-4.7,3.43,1.34,3.43,4.7-1.33,4.7-3.43,4.7"/>
</g>
</svg>
</xsl:variable>
<xsl:variable name="Image-ISO-Logo-1951-SVG">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" id="Layer_1" x="0px" y="0px" viewBox="0 0 409.26 159.54" style="enable-background:new 0 0 409.26 159.54;" xml:space="preserve">
<style type="text/css">
.st0{fill:#FFFFFF;}
</style>
<g>
<g>
<path class="st0" d="M425.02,177.02c-144.63,0-289.26,0-434,0c0-59.94,0-119.89,0-180c144.59,0,289.3,0,434,0 C425.02,56.94,425.02,116.97,425.02,177.02z M281.66,80.31c-0.16,0-0.31,0-0.47,0c0,8.67-0.42,17.37,0.12,26.01 c0.49,7.9,0.93,16.09,3.34,23.52c3.56,10.92,11.18,17.83,22.67,22.28c16.03,6.21,32.21,6.25,48.59,5.63 c7.95-0.3,16.23-1.86,23.64-4.71c18.19-7,26.11-21.99,27.4-40.54c0.86-12.35,0.62-24.81,0.27-37.2 c-0.35-12.57-0.67-25.23-2.52-37.62c-0.97-6.51-4.31-13.16-8.17-18.63C389.53,9.1,378.28,5.68,366.91,3.9 c-18.61-2.91-37.33-3.25-55.64,2.05c-8.98,2.6-16.23,8.11-21.66,15.88c-5.35,7.67-7.04,16.65-7.75,25.51 C281,58.27,281.66,69.32,281.66,80.31z M193.27,8.97c-2.33-1.09-3.47-1.65-4.62-2.17c-3.84-1.74-7.57-4.55-11.56-5 c-12.99-1.46-25.92-2.79-38.67,2.99c-13.27,6.01-19.18,16.86-21.36,29.98c-1.43,8.58-1.81,17.73,2.05,25.98 c2.37,5.07,4.97,10.91,9.21,14.04c10.92,8.05,22.82,14.75,34.3,22.03c6.74,4.28,13.67,8.33,20.04,13.12 c3.39,2.55,2.32,8.35-1.09,10.14c-6.02,3.16-16.82,0.39-19.99-5.84c-2.23-4.37-3.72-9.33-4.47-14.18 c-0.53-3.46-1.83-3.99-4.77-3.95c-7.8,0.11-15.6-0.02-23.4-0.04c-3.94-0.01-7.88,0-11.86,0c0,19.96,0,39.33,0,58.63 c3.58,0,6.66-0.01,9.73,0c7.38,0.04,14.76,0.17,22.14,0.11c4.34-0.03,9.33,1.21,11.07-5.36c2.95,1.72,5.32,3.52,7.99,4.58 c14.11,5.59,28.68,5.73,42.97,1.58c5.56-1.62,11.68-5.17,15.01-9.7c4.53-6.16,8.24-13.83,9.49-21.32 c3.84-23.04-2.94-40.97-24.14-52.69c-13.69-7.56-27.71-14.52-41.33-22.2c-2.25-1.27-4.12-4.75-4.41-7.41 c-0.2-1.83,2.23-4.59,4.18-5.88c4.76-3.15,13.35-1,17,4.7c2.74,4.28,4.03,9.47,6.18,14.16c0.64,1.39,1.92,3.44,3.01,3.51 c11.11,0.71,22.24,1.07,33.36,1.54c3.49,0.15,4.74-1.52,4.46-4.92c-0.54-6.42-1.14-12.85-1.28-19.28 c-0.22-9.78-0.1-19.57-0.06-29.35c0.01-3.59-0.96-5.33-5.21-5.07c-9.29,0.55-18.65,0.92-27.94,0.42 C194.36,1.84,191.77,2.27,193.27,8.97z M12.03,119.58c-1,0.2-1.63,0.39-2.26,0.43c-6.65,0.41-7.04,0.83-7.02,7.24 c0.02,6.43-0.06,12.86-0.03,19.29c0.03,7.27,0.23,7.41,7.7,7.53c19.46,0.3,38.93,0.63,58.39,0.95c2.78,0.05,4.24-0.96,4.18-4.11 c-0.16-8.5-0.15-17.01,0-25.51c0.07-3.92-1.15-6.02-5.42-5.42c-4.64,0.65-5.81-2.05-5.5-5.97c0.29-3.62,0.94-7.24,0.95-10.86 c0.1-19.8,0.08-39.61,0.03-59.41c-0.02-7.35-0.12-7.34,6.97-6.82c0.8,0.06,1.62-0.08,2.9-0.15c0-9.25,0-18.37,0-27.49 c0-6.74,0-6.69-6.92-6.79c-10.8-0.16-21.6-0.49-32.4-0.61C23.5,1.75,13.39,1.84,2.1,1.84c0,10.7-0.11,21.04,0.17,31.38 c0.03,1.06,2.32,2.75,3.74,2.96c5.9,0.87,6.77,2,6.64,7.68c-0.35,15.92-0.47,31.85-0.61,47.78 C11.97,100.91,12.03,110.18,12.03,119.58z"/>
<path d="M281.66,80.31c0-11-0.66-22.04,0.21-32.97c0.71-8.87,2.39-17.84,7.75-25.51c5.42-7.77,12.67-13.29,21.66-15.88 c18.31-5.29,37.03-4.96,55.64-2.05c11.37,1.78,22.62,5.2,29.63,15.14c3.85,5.47,7.19,12.12,8.17,18.63 c1.86,12.39,2.17,25.05,2.52,37.62c0.35,12.39,0.58,24.85-0.27,37.2c-1.28,18.55-9.21,33.54-27.4,40.54 c-7.41,2.85-15.69,4.41-23.64,4.71c-16.37,0.62-32.56,0.58-48.59-5.63c-11.5-4.45-19.12-11.36-22.67-22.28 c-2.42-7.42-2.85-15.62-3.34-23.52c-0.54-8.64-0.12-17.34-0.12-26.01C281.35,80.31,281.51,80.31,281.66,80.31z M353.95,79.45 c0.03,0,0.05,0,0.08,0c0-11.16,0.06-22.33-0.02-33.49c-0.05-6.47-4.26-10.52-10.55-10.39c-6.43,0.13-8.57,2.49-8.66,9.93 c-0.23,20.27-0.39,40.54-0.56,60.82c-0.02,2.99-0.2,6.02,0.2,8.97c0.86,6.31,4.85,10.14,10.18,9.61 c6.37-0.63,9.45-3.97,9.37-10.44C353.84,102.78,353.95,91.11,353.95,79.45z"/>
<path d="M193.27,8.97c-1.5-6.7,1.09-7.13,6.01-6.87c9.28,0.5,18.64,0.13,27.94-0.42c4.26-0.25,5.23,1.48,5.21,5.07 c-0.04,9.78-0.16,19.57,0.06,29.35c0.14,6.43,0.74,12.86,1.28,19.28c0.29,3.4-0.97,5.07-4.46,4.92 c-11.12-0.47-22.25-0.83-33.36-1.54c-1.09-0.07-2.38-2.12-3.01-3.51c-2.15-4.69-3.44-9.88-6.18-14.16 c-3.65-5.71-12.24-7.86-17-4.7c-1.95,1.29-4.38,4.05-4.18,5.88c0.29,2.65,2.17,6.14,4.41,7.41c13.62,7.68,27.64,14.63,41.33,22.2 c21.2,11.72,27.98,29.65,24.14,52.69c-1.25,7.49-4.96,15.17-9.49,21.32c-3.34,4.53-9.45,8.08-15.01,9.7 c-14.29,4.15-28.86,4.01-42.97-1.58c-2.67-1.06-5.04-2.86-7.99-4.58c-1.74,6.57-6.73,5.33-11.07,5.36 c-7.38,0.06-14.76-0.07-22.14-0.11c-3.07-0.02-6.15,0-9.73,0c0-19.3,0-38.67,0-58.63c3.98,0,7.92-0.01,11.86,0 c7.8,0.02,15.6,0.15,23.4,0.04c2.94-0.04,4.24,0.49,4.77,3.95c0.75,4.86,2.24,9.81,4.47,14.18c3.17,6.23,13.97,9,19.99,5.84 c3.42-1.8,4.48-7.6,1.09-10.14c-6.37-4.79-13.3-8.83-20.04-13.12c-11.48-7.29-23.38-13.99-34.3-22.03 c-4.24-3.13-6.84-8.97-9.21-14.04c-3.86-8.25-3.48-17.41-2.05-25.98c2.18-13.12,8.09-23.96,21.36-29.98 c12.75-5.78,25.68-4.45,38.67-2.99c3.99,0.45,7.72,3.26,11.56,5C189.8,7.32,190.94,7.88,193.27,8.97z"/>
<path d="M12.03,119.58c0-9.4-0.07-18.67,0.01-27.95c0.14-15.93,0.26-31.86,0.61-47.78c0.12-5.69-0.75-6.81-6.64-7.68 c-1.42-0.21-3.71-1.9-3.74-2.96C1.99,22.88,2.1,12.53,2.1,1.84c11.29,0,21.4-0.08,31.51,0.02c10.8,0.11,21.6,0.44,32.4,0.61 c6.91,0.1,6.92,0.05,6.92,6.79c0,9.12,0,18.24,0,27.49c-1.28,0.07-2.1,0.21-2.9,0.15c-7.09-0.52-6.99-0.53-6.97,6.82 c0.05,19.8,0.07,39.61-0.03,59.41c-0.02,3.62-0.67,7.24-0.95,10.86c-0.31,3.93,0.86,6.63,5.5,5.97c4.28-0.6,5.49,1.5,5.42,5.42 c-0.15,8.5-0.16,17.01,0,25.51c0.06,3.15-1.4,4.16-4.18,4.11c-19.46-0.32-38.93-0.64-58.39-0.95c-7.46-0.12-7.67-0.26-7.7-7.53 c-0.03-6.43,0.05-12.86,0.03-19.29c-0.02-6.41,0.37-6.83,7.02-7.24C10.41,119.98,11.03,119.78,12.03,119.58z"/>
<path class="st0" d="M353.95,79.45c0,11.67-0.1,23.33,0.04,35c0.08,6.48-3,9.81-9.37,10.44c-5.32,0.53-9.32-3.3-10.18-9.61 c-0.4-2.94-0.22-5.98-0.2-8.97c0.16-20.27,0.33-40.54,0.56-60.82c0.08-7.44,2.23-9.79,8.66-9.93c6.29-0.13,10.5,3.92,10.55,10.39 c0.08,11.16,0.02,22.33,0.02,33.49C354,79.45,353.98,79.45,353.95,79.45z"/>
</g>
</g>
</svg>
</xsl:variable>
<xsl:variable name="Image-ISO-Logo-1972">
<xsl:text>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</xsl:text>
</xsl:variable>
<xsl:variable name="Image-ISO-Logo-1993-SVG">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" id="Layer_1" x="0px" y="0px" viewBox="0 0 65.04 59.24" style="enable-background:new 0 0 65.04 59.24;" xml:space="preserve">
<g>
<defs>
<rect id="SVGID_1_" width="65.04" height="59.24"/>
</defs>
<path style="fill:#231F20;" d="M3.09,2.83h58.87V2.6 H3.09V2.83z M61.95,4.88H3.09v0.23h58.87V4.88z M3.09,7.17h58.87V7.4H3.09V7.17z M3.09,20.87h2.85v0.23H3.09V20.87z M3.09,23.15 h2.85v0.23H3.09V23.15z M3.09,25.44h2.85v0.23H3.09V25.44z M3.09,27.72h5.53v0.23H3.09V27.72z M3.09,30h5.53v0.23H3.09V30z M3.09,32.29h5.53v0.23H3.09V32.29z M3.09,34.57h2.85v0.23H3.09V34.57z M3.09,36.85h2.85v0.23H3.09V36.85z M3.09,39.14h2.85v0.23 H3.09V39.14z M3.09,52.84h58.87v0.23H3.09V52.84z M3.09,55.12h58.87v0.23H3.09V55.12z M3.09,57.4h58.87v0.23H3.09V57.4z M22.46,9.68H3.09V9.45h19.88L22.46,9.68 M19.03,11.73l-0.31,0.23H3.09v-0.23H19.03 M16.34,14.02l-0.23,0.23H3.09v-0.23H16.34 M14.33,16.3l-0.18,0.23H3.09V16.3H14.33 M12.78,18.58l-0.13,0.23H3.09v-0.23H12.78 M42.05,9.68l-0.5-0.23h20.4v0.23H42.05 M45.81,11.97l-0.32-0.23h16.46v0.23H45.81 M48.18,14.02l0.23,0.23h13.54v-0.23H48.18 M50.19,16.3l0.18,0.23h11.59V16.3H50.19 M51.73,18.58l0.13,0.23h10.09v-0.23H51.73 M55.79,20.87l0.32,0.23h5.85v-0.23H55.79 M58.06,23.15l0.16,0.23h3.73v-0.23H58.06 M59.24,25.44l0.07,0.23h2.64v-0.23H59.24 M59.8,27.72l0.04,0.23h2.12v-0.23H59.8 M61.95,30h-1.93l0,0.12l0,0.11h1.93V30 M61.95,32.29v0.23h-2.14l0.04-0.23H61.95 M61.95,34.57v0.23h-2.68l0.07-0.23H61.95 M61.95,36.85v0.23h-3.81l0.15-0.23H61.95 M61.95,39.14v0.23h-6.01l0.31-0.23H61.95 M61.95,41.42v0.23H51.73l0.13-0.23H61.95 M61.95,43.7v0.23H50.19l0.18-0.23H61.95 M61.95,45.98v0.23H48.18l0.23-0.23H61.95 M61.95,48.27v0.23H45.49l0.32-0.23H61.95 M61.95,50.55v0.23h-20.4l0.5-0.23H61.95 M3.09,41.42h9.56l0.13,0.23h-9.7V41.42 M3.09,43.7h11.07l0.18,0.23H3.09V43.7 M3.09,45.98h13.02l0.23,0.23H3.09V45.98 M3.09,48.27 h15.63l0.31,0.23H3.09V48.27 M3.09,50.55h19.38l0.5,0.23H3.09V50.55 M8.01,20.87h12.06v4.52h-2.97v9.59h2.97v4.38H8.01v-4.38h2.82 V25.4H8.01V20.87 M33.14,22.28v-1.12h3.8v6.31h-3.62c-0.54-0.68-1.2-1.26-1.93-1.73c-0.36-0.32-0.77-0.59-1.21-0.78 c-0.57-0.25-1.18-0.38-1.8-0.38c-0.03,0-0.06,0-0.09,0c-0.21,0-0.42,0.03-0.62,0.1c-0.31,0.1-0.59,0.27-0.84,0.49 c-0.12,0.11-0.19,0.27-0.19,0.44c0,0.21,0.11,0.41,0.29,0.51c0.42,0.24,0.86,0.43,1.32,0.58c1.59,0.46,3.15,0.99,4.7,1.59 c1.31,0.51,2.5,1.29,3.49,2.3c0.81,0.92,1.26,2.1,1.26,3.33c0,0.03,0,0.07,0,0.1h0c0,1.4-0.54,2.74-1.51,3.74 c-0.77,0.76-1.71,1.31-2.74,1.63c-0.84,0.22-1.71,0.33-2.58,0.33c-0.81,0-1.62-0.1-2.41-0.29c-1.14-0.33-2.27-0.68-3.4-1.07v1.01 h-3.91v-6.8h3.31c0.62,1.15,1.61,2.07,2.8,2.6h0c0.67,0.28,1.39,0.45,2.12,0.5v0c0.15,0.01,0.31,0.02,0.46,0.02 c0.47,0,0.93-0.05,1.39-0.14h0c0.23-0.05,0.43-0.17,0.58-0.35v0c0.06-0.07,0.09-0.17,0.09-0.26c0-0.11-0.04-0.21-0.11-0.29v0 c-0.28-0.3-0.61-0.56-0.96-0.77c-0.35-0.21-0.73-0.38-1.13-0.49c-1.25-0.37-2.5-0.74-3.74-1.12c-0.65-0.2-1.26-0.5-1.81-0.89 c-0.54-0.38-1.08-0.78-1.61-1.18c-0.56-0.43-0.97-1.02-1.16-1.7c-0.23-0.65-0.37-1.33-0.39-2.02c0-0.07-0.01-0.14-0.01-0.21 c0-0.68,0.14-1.36,0.41-1.99c0.34-0.78,0.85-1.48,1.49-2.05h0c0.61-0.54,1.34-0.93,2.13-1.15c0.87-0.25,1.77-0.37,2.68-0.37 c0.38,0,0.76,0.02,1.14,0.06C30.34,20.94,31.83,21.46,33.14,22.28 M45.53,26.94c0.47-1,1.46-1.64,2.57-1.66 c1.1,0.02,2.1,0.66,2.57,1.66c0.34,0.91,0.51,1.87,0.51,2.84c0,0.13,0,0.26-0.01,0.39c0.01,0.13,0.01,0.26,0.01,0.39 c0,0.97-0.17,1.93-0.51,2.84c-0.47,1-1.46,1.64-2.57,1.66c-1.1-0.02-2.1-0.67-2.57-1.66c-0.34-0.91-0.51-1.87-0.51-2.84 c0-0.13,0-0.26,0.01-0.39c-0.01-0.13-0.01-0.26-0.01-0.39C45.02,28.81,45.19,27.85,45.53,26.94 M40.78,23.21 c1.39-1.21,3.09-2.02,4.9-2.34v0c0.75-0.14,1.51-0.21,2.27-0.21c0.14,0,0.27,0,0.41,0.01c1.53,0,3.05,0.31,4.46,0.91 c0.95,0.39,1.82,0.94,2.59,1.63c1.31,1.28,2.13,2.97,2.33,4.79c0.14,0.72,0.22,1.45,0.22,2.18s-0.07,1.46-0.22,2.18 c-0.2,1.82-1.02,3.51-2.33,4.79c-0.76,0.68-1.64,1.24-2.59,1.63v0c-1.41,0.6-2.93,0.91-4.46,0.91c-0.15,0.01-0.31,0.01-0.46,0.01 c-1.56,0-3.1-0.31-4.54-0.92c-0.95-0.39-1.82-0.95-2.59-1.63c-0.78-0.76-1.38-1.67-1.79-2.67c-0.47-1.39-0.72-2.84-0.76-4.3 c0.04-1.46,0.29-2.91,0.76-4.3C39.4,24.87,40,23.96,40.78,23.21 M27.85,10.83c1.45-0.33,2.93-0.51,4.41-0.51 c1.48,0.01,2.96,0.18,4.41,0.51c-1.3,0.88-2.84,1.35-4.41,1.35C30.69,12.18,29.15,11.71,27.85,10.83 M20.83,14 c0.67,0.47,1.37,0.91,2.1,1.29c0.69-0.71,1.41-1.37,2.18-1.99c0.77-0.62,1.57-1.18,2.41-1.7c-0.24-0.16-0.48-0.32-0.7-0.5 c-1.07,0.31-2.12,0.71-3.12,1.2S21.73,13.35,20.83,14 M23.7,15.68c0.5,0.24,1,0.45,1.52,0.65c0.52,0.19,1.04,0.37,1.57,0.52 c0.35-0.76,0.73-1.51,1.15-2.24c0.42-0.73,0.86-1.44,1.35-2.13c-0.32-0.12-0.63-0.25-0.93-0.4c-0.85,0.5-1.66,1.05-2.44,1.65 C25.13,14.33,24.39,14.98,23.7,15.68 M27.59,17.07c0.7,0.17,1.4,0.3,2.11,0.39c0.71,0.09,1.43,0.15,2.14,0.16v-4.63 c-0.59-0.03-1.17-0.12-1.74-0.26v0c-0.49,0.68-0.94,1.38-1.36,2.11C28.33,15.56,27.94,16.31,27.59,17.07 M32.67,17.62v-4.63 c0.59-0.03,1.17-0.12,1.74-0.26v0c0.48,0.68,0.94,1.39,1.36,2.11c0.42,0.72,0.8,1.47,1.15,2.23C35.53,17.4,34.1,17.59,32.67,17.62 M35.24,12.48c0.32-0.12,0.63-0.25,0.93-0.4c0.85,0.5,1.66,1.05,2.44,1.65c0.78,0.6,1.51,1.26,2.21,1.96 c-0.99,0.48-2.03,0.87-3.08,1.17c-0.35-0.76-0.73-1.51-1.15-2.24C36.17,13.88,35.72,13.17,35.24,12.48 M36.99,11.6 c0.24-0.16,0.48-0.32,0.7-0.5c1.07,0.31,2.12,0.71,3.12,1.2s1.97,1.06,2.88,1.7c-0.67,0.47-1.37,0.91-2.1,1.29l0,0 c-0.68-0.71-1.41-1.37-2.18-1.99C38.64,12.69,37.83,12.12,36.99,11.6 M15.98,18.94h-0.99c3.79-5.87,10.28-9.42,17.27-9.44 c6.98,0.02,13.48,3.58,17.27,9.44h-0.99c-0.57-0.84-1.21-1.63-1.9-2.37c-0.69-0.74-1.45-1.43-2.25-2.05 c-0.71,0.51-1.44,0.98-2.21,1.4c0.85,0.94,1.62,1.96,2.31,3.02H43.5c-0.31-0.46-0.65-0.92-0.99-1.35 c-0.35-0.44-0.71-0.86-1.09-1.28c-1.08,0.53-2.2,0.97-3.35,1.31l0.51,1.32H37.7l-0.44-1.1c-1.5,0.38-3.04,0.58-4.59,0.61v0.49 h-0.83v-0.49c-1.55-0.03-3.09-0.24-4.59-0.61h0l-0.44,1.1h-0.88l0.51-1.32c-1.15-0.34-2.27-0.77-3.35-1.31 c-0.76,0.83-1.45,1.7-2.08,2.63h-0.99c0.69-1.07,1.46-2.08,2.31-3.02c-0.77-0.42-1.5-0.89-2.21-1.4 C18.53,15.77,17.13,17.26,15.98,18.94 M27.85,49.4c1.45,0.33,2.93,0.51,4.41,0.51c1.48-0.01,2.96-0.18,4.41-0.51 c-1.3-0.88-2.84-1.35-4.41-1.35C30.69,48.05,29.15,48.52,27.85,49.4 M20.83,46.23c0.67-0.47,1.37-0.91,2.1-1.29 c0.69,0.71,1.41,1.37,2.18,1.99c0.77,0.62,1.57,1.18,2.41,1.7c-0.24,0.16-0.48,0.32-0.7,0.5c-1.07-0.31-2.12-0.71-3.12-1.2 S21.73,46.88,20.83,46.23 M23.7,44.55c0.5-0.24,1-0.45,1.52-0.65c0.52-0.2,1.04-0.37,1.57-0.52c0.35,0.76,0.73,1.51,1.15,2.24 c0.42,0.73,0.86,1.44,1.35,2.13c-0.32,0.12-0.63,0.25-0.93,0.4c-0.85-0.5-1.66-1.05-2.44-1.65C25.13,45.9,24.39,45.25,23.7,44.55 M27.59,43.17c0.7-0.17,1.4-0.3,2.11-0.39c0.71-0.09,1.43-0.15,2.14-0.16v4.63c-0.59,0.03-1.17,0.12-1.74,0.26v0 c-0.49-0.68-0.94-1.38-1.36-2.11C28.33,44.67,27.94,43.93,27.59,43.17 M32.67,42.61v4.63c0.59,0.03,1.17,0.12,1.74,0.26 c0.48-0.68,0.94-1.38,1.36-2.11c0.42-0.72,0.8-1.47,1.15-2.23C35.53,42.83,34.1,42.64,32.67,42.61 M35.24,47.76 c0.32,0.12,0.63,0.25,0.93,0.4c0.85-0.5,1.66-1.05,2.44-1.65c0.78-0.6,1.51-1.26,2.21-1.96c-0.99-0.47-2.03-0.87-3.08-1.17 c-0.35,0.77-0.73,1.52-1.15,2.25C36.17,46.36,35.72,47.07,35.24,47.76 M36.99,48.63c0.24,0.16,0.48,0.32,0.7,0.5 c1.07-0.31,2.12-0.71,3.12-1.2s1.97-1.06,2.88-1.7c-0.67-0.48-1.37-0.91-2.1-1.29h0c-0.68,0.71-1.41,1.37-2.18,1.99 C38.64,47.55,37.83,48.11,36.99,48.63 M15.98,41.3h-0.99c3.79,5.87,10.28,9.42,17.27,9.44c6.98-0.02,13.48-3.58,17.27-9.44h-0.99 c-0.57,0.84-1.21,1.63-1.9,2.37c-0.69,0.74-1.45,1.43-2.25,2.05c-0.71-0.51-1.44-0.98-2.21-1.4c0.85-0.94,1.62-1.96,2.31-3.02H43.5 c-0.31,0.46-0.65,0.91-0.99,1.35c-0.35,0.44-0.71,0.86-1.09,1.28v0c-1.08-0.53-2.2-0.97-3.35-1.31l0.51-1.32H37.7l-0.44,1.1 c-1.5-0.38-3.04-0.58-4.59-0.61V41.3h-0.83v0.49c-1.55,0.03-3.09,0.24-4.59,0.61h0l-0.44-1.1h-0.88l0.51,1.32 c-1.15,0.34-2.27,0.77-3.35,1.31v0c-0.76-0.83-1.45-1.7-2.08-2.63h-0.99c0.69,1.07,1.46,2.08,2.31,3.02 c-0.77,0.42-1.5,0.88-2.21,1.4C18.53,44.46,17.13,42.97,15.98,41.3"/>
<path style="fill:#FFFFFF;" d="M45.53,26.94 c0.47-1,1.46-1.64,2.57-1.66c1.1,0.02,2.1,0.66,2.57,1.66c0.34,0.91,0.52,1.87,0.52,2.84c0,0.13,0,0.26-0.01,0.39 c0.01,0.13,0.01,0.26,0.01,0.39c0,0.97-0.18,1.93-0.52,2.84c-0.47,1-1.46,1.64-2.57,1.66c-1.1-0.02-2.1-0.67-2.57-1.66 c-0.34-0.91-0.51-1.87-0.51-2.84c0-0.13,0-0.26,0.01-0.39c-0.01-0.13-0.01-0.26-0.01-0.39C45.02,28.81,45.19,27.85,45.53,26.94 M27.85,10.83c1.45-0.34,2.92-0.51,4.41-0.51c1.48,0.01,2.96,0.18,4.41,0.51c-1.3,0.88-2.84,1.35-4.41,1.35 C30.69,12.18,29.15,11.71,27.85,10.83 M32.67,17.62v-4.63c0.59-0.03,1.17-0.12,1.74-0.26v0c0.49,0.68,0.94,1.38,1.36,2.11 c0.42,0.72,0.81,1.47,1.15,2.23C35.53,17.4,34.1,17.59,32.67,17.62 M35.24,12.48c0.32-0.12,0.63-0.25,0.93-0.4 c0.85,0.5,1.66,1.05,2.44,1.65c0.78,0.6,1.51,1.26,2.2,1.96c-0.99,0.47-2.03,0.87-3.08,1.17c-0.35-0.76-0.73-1.51-1.15-2.24 C36.17,13.88,35.72,13.17,35.24,12.48 M36.99,11.6c0.24-0.16,0.47-0.32,0.7-0.5c1.07,0.31,2.12,0.71,3.12,1.2 c1.01,0.49,1.97,1.06,2.88,1.7c-0.67,0.47-1.37,0.91-2.1,1.29h0c-0.69-0.71-1.41-1.37-2.18-1.99 C38.64,12.69,37.83,12.12,36.99,11.6 M27.85,49.4c1.45,0.33,2.92,0.51,4.41,0.51c1.48-0.01,2.96-0.18,4.41-0.51 c-1.3-0.88-2.84-1.35-4.41-1.35C30.69,48.05,29.15,48.52,27.85,49.4 M32.67,42.61v4.63c0.59,0.03,1.17,0.12,1.74,0.26 c0.49-0.68,0.94-1.38,1.36-2.11c0.42-0.72,0.81-1.47,1.15-2.23C35.53,42.83,34.1,42.64,32.67,42.61 M35.24,47.76 c0.32,0.12,0.63,0.25,0.93,0.4c0.85-0.5,1.66-1.05,2.44-1.65c0.78-0.6,1.51-1.26,2.2-1.96c-0.99-0.48-2.03-0.87-3.08-1.17 c-0.35,0.77-0.73,1.51-1.15,2.25C36.17,46.36,35.72,47.07,35.24,47.76 M36.99,48.63c0.24,0.16,0.47,0.33,0.7,0.51 c1.07-0.31,2.12-0.71,3.12-1.2c1.01-0.49,1.97-1.06,2.88-1.7c-0.67-0.47-1.37-0.9-2.1-1.29h0c-0.69,0.71-1.41,1.37-2.18,1.99 C38.64,47.55,37.83,48.11,36.99,48.63"/>
</g>
</svg>
</xsl:variable>
<xsl:variable name="Image-IEC-Logo-1989">
<xsl:text>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</xsl:text>
</xsl:variable>
<xsl:variable name="Image-IEC-Logo">
<xsl:text>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</xsl:text>
</xsl:variable>
<xsl:variable name="Image-IEC-Logo-SVG">
<xsl:variable name="logo_color">
<xsl:choose>
<xsl:when test="$stage >=60 and $layoutVersion = '2024'">rgb(0,96,170)</xsl:when>
<xsl:otherwise>rgb(35,31,32)</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<svg xmlns="http://www.w3.org/2000/svg" version="1.0" viewBox="0 0 400 400">
<path d="m0 400h400v-400h-400z" fill="{$logo_color}"/>
<g fill="#fff">
<path d="m76.201 86.521h-32.884v162.03h32.884z"/>
<path d="m218.56 82.719h-80.086c-7.7143 0-19.12 8.6576-19.12 20.867v118.79c0 9.6844 8.797 25.917 23.865 25.917h76.895v-13.68h-54.556c-9.6569 0-14.263-4.6618-14.263-10.545v-44.315c0-4.634-1.9703-12.237 3.8297-12.237h47.979v-12.237h-46.814c-6.1879 0-4.995-4.4398-4.995-8.2136v-37.35c0-4.2178-0.13854-11.488 7.9919-11.488h59.274z"/>
<path d="m359.78 109.72s-17.815-30.385-58.052-30.385c-32.855 0-75.813 30.801-75.813 87.77 0 62.019 48.729 84.801 78.144 84.801 44.872 0 61.133-41.762 61.133-41.762l-7.7421-7.187s-20.618 36.934-51.365 36.934c-18.953 0-49.228-18.786-49.228-72.785 0-59.938 25.641-75.116 49.228-75.116 29.026 0 45.565 26.167 45.565 26.167z"/>
<path d="m338.83 334.48c12.515 0 22.672-10.6 22.672-23.697 0-13.098-10.157-23.725-22.672-23.725-12.543 0-22.672 10.628-22.672 23.725 0 13.097 10.128 23.697 22.672 23.697"/>
<path d="m43.317 326.63v6.8539l271.53 0.11082c-1.9425-2.0534-3.5521-4.3843-4.9672-6.8539zm262.74-20.257h-262.74v7.7974h262.62c-0.1119-1.1377-0.33033-2.2199-0.33033-3.3853 0-1.5262 0.2504-2.9692 0.44218-4.4121m-262.74-18.398v6.965h266.37s0.16518-0.22217 0.44222-0.555c1.332-2.3032 2.8585-4.4953 4.6902-6.41z"/>
</g>
</svg>
</xsl:variable>
<xsl:variable name="Image-IDF-Logo">
<xsl:text>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</xsl:text>
</xsl:variable>
<xsl:variable name="Image-IEEE-Logo">
<xsl:text>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</xsl:text>
</xsl:variable>
<xsl:variable name="Image-IEEE-Logo2">
<xsl:choose>
<!-- color logo -->
<xsl:when test="$stage >=60"><xsl:text>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</xsl:text></xsl:when>
<!-- grey logo -->
<xsl:otherwise><xsl:text>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ikfOmd+JycYI5zFM/fNY88XC+b4Y0EYa2nhJI+sX9T93xy4TH3xKicnGCMM5Uj4lNuX2wAHoIa/y12GTNCMcjwng+9c1gMnGMAKwSZphqDHZGIYak41hqDHZGIYak41hqDHZGIYak41hqDHZGIYak41hqDHZGIYak41hqDHZGIYak41hqDHZGIYak41hqDHZGIYak41hqDHZGIYak41hqDHZGIYak41hqDHZGIYak41hqDHZGIYak41hqDHZGIYak41hqDHZGIYak41hqDHZGIYak41hqDHZGIYak41hqDHZGIYak41hqDHZGIYak41hqDHZGIYak41hqDHZGIYak41hqDHZGIYak41hqDHZGIYak41hqDHZGIYak41hqDHZGIYak41hqDHZGIYak41hqDHZGIYak41hqDHZGIYak41hqPkPYIC3LoZhfAQMBjP+VO6vtG1pDOMjcAMM/QVxzUC5cXEM4xOgjJgYf8FAvXVhDOMzqE8Ag80kYBhyMjABZLIxDBUM8H9mCzAMLf+Z7dkwFBBA+EtmETAMBba2MYwgTDaGocZkYxhqTDaGocZkYxhqTDaGocZkYxhqTDaGocZkYxhqTDaGocZkYxhqTDaGocZkYxhqTDaGocZkYxhqTDaGocZkYxhqTDaGocZkYxhqTDaGocZkYxhqTDaGocZkYxhqTDaGocZkYxhqTDaGocZkYxhqTDaGocZkYxhqTDaGocZkYxhqTDaGocZkYxhqTDaGocZkYxhqTDaGocZkYxhqTDaGocZkYxhqTDaGocZkYxhqTDaGocZkYxhqTDaGocZkYxhqTDaGocZkYxhqTDaGocZkYxhqTDaGocZkYxhqTDaGocZkYxhqTDaGocZkYxhq/vLWJTCMz6EGg4C/AJBtXRjD+BgI4D8VQAzQ1oUxjA+gnZz9ffyrYRhvIMafigCAbbQxjPcwiAH8D/3TuZLhZZQlAAAAAElFTkSuQmCC</xsl:text></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="Image-Attention">
<xsl:text>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</xsl:text>
</xsl:variable>
<xsl:template name="insertInterFont">
<xsl:variable name="font_family">
<font-family>
<xsl:variable name="inter-font-style">
<root-style>
<xsl:attribute name="font-family">Cambria Math, <xsl:value-of select="$font_noto_sans"/></xsl:attribute>
<xsl:attribute name="font-family-generic">Sans</xsl:attribute>
</root-style>
</xsl:variable>
<xsl:call-template name="insertRootStyle">
<xsl:with-param name="root-style" select="$inter-font-style"/>
</xsl:call-template>
</font-family>
</xsl:variable>
<xsl:attribute name="font-family">
<xsl:text>Inter, </xsl:text>
<xsl:value-of select="xalan:nodeset($font_family)/*/@font-family"/>
</xsl:attribute>
</xsl:template>
<xsl:template name="insertSmallHorizontalLine">
<xsl:if test="($layoutVersion = '1951' or $layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987' or $layoutVersion = '1989')">
<!-- small horizontal line -->
<fo:block text-align="center" margin-top="12mm" keep-with-previous="always" role="SKIP">
<xsl:if test="$layout_columns != 1">
<xsl:attribute name="span">all</xsl:attribute>
</xsl:if>
<fo:leader leader-pattern="rule" leader-length="20%"/>
</fo:block>
</xsl:if>
</xsl:template>
<xsl:template name="insertBlackCircle">
<fo:instream-foreign-object content-width="1.3mm" fox:alt-text="black circle">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
<circle cx="10" cy="10" r="5" stroke="black" stroke-width="5" fill="black"/>
</svg>
</fo:instream-foreign-object>
</xsl:template>
<xsl:template name="insertLastBlock">
<fo:block id="lastBlock" font-size="1pt" keep-with-previous="always" role="SKIP"><fo:wrapper role="artifact"> </fo:wrapper></fo:block>
</xsl:template>
<xsl:strip-space elements="iso:xref"/>
<xsl:variable name="namespace_full" select="namespace-uri(/*)"/> <!-- example: https://www.metanorma.org/ns/iso -->
<xsl:variable name="root_element" select="local-name(/*)"/> <!-- example: iso-standard -->
<xsl:variable name="document_scheme" select="normalize-space(//*[contains(local-name(), '-standard')]/*[local-name() = 'metanorma-extension']/*[local-name() = 'presentation-metadata'][*[local-name() = 'name'] = 'document-scheme']/*[local-name() = 'value'])"/>
<!-- external parameters -->
<xsl:param name="svg_images"/> <!-- svg images array -->
<xsl:variable name="images" select="document($svg_images)"/>
<xsl:param name="basepath"/> <!-- base path for images -->
<xsl:param name="inputxml_basepath"/> <!-- input xml file path -->
<xsl:param name="inputxml_filename"/> <!-- input xml file name -->
<xsl:param name="output_path"/> <!-- output PDF file name -->
<xsl:param name="external_index"/><!-- path to index xml, generated on 1st pass, based on FOP Intermediate Format -->
<xsl:param name="syntax-highlight">false</xsl:param> <!-- syntax highlighting feature, default - off -->
<xsl:param name="add_math_as_text">true</xsl:param> <!-- add math in text behind svg formula, to copy-paste formula from PDF as text -->
<xsl:param name="table_if">false</xsl:param> <!-- generate extended table in IF for autolayout-algorithm -->
<xsl:param name="table_widths"/> <!-- (debug: path to) xml with table's widths, generated on 1st pass, based on FOP Intermediate Format -->
<!-- Example: <tables>
<table page-width="509103" id="table1" width_max="223561" width_min="223560">
<column width_max="39354" width_min="39354"/>
<column width_max="75394" width_min="75394"/>
<column width_max="108813" width_min="108813"/>
<tbody>
<tr>
<td width_max="39354" width_min="39354">
<p_len>39354</p_len>
<word_len>39354</word_len>
</td>
OLD:
<tables>
<table id="table_if_tab-symdu" page-width="75"> - table id prefixed by 'table_if_' to simple search in IF
<tbody>
<tr>
<td id="tab-symdu_1_1">
<p_len>6</p_len>
<p_len>100</p_len> for 2nd paragraph
<word_len>6</word_len>
<word_len>20</word_len>
...
-->
<!-- for command line debug: <xsl:variable name="table_widths_from_if" select="document($table_widths)"/> -->
<xsl:variable name="table_widths_from_if" select="xalan:nodeset($table_widths)"/>
<xsl:variable name="table_widths_from_if_calculated_">
<xsl:for-each select="$table_widths_from_if//table">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:call-template name="calculate-column-widths-autolayout-algorithm"/>
</xsl:copy>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="table_widths_from_if_calculated" select="xalan:nodeset($table_widths_from_if_calculated_)"/>
<xsl:param name="table_if_debug">false</xsl:param> <!-- set 'true' to put debug width data before table or dl -->
<xsl:variable name="isApplyAutolayoutAlgorithm_">
true
</xsl:variable>
<xsl:variable name="isApplyAutolayoutAlgorithm" select="normalize-space($isApplyAutolayoutAlgorithm_)"/>
<xsl:variable name="isGenerateTableIF_">
<xsl:choose>
<xsl:when test="$isApplyAutolayoutAlgorithm = 'true'">
<xsl:value-of select="normalize-space($table_if) = 'true'"/>
</xsl:when>
<xsl:otherwise>false</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="isGenerateTableIF" select="normalize-space($isGenerateTableIF_)"/>
<xsl:variable name="lang">
<xsl:call-template name="getLang"/>
</xsl:variable>
<xsl:variable name="inputxml_filename_prefix">
<xsl:choose>
<xsl:when test="contains($inputxml_filename, '.presentation.xml')">
<xsl:value-of select="substring-before($inputxml_filename, '.presentation.xml')"/>
</xsl:when>
<xsl:when test="contains($inputxml_filename, '.xml')">
<xsl:value-of select="substring-before($inputxml_filename, '.xml')"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$inputxml_filename"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- Note 1: Each xslt has declated variable `namespace` that allows to set some properties, processing logic, etc. for concrete xslt.
You can put such conditions by using xslt construction `xsl:if test="..."` or <xsl:choose><xsl:when test=""></xsl:when><xsl:otherwiste></xsl:otherwiste></xsl:choose>,
BUT DON'T put any another conditions together with $namespace = '...' (such conditions will be ignored). For another conditions, please use nested xsl:if or xsl:choose -->
<!--
<metanorma-extension>
<presentation-metadata>
<papersize>letter</papersize>
</presentation-metadata>
</metanorma-extension>
-->
<xsl:variable name="papersize" select="java:toLowerCase(java:java.lang.String.new(normalize-space(//*[contains(local-name(), '-standard')]/*[local-name() = 'metanorma-extension']/*[local-name() = 'presentation-metadata']/*[local-name() = 'papersize'])))"/>
<xsl:variable name="papersize_width_">
<xsl:choose>
<xsl:when test="$papersize = 'letter'">215.9</xsl:when>
<xsl:when test="$papersize = 'a4'">210</xsl:when>
</xsl:choose>
</xsl:variable>
<xsl:variable name="papersize_width" select="normalize-space($papersize_width_)"/>
<xsl:variable name="papersize_height_">
<xsl:choose>
<xsl:when test="$papersize = 'letter'">279.4</xsl:when>
<xsl:when test="$papersize = 'a4'">297</xsl:when>
</xsl:choose>
</xsl:variable>
<xsl:variable name="papersize_height" select="normalize-space($papersize_height_)"/>
<!-- page width in mm -->
<xsl:variable name="pageWidth_">
<xsl:choose>
<xsl:when test="$papersize_width != ''"><xsl:value-of select="$papersize_width"/></xsl:when>
<xsl:otherwise>
210
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="pageWidth" select="normalize-space($pageWidth_)"/>
<!-- page height in mm -->
<xsl:variable name="pageHeight_">
<xsl:choose>
<xsl:when test="$papersize_height != ''"><xsl:value-of select="$papersize_height"/></xsl:when>
<xsl:otherwise>
297
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="pageHeight" select="normalize-space($pageHeight_)"/>
<!-- Page margins in mm (just digits, without 'mm')-->
<!-- marginLeftRight1 and marginLeftRight2 - is left or right margin depends on odd/even page,
for example, left margin on odd page and right margin on even page -->
<xsl:variable name="marginLeftRight1_">
<xsl:choose>
<xsl:when test="$layoutVersion = '1951'">36</xsl:when>
<xsl:when test="$layoutVersion = '2024'">15.2</xsl:when>
<xsl:otherwise>25</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="marginLeftRight1" select="normalize-space($marginLeftRight1_)"/>
<xsl:variable name="marginLeftRight2_">
<xsl:choose>
<xsl:when test="$layoutVersion = '1951'">29</xsl:when>
<xsl:when test="$layoutVersion = '2024'">15.2</xsl:when>
<xsl:otherwise>12.5</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="marginLeftRight2" select="normalize-space($marginLeftRight2_)"/>
<xsl:variable name="marginTop_">
<xsl:choose>
<xsl:when test="$layoutVersion = '2024'">23.5</xsl:when>
<xsl:otherwise>27.4</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="marginTop" select="normalize-space($marginTop_)"/>
<xsl:variable name="marginBottom_">
<xsl:choose>
<xsl:when test="$layoutVersion = '1951'">25.5</xsl:when>
<xsl:when test="$layoutVersion = '2024'">19.5</xsl:when>
<xsl:otherwise>15</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="marginBottom" select="normalize-space($marginBottom_)"/>
<xsl:variable name="layout_columns_default">1</xsl:variable>
<xsl:variable name="layout_columns_" select="normalize-space((//*[contains(local-name(), '-standard')])[1]/*[local-name() = 'metanorma-extension']/*[local-name() = 'presentation-metadata']/*[local-name() = 'layout-columns'])"/>
<xsl:variable name="layout_columns">
<xsl:choose>
<xsl:when test="$layout_columns_ != ''"><xsl:value-of select="$layout_columns_"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$layout_columns_default"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- Note 2: almost all localized string determined in the element //localized-strings in metanorma xml, but there are a few cases when:
- string didn't determined yet
- we need to put the string on two-languages (for instance, on English and French both), but xml contains only localized strings for one language
- there is a difference between localized string value and text that should be displayed in PDF
-->
<xsl:variable name="titles_">
<!-- These titles of Table of contents renders different than determined in localized-strings -->
<!-- <title-toc lang="en">
<xsl:if test="$namespace = 'csd' or $namespace = 'ieee' or $namespace = 'iho' or $namespace = 'mpfd' or $namespace = 'ogc' or $namespace = 'unece-rec'">
<xsl:text>Contents</xsl:text>
</xsl:if>
<xsl:if test="$namespace = 'csa' or $namespace = 'm3d' or $namespace = 'nist-sp' or $namespace = 'ogc-white-paper'">
<xsl:text>Table of Contents</xsl:text>
</xsl:if>
<xsl:if test="$namespace = 'gb'">
<xsl:text>Table of contents</xsl:text>
</xsl:if>
</title-toc> -->
<title-toc lang="en">Table of contents</title-toc>
<!-- <title-toc lang="fr">
<xsl:text>Sommaire</xsl:text>
</title-toc> -->
<!-- <title-toc lang="zh">
<xsl:choose>
<xsl:when test="$namespace = 'gb'">
<xsl:text>目次</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>Contents</xsl:text>
</xsl:otherwise>
</xsl:choose>
</title-toc> -->
<title-toc lang="zh">目次</title-toc>
<title-part lang="en">
<xsl:text>Part #:</xsl:text>
</title-part>
<title-part lang="fr">
<xsl:text>Partie #:</xsl:text>
</title-part>
<title-part lang="ru">
<xsl:text>Часть #:</xsl:text>
</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>
</xsl:variable>
<xsl:variable name="titles" select="xalan:nodeset($titles_)"/>
<xsl:variable name="title-list-tables">
<xsl:variable name="toc_table_title" select="//*[contains(local-name(), '-standard')]/*[local-name() = 'metanorma-extension']/*[local-name() = 'toc'][@type='table']/*[local-name() = 'title']"/>
<xsl:value-of select="$toc_table_title"/>
<xsl:if test="normalize-space($toc_table_title) = ''">
<xsl:call-template name="getLocalizedString">
<xsl:with-param name="key">toc_tables</xsl:with-param>
</xsl:call-template>
</xsl:if>
</xsl:variable>
<xsl:variable name="title-list-figures">
<xsl:variable name="toc_figure_title" select="//*[contains(local-name(), '-standard')]/*[local-name() = 'metanorma-extension']/*[local-name() = 'toc'][@type='figure']/*[local-name() = 'title']"/>
<xsl:value-of select="$toc_figure_title"/>
<xsl:if test="normalize-space($toc_figure_title) = ''">
<xsl:call-template name="getLocalizedString">
<xsl:with-param name="key">toc_figures</xsl:with-param>
</xsl:call-template>
</xsl:if>
</xsl:variable>
<xsl:variable name="title-list-recommendations">
<xsl:variable name="toc_requirement_title" select="//*[contains(local-name(), '-standard')]/*[local-name() = 'metanorma-extension']/*[local-name() = 'toc'][@type='requirement']/*[local-name() = 'title']"/>
<xsl:value-of select="$toc_requirement_title"/>
<xsl:if test="normalize-space($toc_requirement_title) = ''">
<xsl:call-template name="getLocalizedString">
<xsl:with-param name="key">toc_recommendations</xsl:with-param>
</xsl:call-template>
</xsl:if>
</xsl:variable>
<xsl:variable name="bibdata">
<xsl:copy-of select="//*[contains(local-name(), '-standard')]/*[local-name() = 'bibdata']"/>
<xsl:copy-of select="//*[contains(local-name(), '-standard')]/*[local-name() = 'localized-strings']"/>
</xsl:variable>
<!-- Characters -->
<xsl:variable name="linebreak">
</xsl:variable>
<xsl:variable name="tab_zh"> </xsl:variable>
<xsl:variable name="non_breaking_hyphen">‑</xsl:variable>
<xsl:variable name="thin_space"> </xsl:variable>
<xsl:variable name="zero_width_space"></xsl:variable>
<xsl:variable name="hair_space"> </xsl:variable>
<xsl:variable name="en_dash">–</xsl:variable>
<xsl:variable name="em_dash">—</xsl:variable>
<xsl:variable name="cr"> </xsl:variable>
<xsl:variable name="lf">
</xsl:variable>
<xsl:template name="getTitle">
<xsl:param name="name"/>
<xsl:param name="lang"/>
<xsl:variable name="lang_">
<xsl:choose>
<xsl:when test="$lang != ''">
<xsl:value-of select="$lang"/>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="getLang"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="language" select="normalize-space($lang_)"/>
<xsl:variable name="title_" select="$titles/*[local-name() = $name][@lang = $language]"/>
<xsl:choose>
<xsl:when test="normalize-space($title_) != ''">
<xsl:value-of select="$title_"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$titles/*[local-name() = $name][@lang = 'en']"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:variable name="lower">abcdefghijklmnopqrstuvwxyz</xsl:variable>
<xsl:variable name="upper">ABCDEFGHIJKLMNOPQRSTUVWXYZ</xsl:variable>
<xsl:variable name="en_chars" select="concat($lower,$upper,',.`1234567890-=~!@#$%^*()_+[]{}\|?/')"/>
<!-- ====================================== -->
<!-- STYLES -->
<!-- ====================================== -->
<xsl:variable name="font_noto_sans">Noto Sans, Noto Sans HK, Noto Sans JP, Noto Sans KR, Noto Sans SC, Noto Sans TC</xsl:variable>
<xsl:variable name="font_noto_sans_mono">Noto Sans Mono, Noto Sans Mono CJK HK, Noto Sans Mono CJK JP, Noto Sans Mono CJK KR, Noto Sans Mono CJK SC, Noto Sans Mono CJK TC</xsl:variable>
<xsl:variable name="font_noto_serif">Noto Serif, Noto Serif HK, Noto Serif JP, Noto Serif KR, Noto Serif SC, Noto Serif TC</xsl:variable>
<xsl:attribute-set name="root-style">
<xsl:attribute name="font-family">Cambria, Times New Roman, Cambria Math, <xsl:value-of select="$font_noto_serif"/></xsl:attribute>
<xsl:attribute name="font-family-generic">Serif</xsl:attribute>
<xsl:attribute name="font-size">11pt</xsl:attribute>
</xsl:attribute-set> <!-- root-style -->
<xsl:template name="insertRootStyle">
<xsl:param name="root-style"/>
<xsl:variable name="root-style_" select="xalan:nodeset($root-style)"/>
<xsl:variable name="additional_fonts_">
<xsl:for-each select="//*[contains(local-name(), '-standard')][1]/*[local-name() = 'metanorma-extension']/*[local-name() = 'presentation-metadata'][*[local-name() = 'name'] = 'fonts']/*[local-name() = 'value'] | //*[contains(local-name(), '-standard')][1]/*[local-name() = 'presentation-metadata'][*[local-name() = 'name'] = 'fonts']/*[local-name() = 'value']">
<xsl:value-of select="."/><xsl:if test="position() != last()">, </xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="additional_fonts" select="normalize-space($additional_fonts_)"/>
<xsl:variable name="font_family_generic" select="$root-style_/root-style/@font-family-generic"/>
<xsl:for-each select="$root-style_/root-style/@*">
<xsl:choose>
<xsl:when test="local-name() = 'font-family-generic'"><!-- skip, it's using for determine 'sans' or 'serif' --></xsl:when>
<xsl:when test="local-name() = 'font-family'">
<xsl:variable name="font_regional_prefix">
<xsl:choose>
<xsl:when test="$font_family_generic = 'Sans'">Noto Sans</xsl:when>
<xsl:otherwise>Noto Serif</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:attribute name="{local-name()}">
<xsl:variable name="font_extended">
<xsl:choose>
<xsl:when test="$lang = 'zh'"><xsl:value-of select="$font_regional_prefix"/> SC</xsl:when>
<xsl:when test="$lang = 'hk'"><xsl:value-of select="$font_regional_prefix"/> HK</xsl:when>
<xsl:when test="$lang = 'jp'"><xsl:value-of select="$font_regional_prefix"/> JP</xsl:when>
<xsl:when test="$lang = 'kr'"><xsl:value-of select="$font_regional_prefix"/> KR</xsl:when>
<xsl:when test="$lang = 'sc'"><xsl:value-of select="$font_regional_prefix"/> SC</xsl:when>
<xsl:when test="$lang = 'tc'"><xsl:value-of select="$font_regional_prefix"/> TC</xsl:when>
</xsl:choose>
</xsl:variable>
<xsl:if test="normalize-space($font_extended) != ''">
<xsl:value-of select="$font_regional_prefix"/><xsl:text>, </xsl:text>
<xsl:value-of select="$font_extended"/><xsl:text>, </xsl:text>
</xsl:if>
<xsl:variable name="font_family" select="."/>
<xsl:choose>
<xsl:when test="$additional_fonts = ''">
<xsl:value-of select="$font_family"/>
</xsl:when>
<xsl:otherwise> <!-- $additional_fonts != '' -->
<xsl:choose>
<xsl:when test="contains($font_family, ',')">
<xsl:value-of select="substring-before($font_family, ',')"/>
<xsl:text>, </xsl:text><xsl:value-of select="$additional_fonts"/>
<xsl:text>, </xsl:text><xsl:value-of select="substring-after($font_family, ',')"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$font_family"/>
<xsl:text>, </xsl:text><xsl:value-of select="$additional_fonts"/>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="."/>
</xsl:otherwise>
</xsl:choose>
<!-- <xsl:choose>
<xsl:when test="local-name() = 'font-family'">
<xsl:attribute name="{local-name()}">
<xsl:value-of select="."/>, <xsl:value-of select="$additional_fonts"/>
</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="."/>
</xsl:otherwise>
</xsl:choose> -->
</xsl:for-each>
</xsl:template> <!-- insertRootStyle -->
<!-- Preface sections styles -->
<xsl:attribute-set name="copyright-statement-style">
</xsl:attribute-set> <!-- copyright-statement-style -->
<xsl:attribute-set name="copyright-statement-title-style">
</xsl:attribute-set> <!-- copyright-statement-title-style -->
<xsl:attribute-set name="copyright-statement-p-style">
</xsl:attribute-set> <!-- copyright-statement-p-style -->
<xsl:attribute-set name="license-statement-style">
</xsl:attribute-set>
<xsl:attribute-set name="license-statement-title-style">
<xsl:attribute name="keep-with-next">always</xsl:attribute>
<xsl:attribute name="text-align">center</xsl:attribute>
</xsl:attribute-set> <!-- license-statement-title-style -->
<xsl:attribute-set name="license-statement-p-style">
<xsl:attribute name="margin-left">1.5mm</xsl:attribute>
<xsl:attribute name="margin-right">1.5mm</xsl:attribute>
</xsl:attribute-set> <!-- license-statement-p-style -->
<xsl:attribute-set name="legal-statement-style">
</xsl:attribute-set> <!-- legal-statement-style -->
<xsl:attribute-set name="legal-statement-title-style">
<xsl:attribute name="keep-with-next">always</xsl:attribute>
</xsl:attribute-set> <!-- legal-statement-title-style -->
<xsl:attribute-set name="legal-statement-p-style">
</xsl:attribute-set> <!-- legal-statement-p-style -->
<xsl:attribute-set name="feedback-statement-style">
</xsl:attribute-set> <!-- feedback-statement-style -->
<xsl:attribute-set name="feedback-statement-title-style">
<xsl:attribute name="keep-with-next">always</xsl:attribute>
</xsl:attribute-set> <!-- feedback-statement-title-style -->
<xsl:attribute-set name="feedback-statement-p-style">
</xsl:attribute-set> <!-- feedback-statement-p-style -->
<!-- End Preface sections styles -->
<xsl:attribute-set name="link-style">
<xsl:attribute name="color">blue</xsl:attribute>
<xsl:attribute name="text-decoration">underline</xsl:attribute>
</xsl:attribute-set>
<xsl:template name="refine_link-style">
<xsl:if test="(ancestor::*[local-name() = 'copyright-statement'] and contains(@target, 'mailto:')) or ($layoutVersion = '2024' and ancestor::iso:termsource)">
<xsl:attribute name="color">inherit</xsl:attribute>
<xsl:attribute name="text-decoration">none</xsl:attribute>
</xsl:if>
</xsl:template> <!-- refine_link-style -->
<xsl:attribute-set name="sourcecode-container-style">
</xsl:attribute-set>
<xsl:attribute-set name="sourcecode-style">
<xsl:attribute name="white-space">pre</xsl:attribute>
<xsl:attribute name="wrap-option">wrap</xsl:attribute>
<xsl:attribute name="role">Code</xsl:attribute>
<xsl:attribute name="font-family">Courier New, <xsl:value-of select="$font_noto_sans_mono"/></xsl:attribute>
<xsl:attribute name="margin-bottom">12pt</xsl:attribute>
</xsl:attribute-set>
<xsl:template name="refine_sourcecode-style">
</xsl:template> <!-- refine_sourcecode-style -->
<xsl:attribute-set name="pre-style">
<xsl:attribute name="font-family">Courier New, <xsl:value-of select="$font_noto_sans_mono"/></xsl:attribute>
<xsl:attribute name="margin-bottom">6pt</xsl:attribute>
<xsl:attribute name="margin-bottom">12pt</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="permission-style">
</xsl:attribute-set>
<xsl:attribute-set name="permission-name-style">
</xsl:attribute-set>
<xsl:attribute-set name="permission-label-style">
</xsl:attribute-set>
<xsl:attribute-set name="requirement-style">
<xsl:attribute name="margin-top">6pt</xsl:attribute>
<xsl:attribute name="margin-bottom">6pt</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="requirement-name-style">
<xsl:attribute name="keep-with-next">always</xsl:attribute>
<xsl:attribute name="font-weight">bold</xsl:attribute>
<xsl:attribute name="text-align">center</xsl:attribute>
<xsl:attribute name="margin-bottom">4pt</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="requirement-label-style">
</xsl:attribute-set>
<xsl:attribute-set name="subject-style">
</xsl:attribute-set>
<xsl:attribute-set name="inherit-style">
</xsl:attribute-set>
<xsl:attribute-set name="description-style">
</xsl:attribute-set>
<xsl:attribute-set name="specification-style">
</xsl:attribute-set>
<xsl:attribute-set name="measurement-target-style">
</xsl:attribute-set>
<xsl:attribute-set name="verification-style">
</xsl:attribute-set>
<xsl:attribute-set name="import-style">
</xsl:attribute-set>
<xsl:attribute-set name="component-style">
</xsl:attribute-set>
<xsl:attribute-set name="recommendation-style">
</xsl:attribute-set>
<xsl:attribute-set name="recommendation-name-style">
</xsl:attribute-set>
<xsl:attribute-set name="recommendation-label-style">
</xsl:attribute-set>
<xsl:attribute-set name="termexample-style">
<xsl:attribute name="font-size">10pt</xsl:attribute>
<xsl:attribute name="margin-top">8pt</xsl:attribute>
<xsl:attribute name="margin-bottom">8pt</xsl:attribute>
<xsl:attribute name="text-align">justify</xsl:attribute>
</xsl:attribute-set>
<xsl:template name="refine_termexample-style">
<xsl:if test="$layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987' or $layoutVersion = '1989'">
<xsl:attribute name="font-size">9pt</xsl:attribute>
</xsl:if>
</xsl:template>
<xsl:attribute-set name="example-style">
<xsl:attribute name="font-size">10pt</xsl:attribute>
<xsl:attribute name="margin-top">8pt</xsl:attribute>
<xsl:attribute name="margin-bottom">8pt</xsl:attribute>
</xsl:attribute-set> <!-- example-style -->
<xsl:template name="refine_example-style">
<xsl:if test="$layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987' or $layoutVersion = '1989'">
<xsl:attribute name="font-size">9pt</xsl:attribute>
</xsl:if>
</xsl:template> <!-- refine_example-style -->
<xsl:attribute-set name="example-body-style">
<xsl:attribute name="margin-left">7mm</xsl:attribute>
<xsl:attribute name="margin-right">7mm</xsl:attribute>
</xsl:attribute-set> <!-- example-body-style -->
<xsl:attribute-set name="example-name-style">
<xsl:attribute name="keep-with-next">always</xsl:attribute>
<xsl:attribute name="padding-right">5mm</xsl:attribute>
<xsl:attribute name="margin-bottom">6pt</xsl:attribute>
</xsl:attribute-set> <!-- example-name-style -->
<xsl:template name="refine_example-name-style">
<xsl:if test="$layoutVersion = '2024' and translate(.,'0123456789','') = ."> <!-- EXAMPLE without number -->
<xsl:attribute name="padding-right">8mm</xsl:attribute>
</xsl:if>
</xsl:template>
<xsl:attribute-set name="example-p-style">
<xsl:attribute name="font-size">10pt</xsl:attribute>
<xsl:attribute name="margin-top">8pt</xsl:attribute>
<xsl:attribute name="margin-bottom">8pt</xsl:attribute>
<xsl:attribute name="text-align">justify</xsl:attribute>
</xsl:attribute-set> <!-- example-p-style -->
<xsl:template name="refine_example-p-style">
</xsl:template> <!-- refine_example-p-style -->
<xsl:attribute-set name="termexample-name-style">
<xsl:attribute name="padding-right">5mm</xsl:attribute>
</xsl:attribute-set> <!-- termexample-name-style -->
<xsl:template name="refine_termexample-name-style">
<xsl:if test="$layoutVersion = '2024' and translate(.,'0123456789','') = ."> <!-- EXAMPLE without number -->
<xsl:attribute name="padding-right">8mm</xsl:attribute>
</xsl:if>
</xsl:template>
<!-- ========================== -->
<!-- Table styles -->
<!-- ========================== -->
<xsl:variable name="table-border_">
1pt solid black
</xsl:variable>
<xsl:variable name="table-border" select="normalize-space($table-border_)"/>
<xsl:variable name="table-cell-border_">
0.5pt solid black
</xsl:variable>
<xsl:variable name="table-cell-border" select="normalize-space($table-cell-border_)"/>
<xsl:attribute-set name="table-container-style">
<xsl:attribute name="margin-left">0mm</xsl:attribute>
<xsl:attribute name="margin-right">0mm</xsl:attribute>
<xsl:attribute name="font-size">10pt</xsl:attribute>
<!-- <xsl:attribute name="margin-top">12pt</xsl:attribute> -->
<xsl:attribute name="margin-bottom">8pt</xsl:attribute>
</xsl:attribute-set> <!-- table-container-style -->
<xsl:template name="refine_table-container-style">
<xsl:param name="margin-side"/>
<xsl:if test="not(*[local-name() = 'name'])">
<xsl:attribute name="margin-top">12pt</xsl:attribute>
</xsl:if>
<xsl:if test="starts-with(@id, 'array_')">
<xsl:attribute name="margin-top">6pt</xsl:attribute>
</xsl:if>
<xsl:if test="$layoutVersion = '1951'">
<xsl:attribute name="font-size">inherit</xsl:attribute>
</xsl:if>
<xsl:if test="$layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987' or $layoutVersion = '1989'">
<xsl:if test="normalize-space(@width) != 'text-width'">
<xsl:attribute name="span">all</xsl:attribute>
</xsl:if>
<xsl:attribute name="font-size">9pt</xsl:attribute>
</xsl:if>
<!-- end table block-container attributes -->
</xsl:template> <!-- refine_table-container-style -->
<xsl:attribute-set name="table-style">
<xsl:attribute name="table-omit-footer-at-break">true</xsl:attribute>
<xsl:attribute name="table-layout">fixed</xsl:attribute>
<xsl:attribute name="border"><xsl:value-of select="$table-border"/></xsl:attribute>
</xsl:attribute-set><!-- table-style -->
<xsl:template name="refine_table-style">
<xsl:param name="margin-side"/>
<xsl:if test="*[local-name()='thead']">
<xsl:attribute name="border-top"><xsl:value-of select="$table-border"/></xsl:attribute>
</xsl:if>
<xsl:if test="ancestor::*[local-name() = 'table']">
<!-- for internal table in table cell -->
<xsl:attribute name="border"><xsl:value-of select="$table-cell-border"/></xsl:attribute>
</xsl:if>
<xsl:if test="$layoutVersion = '1951'">
<xsl:if test="@unnumbered = 'true' and ancestor::*[local-name() = 'preface']">
<xsl:attribute name="border">none</xsl:attribute>
</xsl:if>
</xsl:if>
<xsl:call-template name="setBordersTableArray"/>
</xsl:template> <!-- refine_table-style -->
<xsl:attribute-set name="table-name-style">
<xsl:attribute name="keep-with-next">always</xsl:attribute>
<xsl:attribute name="font-size">11pt</xsl:attribute>
<xsl:attribute name="font-weight">bold</xsl:attribute>
<xsl:attribute name="text-align">center</xsl:attribute>
<xsl:attribute name="margin-bottom">-12pt</xsl:attribute>
</xsl:attribute-set> <!-- table-name-style -->
<xsl:template name="refine_table-name-style">
<xsl:param name="continued"/>
<xsl:if test="$continued = 'true'">
<xsl:attribute name="margin-bottom">2pt</xsl:attribute>
</xsl:if>
<xsl:if test="$layoutVersion = '1951'">
<xsl:attribute name="font-size">inherit</xsl:attribute>
</xsl:if>
<xsl:if test="$layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987' or $layoutVersion = '1989'">
<xsl:attribute name="font-size">10pt</xsl:attribute>
<xsl:if test="normalize-space(../@width) != 'text-width'">
<xsl:attribute name="span">all</xsl:attribute>
<xsl:attribute name="margin-top">6pt</xsl:attribute>
</xsl:if>
</xsl:if>
</xsl:template> <!-- refine_table-name-style -->
<xsl:attribute-set name="table-row-style">
<xsl:attribute name="min-height">4mm</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="table-header-row-style" use-attribute-sets="table-row-style">
<xsl:attribute name="font-weight">bold</xsl:attribute>
<xsl:attribute name="border-top"><xsl:value-of select="$table-border"/></xsl:attribute>
<xsl:attribute name="border-bottom"><xsl:value-of select="$table-border"/></xsl:attribute>
</xsl:attribute-set>
<xsl:template name="refine_table-header-row-style">
<xsl:choose>
<xsl:when test="position() = 1">
<xsl:attribute name="border-top"><xsl:value-of select="$table-border"/></xsl:attribute>
<xsl:attribute name="border-bottom"><xsl:value-of select="$table-cell-border"/></xsl:attribute>
</xsl:when>
<xsl:when test="position() = last()">
<xsl:attribute name="border-top"><xsl:value-of select="$table-cell-border"/></xsl:attribute>
<xsl:attribute name="border-bottom"><xsl:value-of select="$table-border"/></xsl:attribute>
</xsl:when>
</xsl:choose>
<xsl:call-template name="setBordersTableArray"/>
</xsl:template> <!-- refine_table-header-row-style -->
<xsl:attribute-set name="table-footer-row-style" use-attribute-sets="table-row-style">
<xsl:attribute name="font-size">9pt</xsl:attribute>
<xsl:attribute name="border-left"><xsl:value-of select="$table-border"/></xsl:attribute>
<xsl:attribute name="border-right"><xsl:value-of select="$table-border"/></xsl:attribute>
</xsl:attribute-set>
<xsl:template name="refine_table-footer-row-style">
</xsl:template> <!-- refine_table-footer-row-style -->
<xsl:attribute-set name="table-body-row-style" use-attribute-sets="table-row-style">
</xsl:attribute-set>
<xsl:template name="refine_table-body-row-style">
<xsl:if test="position() = 1 and not(ancestor::*[local-name() = 'table']/*[local-name() = 'thead']) and ancestor::*[local-name() = 'table']/*[local-name() = 'name']">
<xsl:attribute name="border-top"><xsl:value-of select="$table-border"/></xsl:attribute>
</xsl:if>
<xsl:call-template name="setBordersTableArray"/>
</xsl:template> <!-- refine_table-body-row-style -->
<xsl:attribute-set name="table-header-cell-style">
<xsl:attribute name="font-weight">bold</xsl:attribute>
<xsl:attribute name="padding-left">1mm</xsl:attribute>
<xsl:attribute name="padding-right">1mm</xsl:attribute>
<xsl:attribute name="display-align">center</xsl:attribute>
<xsl:attribute name="border">solid black 1pt</xsl:attribute>
<xsl:attribute name="padding-top">0.5mm</xsl:attribute>
<xsl:attribute name="border-left"><xsl:value-of select="$table-cell-border"/></xsl:attribute>
<xsl:attribute name="border-right"><xsl:value-of select="$table-cell-border"/></xsl:attribute>
</xsl:attribute-set> <!-- table-header-cell-style -->
<xsl:template name="refine_table-header-cell-style">
<xsl:if test="../parent::*[local-name() = 'tbody'] and (following-sibling::*[local-name() = 'td'] or preceding-sibling::*[local-name() = 'td'])">
<xsl:attribute name="border-top"><xsl:value-of select="$table-cell-border"/></xsl:attribute>
<xsl:attribute name="border-bottom"><xsl:value-of select="$table-cell-border"/></xsl:attribute>
</xsl:if>
<!-- vertical table header -->
<xsl:if test="ancestor::*[local-name() = 'tbody'] and not(following-sibling::*[local-name() = 'th'])">
<xsl:attribute name="border-right"><xsl:value-of select="$table-border"/></xsl:attribute>
</xsl:if>
<xsl:call-template name="setBordersTableArray"/>
<xsl:if test="$lang = 'ar'">
<xsl:attribute name="padding-right">1mm</xsl:attribute>
</xsl:if>
<xsl:call-template name="setTableCellAttributes"/>
</xsl:template> <!-- refine_table-header-cell-style -->
<xsl:attribute-set name="table-cell-style">
<xsl:attribute name="display-align">center</xsl:attribute>
<xsl:attribute name="padding-left">1mm</xsl:attribute>
<xsl:attribute name="padding-right">1mm</xsl:attribute>
<xsl:attribute name="padding-top">0.5mm</xsl:attribute>
<xsl:attribute name="border"><xsl:value-of select="$table-cell-border"/></xsl:attribute>
</xsl:attribute-set> <!-- table-cell-style -->
<xsl:template name="refine_table-cell-style">
<xsl:if test="$lang = 'ar'">
<xsl:attribute name="padding-right">1mm</xsl:attribute>
</xsl:if>
<!-- bsi -->
<xsl:if test="ancestor::*[local-name() = 'tfoot']">
<xsl:attribute name="border">solid black 0</xsl:attribute>
</xsl:if>
<xsl:if test="starts-with(ancestor::*[local-name() = 'table'][1]/@type, 'recommend')">
<xsl:attribute name="display-align">before</xsl:attribute>
</xsl:if>
<xsl:if test="ancestor::*[local-name() = 'tbody'] and not(../preceding-sibling::*[local-name() = 'tr']) and ancestor::*[local-name() = 'table'][1]/*[local-name() = 'thead']"> <!-- cells in 1st row in the table body, and if thead exists -->
<xsl:attribute name="border-top">0pt solid black</xsl:attribute>
</xsl:if>
<xsl:if test="$layoutVersion = '1951'">
<xsl:if test="ancestor::*[local-name() = 'table'][1]/@unnumbered = 'true' and ancestor::*[local-name() = 'preface']">
<xsl:attribute name="border">none</xsl:attribute>
</xsl:if>
</xsl:if>
<!-- <xsl:attribute name="page-break-inside">avoid</xsl:attribute> -->
<xsl:call-template name="setBordersTableArray"/>
</xsl:template> <!-- refine_table-cell-style -->
<xsl:attribute-set name="table-footer-cell-style">
<xsl:attribute name="border">solid black 1pt</xsl:attribute>
<xsl:attribute name="padding-left">1mm</xsl:attribute>
<xsl:attribute name="padding-right">1mm</xsl:attribute>
<xsl:attribute name="padding-top">1mm</xsl:attribute>
<xsl:attribute name="border"><xsl:value-of select="$table-border"/></xsl:attribute>
<xsl:attribute name="border-top">solid black 0pt</xsl:attribute>
</xsl:attribute-set> <!-- table-footer-cell-style -->
<xsl:template name="refine_table-footer-cell-style">
<xsl:if test="$layoutVersion = '2024'">
<xsl:attribute name="border-top"><xsl:value-of select="$table-border"/></xsl:attribute>
</xsl:if>
</xsl:template> <!-- refine_table-footer-cell-style -->
<xsl:attribute-set name="table-note-style">
<xsl:attribute name="font-size">10pt</xsl:attribute>
<xsl:attribute name="margin-bottom">12pt</xsl:attribute>
<xsl:attribute name="font-size">9pt</xsl:attribute>
<xsl:attribute name="margin-bottom">6pt</xsl:attribute>
</xsl:attribute-set><!-- table-note-style -->
<xsl:template name="refine_table-note-style">
</xsl:template> <!-- refine_table-note-style -->
<xsl:attribute-set name="table-fn-style">
<xsl:attribute name="margin-bottom">12pt</xsl:attribute>
<xsl:attribute name="font-size">9pt</xsl:attribute>
<xsl:attribute name="margin-bottom">6pt</xsl:attribute>
</xsl:attribute-set> <!-- table-fn-style -->
<xsl:template name="refine_table-fn-style">
<xsl:if test="$layoutVersion = '2024'">
<xsl:attribute name="margin-bottom">5pt</xsl:attribute>
<xsl:if test="position() = last()">
<xsl:attribute name="margin-bottom">0pt</xsl:attribute>
</xsl:if>
</xsl:if>
</xsl:template>
<xsl:attribute-set name="table-fn-number-style">
<xsl:attribute name="font-size">80%</xsl:attribute>
<xsl:attribute name="padding-right">5mm</xsl:attribute>
<xsl:attribute name="alignment-baseline">hanging</xsl:attribute>
</xsl:attribute-set> <!-- table-fn-number-style -->
<xsl:template name="refine_table-fn-number-style">
<xsl:if test="$layoutVersion = '2024'">
<xsl:attribute name="alignment-baseline">auto</xsl:attribute>
<xsl:attribute name="baseline-shift">15%</xsl:attribute>
</xsl:if>
</xsl:template>
<xsl:attribute-set name="fn-container-body-style">
<xsl:attribute name="text-indent">0</xsl:attribute>
<xsl:attribute name="start-indent">0</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="table-fn-body-style">
</xsl:attribute-set>
<xsl:attribute-set name="figure-fn-number-style">
<xsl:attribute name="font-size">80%</xsl:attribute>
<xsl:attribute name="padding-right">5mm</xsl:attribute>
<xsl:attribute name="vertical-align">super</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="figure-fn-body-style">
<xsl:attribute name="text-align">justify</xsl:attribute>
<xsl:attribute name="margin-bottom">12pt</xsl:attribute>
</xsl:attribute-set>
<!-- ========================== -->
<!-- END Table styles -->
<!-- ========================== -->
<!-- ========================== -->
<!-- Definition's list styles -->
<!-- ========================== -->
<xsl:attribute-set name="dl-block-style">
</xsl:attribute-set>
<xsl:attribute-set name="dt-row-style">
</xsl:attribute-set>
<xsl:attribute-set name="dt-cell-style">
</xsl:attribute-set>
<xsl:template name="refine_dt-cell-style">
</xsl:template> <!-- refine_dt-cell-style -->
<xsl:attribute-set name="dt-block-style">
<xsl:attribute name="margin-top">0pt</xsl:attribute>
<xsl:attribute name="margin-bottom">8pt</xsl:attribute>
</xsl:attribute-set>
<xsl:template name="refine_dt-block-style">
<xsl:if test="$layoutVersion = '2024'">
<xsl:attribute name="margin-bottom">9pt</xsl:attribute>
</xsl:if>
</xsl:template> <!-- refine_dt-block-style -->
<xsl:attribute-set name="dl-name-style">
<xsl:attribute name="keep-with-next">always</xsl:attribute>
<xsl:attribute name="margin-bottom">6pt</xsl:attribute>
<xsl:attribute name="font-weight">bold</xsl:attribute>
</xsl:attribute-set> <!-- dl-name-style -->
<xsl:attribute-set name="dd-cell-style">
<xsl:attribute name="padding-left">2mm</xsl:attribute>
</xsl:attribute-set>
<xsl:template name="refine_dd-cell-style">
</xsl:template> <!-- refine_dd-cell-style -->
<!-- ========================== -->
<!-- END Definition's list styles -->
<!-- ========================== -->
<xsl:attribute-set name="appendix-style">
<xsl:attribute name="font-size">12pt</xsl:attribute>
<xsl:attribute name="font-weight">bold</xsl:attribute>
<xsl:attribute name="margin-top">12pt</xsl:attribute>
<xsl:attribute name="margin-bottom">12pt</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="appendix-example-style">
<xsl:attribute name="font-size">10pt</xsl:attribute>
<xsl:attribute name="margin-top">8pt</xsl:attribute>
<xsl:attribute name="margin-bottom">8pt</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="xref-style">
<xsl:attribute name="color">blue</xsl:attribute>
<xsl:attribute name="text-decoration">underline</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="eref-style">
</xsl:attribute-set>
<xsl:template name="refine_eref-style">
<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()"/>
</xsl:template> <!-- refine_eref-style -->
<xsl:attribute-set name="note-style">
<xsl:attribute name="font-size">10pt</xsl:attribute>
<xsl:attribute name="margin-top">8pt</xsl:attribute>
<xsl:attribute name="margin-bottom">12pt</xsl:attribute>
<xsl:attribute name="text-align">justify</xsl:attribute>
</xsl:attribute-set>
<xsl:template name="refine_note-style">
<xsl:if test="$layoutVersion = '1951'">
<!-- <xsl:if test="$revision_date_num < 19680101"> -->
<xsl:attribute name="font-size">8.5pt</xsl:attribute>
<!-- </xsl:if> -->
</xsl:if>
<xsl:if test="$layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987' or $layoutVersion = '1989'">
<xsl:attribute name="font-size">9pt</xsl:attribute>
</xsl:if>
<xsl:if test="$layoutVersion = '1987'">
<xsl:attribute name="margin-bottom">6pt</xsl:attribute>
</xsl:if>
<xsl:if test="$layoutVersion = '2024'">
<xsl:if test="ancestor::*[local-name() = 'li'] and not(following-sibling::*)">
<xsl:attribute name="margin-bottom">8pt</xsl:attribute>
</xsl:if>
<xsl:if test="preceding-sibling::*[1][local-name() = 'table']">
<xsl:attribute name="margin-top">0pt</xsl:attribute>
</xsl:if>
</xsl:if>
<xsl:if test="$doctype = 'amendment' and parent::*[local-name() = 'quote']">
<xsl:attribute name="font-size">inherit</xsl:attribute>
</xsl:if>
</xsl:template>
<xsl:variable name="note-body-indent">10mm</xsl:variable>
<xsl:variable name="note-body-indent-table">5mm</xsl:variable>
<xsl:attribute-set name="note-name-style">
<xsl:attribute name="padding-right">6mm</xsl:attribute>
</xsl:attribute-set>
<xsl:template name="refine_note-name-style">
<xsl:variable name="note_name" select="*[local-name() = 'name']"/>
<xsl:if test="$layoutVersion = '1951'">
<xsl:if test="$revision_date_num"> <!-- < 19610101 -->
<xsl:attribute name="padding-right">0mm</xsl:attribute>
</xsl:if>
</xsl:if>
<xsl:if test="$layoutVersion = '1987'">
<xsl:attribute name="padding-right">1mm</xsl:attribute>
<xsl:if test="not(translate($note_name,'0123456789','') = $note_name)"> <!-- NOTE with number -->
<xsl:attribute name="padding-right">3mm</xsl:attribute>
</xsl:if>
<xsl:if test="translate($note_name,'0123456789','') = $note_name"> <!-- NOTE without number -->
<xsl:attribute name="font-size">9.5pt</xsl:attribute>
</xsl:if>
</xsl:if>
<xsl:if test="$layoutVersion = '2024' and translate($note_name,'0123456789','') = $note_name"> <!-- NOTE without number -->
<xsl:attribute name="padding-right">8mm</xsl:attribute>
</xsl:if>
</xsl:template> <!-- refine_note-name-style -->
<xsl:attribute-set name="table-note-name-style">
<xsl:attribute name="padding-right">2mm</xsl:attribute>
</xsl:attribute-set>
<xsl:template name="refine_table-note-name-style">
</xsl:template> <!-- refine_table-note-name-style -->
<xsl:attribute-set name="note-p-style">
<xsl:attribute name="margin-top">8pt</xsl:attribute>
<xsl:attribute name="margin-bottom">12pt</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="termnote-style">
<xsl:attribute name="font-size">10pt</xsl:attribute>
<xsl:attribute name="margin-top">8pt</xsl:attribute>
<xsl:attribute name="margin-bottom">8pt</xsl:attribute>
<xsl:attribute name="text-align">justify</xsl:attribute>
</xsl:attribute-set>
<xsl:template name="refine_termnote-style">
<xsl:if test="$layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987' or $layoutVersion = '1989'">
<xsl:attribute name="font-size">9pt</xsl:attribute>
</xsl:if>
<xsl:if test="$doctype = 'amendment' and parent::*[local-name() = 'quote']">
<xsl:attribute name="font-size">inherit</xsl:attribute>
</xsl:if>
</xsl:template> <!-- refine_termnote-style -->
<xsl:attribute-set name="termnote-name-style">
</xsl:attribute-set>
<xsl:template name="refine_termnote-name-style">
</xsl:template>
<xsl:attribute-set name="termnote-p-style">
</xsl:attribute-set>
<xsl:attribute-set name="quote-style">
<xsl:attribute name="margin-left">12mm</xsl:attribute>
<xsl:attribute name="margin-right">12mm</xsl:attribute>
<xsl:attribute name="margin-top">12pt</xsl:attribute>
</xsl:attribute-set>
<xsl:template name="refine_quote-style">
<xsl:if test="$doctype = 'amendment' and (*[local-name() = 'note'] or *[local-name() = 'termnote'])">
<xsl:attribute name="margin-left">7mm</xsl:attribute>
<xsl:attribute name="margin-right">0mm</xsl:attribute>
</xsl:if>
</xsl:template>
<xsl:attribute-set name="quote-source-style">
<xsl:attribute name="text-align">right</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="termsource-style">
<xsl:attribute name="margin-bottom">8pt</xsl:attribute>
</xsl:attribute-set>
<xsl:template name="refine_termsource-style">
</xsl:template> <!-- refine_termsource-style -->
<xsl:attribute-set name="termsource-text-style">
</xsl:attribute-set>
<xsl:attribute-set name="origin-style">
</xsl:attribute-set>
<xsl:attribute-set name="term-style">
<xsl:attribute name="margin-bottom">10pt</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="term-name-style">
<xsl:attribute name="keep-with-next">always</xsl:attribute>
<xsl:attribute name="font-weight">bold</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="figure-block-style">
<xsl:attribute name="role">SKIP</xsl:attribute>
<xsl:attribute name="space-after">12pt</xsl:attribute>
</xsl:attribute-set>
<xsl:template name="refine_figure-block-style">
<xsl:if test="$layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987' or $layoutVersion = '1989'">
<xsl:if test="normalize-space(@width) != 'text-width'">
<xsl:attribute name="span">all</xsl:attribute>
<xsl:attribute name="margin-top">6pt</xsl:attribute>
<xsl:attribute name="margin-bottom">6pt</xsl:attribute>
</xsl:if>
</xsl:if>
<xsl:if test="$layoutVersion = '2024'">
<xsl:attribute name="space-after">18pt</xsl:attribute>
</xsl:if>
</xsl:template>
<xsl:attribute-set name="figure-style">
</xsl:attribute-set>
<xsl:attribute-set name="figure-name-style">
<xsl:attribute name="role">Caption</xsl:attribute>
<xsl:attribute name="font-weight">bold</xsl:attribute>
<xsl:attribute name="text-align">center</xsl:attribute>
<xsl:attribute name="margin-top">12pt</xsl:attribute>
<xsl:attribute name="space-after">12pt</xsl:attribute>
<xsl:attribute name="keep-with-previous">always</xsl:attribute>
</xsl:attribute-set>
<xsl:template name="refine_figure-name-style">
</xsl:template> <!-- refine_figure-name-style -->
<xsl:attribute-set name="figure-source-style">
</xsl:attribute-set>
<!-- Formula's styles -->
<xsl:attribute-set name="formula-style">
<xsl:attribute name="margin-top">6pt</xsl:attribute>
<xsl:attribute name="margin-bottom">12pt</xsl:attribute>
</xsl:attribute-set> <!-- formula-style -->
<xsl:attribute-set name="formula-stem-block-style">
<xsl:attribute name="text-align">center</xsl:attribute>
<xsl:attribute name="text-align">left</xsl:attribute>
<xsl:attribute name="margin-left">5mm</xsl:attribute>
</xsl:attribute-set> <!-- formula-stem-block-style -->
<xsl:template name="refine_formula-stem-block-style">
</xsl:template> <!-- refine_formula-stem-block-style -->
<xsl:attribute-set name="formula-stem-number-style">
<xsl:attribute name="text-align">right</xsl:attribute>
</xsl:attribute-set> <!-- formula-stem-number-style -->
<!-- End Formula's styles -->
<xsl:template name="refine_formula-stem-number-style">
</xsl:template>
<xsl:attribute-set name="image-style">
<xsl:attribute name="role">SKIP</xsl:attribute>
<xsl:attribute name="text-align">center</xsl:attribute>
</xsl:attribute-set>
<xsl:template name="refine_image-style">
</xsl:template>
<xsl:attribute-set name="figure-pseudocode-p-style">
</xsl:attribute-set>
<xsl:attribute-set name="image-graphic-style">
<xsl:attribute name="width">100%</xsl:attribute>
<xsl:attribute name="content-height">100%</xsl:attribute>
<xsl:attribute name="scaling">uniform</xsl:attribute>
<xsl:attribute name="content-height">scale-to-fit</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="tt-style">
<xsl:attribute name="font-family">Courier New, <xsl:value-of select="$font_noto_sans_mono"/></xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="sourcecode-name-style">
<xsl:attribute name="font-size">11pt</xsl:attribute>
<xsl:attribute name="font-weight">bold</xsl:attribute>
<xsl:attribute name="text-align">center</xsl:attribute>
<xsl:attribute name="margin-bottom">12pt</xsl:attribute>
<xsl:attribute name="keep-with-previous">always</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="preferred-block-style">
<xsl:attribute name="line-height">1.1</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="preferred-term-style">
<xsl:attribute name="keep-with-next">always</xsl:attribute>
<xsl:attribute name="font-weight">bold</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="domain-style">
</xsl:attribute-set>
<xsl:attribute-set name="admitted-style">
</xsl:attribute-set>
<xsl:attribute-set name="deprecates-style">
</xsl:attribute-set>
<xsl:attribute-set name="definition-style">
<xsl:attribute name="margin-bottom">6pt</xsl:attribute>
</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="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">
<xsl:attribute name="font-family">STIX Two Math</xsl:attribute>
<xsl:attribute name="font-family">Cambria Math</xsl:attribute>
</xsl:attribute-set>
<xsl:template name="refine_mathml-style">
</xsl:template>
<xsl:attribute-set name="list-style">
<xsl:attribute name="provisional-distance-between-starts">7mm</xsl:attribute>
<xsl:attribute name="margin-top">8pt</xsl:attribute>
</xsl:attribute-set> <!-- list-style -->
<xsl:template name="refine_list-style">
<xsl:if test="not(ancestor::*[local-name() = 'ul' or local-name() = 'ol'])">
<xsl:attribute name="margin-bottom">8pt</xsl:attribute>
</xsl:if>
</xsl:template> <!-- refine_list-style -->
<xsl:attribute-set name="list-name-style">
<xsl:attribute name="keep-with-next">always</xsl:attribute>
<xsl:attribute name="margin-top">8pt</xsl:attribute>
<xsl:attribute name="font-weight">bold</xsl:attribute>
</xsl:attribute-set> <!-- list-name-style -->
<xsl:attribute-set name="list-item-style">
</xsl:attribute-set>
<xsl:template name="refine_list-item-style">
</xsl:template> <!-- refine_list-item-style -->
<xsl:attribute-set name="list-item-label-style">
</xsl:attribute-set>
<xsl:template name="refine_list-item-label-style">
</xsl:template> <!-- refine_list-item-label-style -->
<xsl:attribute-set name="list-item-body-style">
<xsl:attribute name="line-height-shift-adjustment">disregard-shifts</xsl:attribute>
</xsl:attribute-set>
<xsl:template name="refine_list-item-body-style">
</xsl:template> <!-- refine_list-item-body-style -->
<xsl:attribute-set name="toc-style">
<xsl:attribute name="line-height">135%</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="fn-reference-style">
<xsl:attribute name="font-size">80%</xsl:attribute>
<xsl:attribute name="keep-with-previous.within-line">always</xsl:attribute>
</xsl:attribute-set>
<xsl:template name="refine_fn-reference-style">
<xsl:if test="ancestor::*[local-name()='table']">
<xsl:attribute name="font-weight">normal</xsl:attribute>
<xsl:attribute name="baseline-shift">15%</xsl:attribute>
</xsl:if>
</xsl:template> <!-- refine_fn-reference-style -->
<xsl:attribute-set name="fn-style">
<xsl:attribute name="keep-with-previous.within-line">always</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="fn-num-style">
<xsl:attribute name="keep-with-previous.within-line">always</xsl:attribute>
<xsl:attribute name="font-size">80%</xsl:attribute>
<!--<xsl:attribute name="vertical-align">super</xsl:attribute> -->
<xsl:attribute name="baseline-shift">30%</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="fn-body-style">
<xsl:attribute name="font-weight">normal</xsl:attribute>
<xsl:attribute name="font-style">normal</xsl:attribute>
<xsl:attribute name="text-indent">0</xsl:attribute>
<xsl:attribute name="start-indent">0</xsl:attribute>
<xsl:attribute name="font-size">10pt</xsl:attribute>
<xsl:attribute name="margin-bottom">12pt</xsl:attribute>
</xsl:attribute-set>
<xsl:template name="refine_fn-body-style">
<xsl:if test="$layoutVersion = '1951'">
<xsl:if test="$revision_date_num >= 19680101">
<xsl:attribute name="font-size">9pt</xsl:attribute>
</xsl:if>
</xsl:if>
<xsl:if test="$layoutVersion = '1972' or $layoutVersion = '1979' or $layoutVersion = '1987' or $layoutVersion = '1989'">
<xsl:attribute name="font-size">9pt</xsl:attribute>
</xsl:if>
<xsl:if test="$layoutVersion = '2024'">
<xsl:attribute name="margin-bottom">6pt</xsl:attribute>
</xsl:if>
</xsl:template> <!-- refine_fn-body-style -->
<xsl:attribute-set name="fn-body-num-style">
<xsl:attribute name="keep-with-next.within-line">always</xsl:attribute>
<xsl:attribute name="padding-right">3mm</xsl:attribute>
</xsl:attribute-set> <!-- fn-body-num-style -->
<xsl:template name="refine_fn-body-num-style">
</xsl:template> <!-- refine_fn-body-num-style -->
<!-- admonition -->
<xsl:attribute-set name="admonition-style">
<xsl:attribute name="margin-bottom">12pt</xsl:attribute>
<xsl:attribute name="font-weight">bold</xsl:attribute>
</xsl:attribute-set> <!-- admonition-style -->
<xsl:attribute-set name="admonition-container-style">
<xsl:attribute name="margin-left">0mm</xsl:attribute>
<xsl:attribute name="margin-right">0mm</xsl:attribute>
</xsl:attribute-set> <!-- admonition-container-style -->
<xsl:attribute-set name="admonition-name-style">
<xsl:attribute name="keep-with-next">always</xsl:attribute>
</xsl:attribute-set> <!-- admonition-name-style -->
<xsl:attribute-set name="admonition-p-style">
</xsl:attribute-set> <!-- admonition-p-style -->
<!-- end admonition -->
<!-- bibitem in Normative References (references/@normative="true") -->
<xsl:attribute-set name="bibitem-normative-style">
<xsl:attribute name="margin-bottom">6pt</xsl:attribute>
</xsl:attribute-set> <!-- bibitem-normative-style -->
<!-- bibitem in Normative References (references/@normative="true"), renders as list -->
<xsl:attribute-set name="bibitem-normative-list-style">
<xsl:attribute name="provisional-distance-between-starts">12mm</xsl:attribute>
<xsl:attribute name="margin-bottom">12pt</xsl:attribute>
<!-- <xsl:if test="$namespace = 'ieee'">
<xsl:attribute name="margin-bottom">6pt</xsl:attribute>
<xsl:attribute name="provisional-distance-between-starts">9.5mm</xsl:attribute>
</xsl:if> -->
<xsl:attribute name="margin-bottom">6pt</xsl:attribute>
</xsl:attribute-set> <!-- bibitem-normative-list-style -->
<xsl:attribute-set name="bibitem-non-normative-style">
</xsl:attribute-set> <!-- bibitem-non-normative-style -->
<!-- bibitem in bibliography section (references/@normative="false"), renders as list -->
<xsl:attribute-set name="bibitem-non-normative-list-style">
<xsl:attribute name="provisional-distance-between-starts">12mm</xsl:attribute>
<xsl:attribute name="margin-bottom">12pt</xsl:attribute>
<xsl:attribute name="margin-bottom">6pt</xsl:attribute>
</xsl:attribute-set> <!-- bibitem-non-normative-list-style -->
<xsl:attribute-set name="bibitem-non-normative-list-item-style">
<xsl:attribute name="margin-bottom">12pt</xsl:attribute>
<xsl:attribute name="margin-bottom">6pt</xsl:attribute>
</xsl:attribute-set>
<!-- bibitem in bibliography section (references/@normative="false"), list body -->
<xsl:attribute-set name="bibitem-normative-list-body-style">
</xsl:attribute-set>
<xsl:attribute-set name="bibitem-non-normative-list-body-style">
</xsl:attribute-set> <!-- bibitem-non-normative-list-body-style -->
<!-- footnote reference number for bibitem, in the text -->
<xsl:attribute-set name="bibitem-note-fn-style">
<xsl:attribute name="keep-with-previous.within-line">always</xsl:attribute>
<xsl:attribute name="font-size">65%</xsl:attribute>
<xsl:attribute name="font-size">8pt</xsl:attribute>
<xsl:attribute name="baseline-shift">30%</xsl:attribute>
</xsl:attribute-set> <!-- bibitem-note-fn-style -->
<!-- footnote number on the page bottom -->
<xsl:attribute-set name="bibitem-note-fn-number-style">
<xsl:attribute name="keep-with-next.within-line">always</xsl:attribute>
<xsl:attribute name="alignment-baseline">hanging</xsl:attribute>
<xsl:attribute name="padding-right">3mm</xsl:attribute>
</xsl:attribute-set> <!-- bibitem-note-fn-number-style -->
<!-- footnote body (text) on the page bottom -->
<xsl:attribute-set name="bibitem-note-fn-body-style">
<xsl:attribute name="font-size">10pt</xsl:attribute>
<xsl:attribute name="margin-bottom">12pt</xsl:attribute>
<xsl:attribute name="start-indent">0pt</xsl:attribute>
<xsl:attribute name="margin-bottom">4pt</xsl:attribute>
</xsl:attribute-set> <!-- bibitem-note-fn-body-style -->
<xsl:attribute-set name="references-non-normative-style">
</xsl:attribute-set> <!-- references-non-normative-style -->
<!-- Highlight.js syntax GitHub styles -->
<xsl:attribute-set name="hljs-doctag">
<xsl:attribute name="color">#d73a49</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-keyword">
<xsl:attribute name="color">#d73a49</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-meta_hljs-keyword">
<xsl:attribute name="color">#d73a49</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-template-tag">
<xsl:attribute name="color">#d73a49</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-template-variable">
<xsl:attribute name="color">#d73a49</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-type">
<xsl:attribute name="color">#d73a49</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-variable_and_language_">
<xsl:attribute name="color">#d73a49</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-title">
<xsl:attribute name="color">#6f42c1</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-title_and_class_">
<xsl:attribute name="color">#6f42c1</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-title_and_class__and_inherited__">
<xsl:attribute name="color">#6f42c1</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-title_and_function_">
<xsl:attribute name="color">#6f42c1</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-attr">
<xsl:attribute name="color">#005cc5</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-attribute">
<xsl:attribute name="color">#005cc5</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-literal">
<xsl:attribute name="color">#005cc5</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-meta">
<xsl:attribute name="color">#005cc5</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-number">
<xsl:attribute name="color">#005cc5</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-operator">
<xsl:attribute name="color">#005cc5</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-variable">
<xsl:attribute name="color">#005cc5</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-selector-attr">
<xsl:attribute name="color">#005cc5</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-selector-class">
<xsl:attribute name="color">#005cc5</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-selector-id">
<xsl:attribute name="color">#005cc5</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-regexp">
<xsl:attribute name="color">#032f62</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-string">
<xsl:attribute name="color">#032f62</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-meta_hljs-string">
<xsl:attribute name="color">#032f62</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-built_in">
<xsl:attribute name="color">#e36209</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-symbol">
<xsl:attribute name="color">#e36209</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-comment">
<xsl:attribute name="color">#6a737d</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-code">
<xsl:attribute name="color">#6a737d</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-formula">
<xsl:attribute name="color">#6a737d</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-name">
<xsl:attribute name="color">#22863a</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-quote">
<xsl:attribute name="color">#22863a</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-selector-tag">
<xsl:attribute name="color">#22863a</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-selector-pseudo">
<xsl:attribute name="color">#22863a</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-subst">
<xsl:attribute name="color">#24292e</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-section">
<xsl:attribute name="color">#005cc5</xsl:attribute>
<xsl:attribute name="font-weight">bold</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-bullet">
<xsl:attribute name="color">#735c0f</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-emphasis">
<xsl:attribute name="color">#24292e</xsl:attribute>
<xsl:attribute name="font-style">italic</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-strong">
<xsl:attribute name="color">#24292e</xsl:attribute>
<xsl:attribute name="font-weight">bold</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-addition">
<xsl:attribute name="color">#22863a</xsl:attribute>
<xsl:attribute name="background-color">#f0fff4</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-deletion">
<xsl:attribute name="color">#b31d28</xsl:attribute>
<xsl:attribute name="background-color">#ffeef0</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="hljs-char_and_escape_">
</xsl:attribute-set>
<xsl:attribute-set name="hljs-link">
</xsl:attribute-set>
<xsl:attribute-set name="hljs-params">
</xsl:attribute-set>
<xsl:attribute-set name="hljs-property">
</xsl:attribute-set>
<xsl:attribute-set name="hljs-punctuation">
</xsl:attribute-set>
<xsl:attribute-set name="hljs-tag">
</xsl:attribute-set>
<!-- End Highlight syntax styles -->
<!-- Index section styles -->
<xsl:attribute-set name="indexsect-title-style">
<xsl:attribute name="role">H1</xsl:attribute>
<xsl:attribute name="font-size">16pt</xsl:attribute>
<xsl:attribute name="font-weight">bold</xsl:attribute>
<xsl:attribute name="margin-bottom">84pt</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="indexsect-clause-title-style">
<xsl:attribute name="keep-with-next">always</xsl:attribute>
<xsl:attribute name="font-size">10pt</xsl:attribute>
<xsl:attribute name="font-weight">bold</xsl:attribute>
<xsl:attribute name="margin-bottom">3pt</xsl:attribute>
</xsl:attribute-set>
<!-- End Index section styles -->
<!-- ====================================== -->
<!-- END STYLES -->
<!-- ====================================== -->
<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']/*[not(local-name() = 'note' or local-name() = 'admonition' or @type = 'toc')]">
<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']/*[not(local-name() = 'note' or local-name() = 'admonition' or @type = 'toc')]">
<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"/>
<xsl:apply-templates select="." mode="contents"/>
</xsl:for-each> -->
<xsl:for-each select="/*/*[local-name()='annex'] | /*/*[local-name()='bibliography']/*[not(@normative='true') and not(*[local-name()='references'][@normative='true'])][count(.//*[local-name() = 'bibitem'][not(@hidden) = 'true']) > 0] | /*/*[local-name()='bibliography']/*[local-name()='clause'][*[local-name()='references'][not(@normative='true')]][count(.//*[local-name() = 'bibitem'][not(@hidden) = 'true']) > 0]">
<xsl:sort select="@displayorder" data-type="number"/>
<xsl:apply-templates select="." mode="contents"/>
</xsl:for-each>
</xsl:template>
<xsl:template name="processTablesFigures_Contents">
<xsl:param name="always"/>
<xsl:if test="(//*[contains(local-name(), '-standard')]/*[local-name() = 'metanorma-extension']/*[local-name() = 'toc'][@type='table']/*[local-name() = 'title']) or normalize-space($always) = 'true'">
<xsl:call-template name="processTables_Contents"/>
</xsl:if>
<xsl:if test="(//*[contains(local-name(), '-standard')]/*[local-name() = 'metanorma-extension']/*[local-name() = 'toc'][@type='figure']/*[local-name() = 'title']) or normalize-space($always) = 'true'">
<xsl:call-template name="processFigures_Contents"/>
</xsl:if>
</xsl:template>
<xsl:template name="processTables_Contents">
<tables>
<xsl:for-each select="//*[local-name() = 'table'][not(ancestor::*[local-name() = 'metanorma-extension'])][@id and *[local-name() = 'name'] and normalize-space(@id) != '']">
<table id="{@id}" alt-text="{*[local-name() = 'name']}">
<xsl:copy-of select="*[local-name() = 'name']"/>
</table>
</xsl:for-each>
</tables>
</xsl:template>
<xsl:template name="processFigures_Contents">
<figures>
<xsl:for-each select="//*[local-name() = 'figure'][@id and *[local-name() = 'name'] and not(@unnumbered = 'true') and normalize-space(@id) != ''] | //*[@id and starts-with(*[local-name() = 'name'], 'Figure ') and normalize-space(@id) != '']">
<figure id="{@id}" alt-text="{*[local-name() = 'name']}">
<xsl:copy-of select="*[local-name() = 'name']"/>
</figure>
</xsl:for-each>
</figures>
</xsl:template>
<xsl:template name="processPrefaceSectionsDefault">
<xsl:for-each select="/*/*[local-name()='preface']/*[not(local-name() = 'note' or local-name() = 'admonition')]">
<xsl:sort select="@displayorder" data-type="number"/>
<xsl:apply-templates select="."/>
</xsl:for-each>
</xsl:template>
<xsl:template name="copyCommonElements">
<!-- copy bibdata, localized-strings, metanorma-extension and boilerplate -->
<xsl:copy-of select="/*/*[local-name() != 'preface' and local-name() != 'sections' and local-name() != 'annex' and local-name() != 'bibliography' and local-name() != 'indexsect']"/>
</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><!-- END: processMainSectionsDefault -->
<!-- Example:
<iso-standard>
<preface>
<page_sequence>
<clause...
</page_sequence>
<page_sequence>
<clause...
</page_sequence>
</preface>
<sections>
<page_sequence>
<clause...
</page_sequence>
<page_sequence>
<clause...
</page_sequence>
</sections>
<page_sequence>
<annex ..
</page_sequence>
<page_sequence>
<annex ..
</page_sequence>
</iso-standard>
-->
<xsl:template name="processPrefaceAndMainSectionsDefault_items">
<xsl:variable name="updated_xml_step_move_pagebreak">
<xsl:element name="{$root_element}" namespace="{$namespace_full}">
<xsl:call-template name="copyCommonElements"/>
<xsl:call-template name="insertPrefaceSectionsPageSequences"/>
<xsl:call-template name="insertMainSectionsPageSequences"/>
</xsl:element>
</xsl:variable>
<xsl:variable name="updated_xml_step_move_pagebreak_filename" select="concat($output_path,'_main_', java:getTime(java:java.util.Date.new()), '.xml')"/>
<redirect:write file="{$updated_xml_step_move_pagebreak_filename}">
<xsl:copy-of select="$updated_xml_step_move_pagebreak"/>
</redirect:write>
<xsl:copy-of select="document($updated_xml_step_move_pagebreak_filename)"/>
<xsl:if test="$debug = 'true'">
<redirect:write file="page_sequence_preface_and_main.xml">
<xsl:copy-of select="$updated_xml_step_move_pagebreak"/>
</redirect:write>
</xsl:if>
<xsl:call-template name="deleteFile">
<xsl:with-param name="filepath" select="$updated_xml_step_move_pagebreak_filename"/>
</xsl:call-template>
</xsl:template> <!-- END: processPrefaceAndMainSectionsDefault_items -->
<xsl:template name="insertPrefaceSectionsPageSequences">
<xsl:element name="preface" namespace="{$namespace_full}"> <!-- save context element -->
<xsl:element name="page_sequence" namespace="{$namespace_full}">
<xsl:for-each select="/*/*[local-name()='preface']/*[not(local-name() = 'note' or local-name() = 'admonition')]">
<xsl:sort select="@displayorder" data-type="number"/>
<xsl:apply-templates select="." mode="update_xml_step_move_pagebreak"/>
</xsl:for-each>
</xsl:element>
</xsl:element>
</xsl:template> <!-- END: insertPrefaceSectionsPageSequences -->
<xsl:template name="insertMainSectionsPageSequences">
<xsl:element name="sections" namespace="{$namespace_full}"> <!-- save context element -->
<xsl:element name="page_sequence" namespace="{$namespace_full}">
<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="update_xml_step_move_pagebreak"/>
</xsl:for-each>
</xsl:element>
</xsl:element>
<xsl:element name="page_sequence" namespace="{$namespace_full}">
<xsl:for-each select="/*/*[local-name()='annex']">
<xsl:sort select="@displayorder" data-type="number"/>
<xsl:apply-templates select="." mode="update_xml_step_move_pagebreak"/>
</xsl:for-each>
</xsl:element>
<xsl:element name="page_sequence" namespace="{$namespace_full}">
<xsl:element name="bibliography" namespace="{$namespace_full}"> <!-- save context element -->
<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="update_xml_step_move_pagebreak"/>
</xsl:for-each>
</xsl:element>
</xsl:element>
</xsl:template> <!-- END: insertMainSectionsPageSequences -->
<xsl:template name="insertMainSectionsInSeparatePageSequences">
<xsl:element name="sections" namespace="{$namespace_full}"> <!-- save context element -->
<xsl:for-each select="/*/*[local-name()='sections']/* | /*/*[local-name()='bibliography']/*[local-name()='references'][@normative='true']">
<xsl:sort select="@displayorder" data-type="number"/>
<xsl:element name="page_sequence" namespace="{$namespace_full}">
<xsl:attribute name="main_page_sequence"/>
<xsl:apply-templates select="." mode="update_xml_step_move_pagebreak"/>
</xsl:element>
</xsl:for-each>
</xsl:element>
<xsl:call-template name="insertAnnexAndBibliographyInSeparatePageSequences"/>
<!-- <xsl:call-template name="insertBibliographyInSeparatePageSequences"/> -->
<!-- <xsl:call-template name="insertIndexInSeparatePageSequences"/> -->
</xsl:template> <!-- END: insertMainSectionsInSeparatePageSequences -->
<xsl:template name="insertAnnexAndBibliographyInSeparatePageSequences">
<xsl:for-each select="/*/*[local-name()='annex'] | /*/*[local-name()='bibliography']/*[not(@normative='true')] | /*/*[local-name()='bibliography']/*[local-name()='clause'][*[local-name()='references'][not(@normative='true')]] | /*/*[local-name()='indexsect']">
<xsl:sort select="@displayorder" data-type="number"/>
<xsl:choose>
<xsl:when test="local-name() = 'annex' or local-name() = 'indexsect'">
<xsl:element name="page_sequence" namespace="{$namespace_full}">
<xsl:attribute name="main_page_sequence"/>
<xsl:apply-templates select="." mode="update_xml_step_move_pagebreak"/>
</xsl:element>
</xsl:when>
<xsl:otherwise> <!-- bibliography -->
<xsl:element name="bibliography" namespace="{$namespace_full}"> <!-- save context element -->
<xsl:element name="page_sequence" namespace="{$namespace_full}">
<xsl:attribute name="main_page_sequence"/>
<xsl:apply-templates select="." mode="update_xml_step_move_pagebreak"/>
</xsl:element>
</xsl:element>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:template>
<xsl:template name="insertAnnexInSeparatePageSequences">
<xsl:for-each select="/*/*[local-name()='annex']">
<xsl:sort select="@displayorder" data-type="number"/>
<xsl:element name="page_sequence" namespace="{$namespace_full}">
<xsl:attribute name="main_page_sequence"/>
<xsl:apply-templates select="." mode="update_xml_step_move_pagebreak"/>
</xsl:element>
</xsl:for-each>
</xsl:template>
<xsl:template name="insertBibliographyInSeparatePageSequences">
<xsl:element name="bibliography" namespace="{$namespace_full}"> <!-- save context element -->
<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:element name="page_sequence" namespace="{$namespace_full}">
<xsl:attribute name="main_page_sequence"/>
<xsl:apply-templates select="." mode="update_xml_step_move_pagebreak"/>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:template>
<xsl:template name="insertIndexInSeparatePageSequences">
<xsl:for-each select="/*/*[local-name()='indexsect']">
<xsl:sort select="@displayorder" data-type="number"/>
<xsl:element name="page_sequence" namespace="{$namespace_full}">
<xsl:attribute name="main_page_sequence"/>
<xsl:apply-templates select="." mode="update_xml_step_move_pagebreak"/>
</xsl:element>
</xsl:for-each>
</xsl:template>
<xsl:template name="processAllSectionsDefault_items">
<xsl:variable name="updated_xml_step_move_pagebreak">
<xsl:element name="{$root_element}" namespace="{$namespace_full}">
<xsl:call-template name="copyCommonElements"/>
<xsl:element name="page_sequence" namespace="{$namespace_full}">
<xsl:call-template name="insertPrefaceSections"/>
<xsl:call-template name="insertMainSections"/>
</xsl:element>
</xsl:element>
</xsl:variable>
<xsl:variable name="updated_xml_step_move_pagebreak_filename" select="concat($output_path,'_preface_and_main_', java:getTime(java:java.util.Date.new()), '.xml')"/>
<!-- <xsl:message>updated_xml_step_move_pagebreak_filename=<xsl:value-of select="$updated_xml_step_move_pagebreak_filename"/></xsl:message>
<xsl:message>start write updated_xml_step_move_pagebreak_filename</xsl:message> -->
<redirect:write file="{$updated_xml_step_move_pagebreak_filename}">
<xsl:copy-of select="$updated_xml_step_move_pagebreak"/>
</redirect:write>
<!-- <xsl:message>end write updated_xml_step_move_pagebreak_filename</xsl:message> -->
<xsl:copy-of select="document($updated_xml_step_move_pagebreak_filename)"/>
<!-- TODO: instead of
<xsl:for-each select=".//*[local-name() = 'page_sequence'][normalize-space() != '' or .//image or .//svg]">
in each template, add removing empty page_sequence here
-->
<xsl:if test="$debug = 'true'">
<redirect:write file="page_sequence_preface_and_main.xml">
<xsl:copy-of select="$updated_xml_step_move_pagebreak"/>
</redirect:write>
</xsl:if>
<!-- <xsl:message>start delete updated_xml_step_move_pagebreak_filename</xsl:message> -->
<xsl:call-template name="deleteFile">
<xsl:with-param name="filepath" select="$updated_xml_step_move_pagebreak_filename"/>
</xsl:call-template>
<!-- <xsl:message>end delete updated_xml_step_move_pagebreak_filename</xsl:message> -->
</xsl:template> <!-- END: processAllSectionsDefault_items -->
<xsl:template name="insertPrefaceSections">
<xsl:element name="preface" namespace="{$namespace_full}"> <!-- save context element -->
<xsl:for-each select="/*/*[local-name()='preface']/*[not(local-name() = 'note' or local-name() = 'admonition')]">
<xsl:sort select="@displayorder" data-type="number"/>
<xsl:apply-templates select="." mode="update_xml_step_move_pagebreak">
<xsl:with-param name="page_sequence_at_top">true</xsl:with-param>
</xsl:apply-templates>
</xsl:for-each>
</xsl:element>
</xsl:template>
<xsl:template name="insertMainSections">
<xsl:element name="sections" namespace="{$namespace_full}"> <!-- save context element -->
<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="update_xml_step_move_pagebreak">
<xsl:with-param name="page_sequence_at_top">true</xsl:with-param>
</xsl:apply-templates>
</xsl:for-each>
</xsl:element>
<xsl:for-each select="/*/*[local-name()='annex']">
<xsl:sort select="@displayorder" data-type="number"/>
<xsl:apply-templates select="." mode="update_xml_step_move_pagebreak">
<xsl:with-param name="page_sequence_at_top">true</xsl:with-param>
</xsl:apply-templates>
</xsl:for-each>
<xsl:element name="bibliography" namespace="{$namespace_full}"> <!-- save context element -->
<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="update_xml_step_move_pagebreak">
<xsl:with-param name="page_sequence_at_top">true</xsl:with-param>
</xsl:apply-templates>
</xsl:for-each>
</xsl:element>
</xsl:template>
<xsl:template name="deleteFile">
<xsl:param name="filepath"/>
<xsl:variable name="xml_file" select="java:java.io.File.new($filepath)"/>
<xsl:variable name="xml_file_path" select="java:toPath($xml_file)"/>
<xsl:variable name="deletefile" select="java:java.nio.file.Files.deleteIfExists($xml_file_path)"/>
</xsl:template>
<xsl:template name="getPageSequenceOrientation">
<xsl:variable name="previous_orientation" select="preceding-sibling::*[local-name() = 'page_sequence'][@orientation][1]/@orientation"/>
<xsl:choose>
<xsl:when test="@orientation = 'landscape'">-<xsl:value-of select="@orientation"/></xsl:when>
<xsl:when test="$previous_orientation = 'landscape' and not(@orientation = 'portrait')">-<xsl:value-of select="$previous_orientation"/></xsl:when>
</xsl:choose>
</xsl:template>
<xsl:variable name="regex_standard_reference">([A-Z]{2,}(/[A-Z]{2,})* \d+(-\d+)*(:\d{4})?)</xsl:variable>
<xsl:variable name="tag_fo_inline_keep-together_within-line_open">###fo:inline keep-together_within-line###</xsl:variable>
<xsl:variable name="tag_fo_inline_keep-together_within-line_close">###/fo:inline keep-together_within-line###</xsl:variable>
<xsl:template match="text()" name="text">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template name="replace_fo_inline_tags">
<xsl:param name="tag_open"/>
<xsl:param name="tag_close"/>
<xsl:param name="text"/>
<xsl:choose>
<xsl:when test="contains($text, $tag_open)">
<xsl:value-of select="substring-before($text, $tag_open)"/>
<!-- <xsl:text disable-output-escaping="yes"><fo:inline keep-together.within-line="always"></xsl:text> -->
<xsl:variable name="text_after" select="substring-after($text, $tag_open)"/>
<xsl:choose>
<xsl:when test="local-name(..) = 'keep-together_within-line'"> <!-- prevent two nested <fo:inline keep-together.within-line="always"><fo:inline keep-together.within-line="always" -->
<xsl:value-of select="substring-before($text_after, $tag_close)"/>
</xsl:when>
<xsl:otherwise>
<fo:inline keep-together.within-line="always" role="SKIP">
<xsl:value-of select="substring-before($text_after, $tag_close)"/>
</fo:inline>
</xsl:otherwise>
</xsl:choose>
<!-- <xsl:text disable-output-escaping="yes"></fo:inline></xsl:text> -->
<xsl:call-template name="replace_fo_inline_tags">
<xsl:with-param name="tag_open" select="$tag_open"/>
<xsl:with-param name="tag_close" select="$tag_close"/>
<xsl:with-param name="text" select="substring-after($text_after, $tag_close)"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise><xsl:value-of select="$text"/></xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="*[local-name()='br']">
<xsl:value-of select="$linebreak"/>
</xsl:template>
<!-- keep-together for standard's name (ISO 12345:2020) -->
<xsl:template match="*[local-name() = 'keep-together_within-line']">
<xsl:param name="split_keep-within-line"/>
<!-- <fo:inline>split_keep-within-line='<xsl:value-of select="$split_keep-within-line"/>'</fo:inline> -->
<xsl:choose>
<xsl:when test="normalize-space($split_keep-within-line) = 'true'">
<xsl:variable name="sep">_</xsl:variable>
<xsl:variable name="items">
<xsl:call-template name="split">
<xsl:with-param name="pText" select="."/>
<xsl:with-param name="sep" select="$sep"/>
<xsl:with-param name="normalize-space">false</xsl:with-param>
<xsl:with-param name="keep_sep">true</xsl:with-param>
</xsl:call-template>
</xsl:variable>
<xsl:for-each select="xalan:nodeset($items)/item">
<xsl:choose>
<xsl:when test=". = $sep">
<xsl:value-of select="$sep"/><xsl:value-of select="$zero_width_space"/>
</xsl:when>
<xsl:otherwise>
<fo:inline keep-together.within-line="always" role="SKIP"><xsl:apply-templates/></fo:inline>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<fo:inline keep-together.within-line="always" role="SKIP"><xsl:apply-templates/></fo:inline>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- ================================= -->
<!-- Preface boilerplate sections processing -->
<!-- ================================= -->
<xsl:template match="*[local-name()='copyright-statement']">
<fo:block xsl:use-attribute-sets="copyright-statement-style" role="SKIP">
<xsl:apply-templates/>
</fo:block>
</xsl:template> <!-- copyright-statement -->
<xsl:template match="*[local-name()='copyright-statement']//*[local-name()='title']">
<!-- process in the template 'title' -->
<xsl:call-template name="title"/>
</xsl:template> <!-- copyright-statement//title -->
<xsl:template match="*[local-name()='copyright-statement']//*[local-name()='p']">
<!-- process in the template 'paragraph' -->
<xsl:call-template name="paragraph"/>
</xsl:template> <!-- copyright-statement//p -->
<xsl:template match="*[local-name()='license-statement']">
<fo:block xsl:use-attribute-sets="license-statement-style">
<xsl:apply-templates/>
</fo:block>
</xsl:template> <!-- license-statement -->
<xsl:template match="*[local-name()='license-statement']//*[local-name()='title']">
<xsl:variable name="level">
<xsl:call-template name="getLevel"/>
</xsl:variable>
<fo:block role="H{$level}" xsl:use-attribute-sets="license-statement-title-style">
<xsl:apply-templates/>
</fo:block>
</xsl:template> <!-- license-statement/title -->
<xsl:template match="*[local-name()='license-statement']//*[local-name()='p']">
<fo:block xsl:use-attribute-sets="license-statement-p-style">
<xsl:if test="following-sibling::*[local-name() = 'p']">
<xsl:attribute name="margin-top">6pt</xsl:attribute>
<xsl:attribute name="margin-bottom">6pt</xsl:attribute>
</xsl:if>
<xsl:apply-templates/>
</fo:block>
</xsl:template> <!-- license-statement/p -->
<xsl:template match="*[local-name()='legal-statement']">
<xsl:param name="isLegacy">false</xsl:param>
<fo:block xsl:use-attribute-sets="legal-statement-style">
<xsl:apply-templates/>
</fo:block>
</xsl:template> <!-- legal-statement -->
<xsl:template match="*[local-name()='legal-statement']//*[local-name()='title']">
<!-- process in the template 'title' -->
<xsl:call-template name="title"/>
</xsl:template> <!-- legal-statement/title -->
<xsl:template match="*[local-name()='legal-statement']//*[local-name()='p']">
<xsl:param name="margin"/>
<!-- process in the template 'paragraph' -->
<xsl:call-template name="paragraph">
<xsl:with-param name="margin" select="$margin"/>
</xsl:call-template>
</xsl:template> <!-- legal-statement/p -->
<xsl:template match="*[local-name()='feedback-statement']">
<fo:block xsl:use-attribute-sets="feedback-statement-style">
<xsl:apply-templates/>
</fo:block>
</xsl:template> <!-- feedback-statement -->
<xsl:template match="*[local-name()='feedback-statement']//*[local-name()='title']">
<!-- process in the template 'title' -->
<xsl:call-template name="title"/>
</xsl:template>
<xsl:template match="*[local-name()='feedback-statement']//*[local-name()='p']">
<xsl:param name="margin"/>
<!-- process in the template 'paragraph' -->
<xsl:call-template name="paragraph">
<xsl:with-param name="margin" select="$margin"/>
</xsl:call-template>
</xsl:template>
<!-- ================================= -->
<!-- END Preface boilerplate sections processing -->
<!-- ================================= -->
<!-- add zero spaces into table cells text -->
<xsl:template match="*[local-name()='td']//text() | *[local-name()='th']//text() | *[local-name()='dt']//text() | *[local-name()='dd']//text()" priority="1">
<xsl:choose>
<xsl:when test="parent::*[local-name() = 'keep-together_within-line']">
<xsl:value-of select="."/>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="addZeroWidthSpacesToTextNodes"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="addZeroWidthSpacesToTextNodes">
<xsl:variable name="text"><text><xsl:call-template name="text"/></text></xsl:variable>
<!-- <xsl:copy-of select="$text"/> -->
<xsl:for-each select="xalan:nodeset($text)/text/node()">
<xsl:choose>
<xsl:when test="self::text()"><xsl:call-template name="add-zero-spaces-java"/></xsl:when>
<xsl:otherwise><xsl:copy-of select="."/></xsl:otherwise> <!-- copy 'as-is' for <fo:inline keep-together.within-line="always" ... -->
</xsl:choose>
</xsl:for-each>
</xsl:template>
<!-- for table auto-layout algorithm -->
<xsl:param name="table_only_with_id"/> <!-- Example: 'table1' -->
<xsl:param name="table_only_with_ids"/> <!-- Example: 'table1 table2 table3 ' -->
<xsl:template match="*[local-name()='table']" priority="2">
<xsl:choose>
<xsl:when test="$table_only_with_id != '' and @id = $table_only_with_id">
<xsl:call-template name="table"/>
</xsl:when>
<xsl:when test="$table_only_with_id != ''"><fo:block/><!-- to prevent empty fo:block-container --></xsl:when>
<xsl:when test="$table_only_with_ids != '' and contains($table_only_with_ids, concat(@id, ' '))">
<xsl:call-template name="table"/>
</xsl:when>
<xsl:when test="$table_only_with_ids != ''"><fo:block/><!-- to prevent empty fo:block-container --></xsl:when>
<xsl:otherwise>
<xsl:call-template name="table"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="*[local-name()='table']" name="table">
<xsl:variable name="table-preamble">
</xsl:variable>
<xsl:variable name="table">
<xsl:variable name="simple-table">
<xsl:if test="$isGenerateTableIF = 'true' and $isApplyAutolayoutAlgorithm = 'true'">
<xsl:call-template name="getSimpleTable">
<xsl:with-param name="id" select="@id"/>
</xsl:call-template>
</xsl:if>
</xsl:variable>
<!-- <xsl:variable name="simple-table" select="xalan:nodeset($simple-table_)"/> -->
<!-- simple-table=<xsl:copy-of select="$simple-table"/> -->
<!-- Display table's name before table as standalone block -->
<!-- $namespace = 'iso' or -->
<xsl:apply-templates select="*[local-name()='name']"/> <!-- table's title rendered before table -->
<xsl:variable name="cols-count" select="count(xalan:nodeset($simple-table)/*/tr[1]/td)"/>
<xsl:variable name="colwidths">
<xsl:if test="not(*[local-name()='colgroup']/*[local-name()='col']) and not(@class = 'dl')">
<xsl:call-template name="calculate-column-widths">
<xsl:with-param name="cols-count" select="$cols-count"/>
<xsl:with-param name="table" select="$simple-table"/>
</xsl:call-template>
</xsl:if>
</xsl:variable>
<!-- <xsl:variable name="colwidths" select="xalan:nodeset($colwidths_)"/> -->
<!-- DEBUG -->
<xsl:if test="$table_if_debug = 'true'">
<fo:block font-size="60%">
<xsl:apply-templates select="xalan:nodeset($colwidths)" mode="print_as_xml"/>
</fo:block>
</xsl:if>
<!-- <xsl:copy-of select="$colwidths"/> -->
<!-- <xsl:text disable-output-escaping="yes"><!- -</xsl:text>
DEBUG
colwidths=<xsl:copy-of select="$colwidths"/>
<xsl:text disable-output-escaping="yes">- -></xsl:text> -->
<xsl:variable name="margin-side">
<xsl:choose>
<xsl:when test="$isApplyAutolayoutAlgorithm = 'true'">0</xsl:when>
<xsl:when test="$isApplyAutolayoutAlgorithm = 'skip'">0</xsl:when>
<xsl:when test="sum(xalan:nodeset($colwidths)//column) > 75">15</xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<fo:block-container xsl:use-attribute-sets="table-container-style" role="SKIP">
<xsl:call-template name="refine_table-container-style">
<xsl:with-param name="margin-side" select="$margin-side"/>
</xsl:call-template>
<!-- display table's name before table for PAS inside block-container (2-columnn layout) -->
<xsl:variable name="table_width_default">100%</xsl:variable>
<xsl:variable name="table_width">
<!-- for centered table always 100% (@width will be set for middle/second cell of outer table) -->
<xsl:value-of select="$table_width_default"/>
</xsl:variable>
<xsl:variable name="table_attributes">
<xsl:element name="table_attributes" use-attribute-sets="table-style">
<xsl:if test="$margin-side != 0">
<xsl:attribute name="margin-left">0mm</xsl:attribute>
<xsl:attribute name="margin-right">0mm</xsl:attribute>
</xsl:if>
<xsl:attribute name="width"><xsl:value-of select="normalize-space($table_width)"/></xsl:attribute>
<xsl:call-template name="refine_table-style">
<xsl:with-param name="margin-side" select="$margin-side"/>
</xsl:call-template>
</xsl:element>
</xsl:variable>
<xsl:if test="$isGenerateTableIF = 'true'">
<!-- to determine start of table -->
<fo:block id="{concat('table_if_start_',@id)}" keep-with-next="always" font-size="1pt">Start table '<xsl:value-of select="@id"/>'.</fo:block>
</xsl:if>
<fo:table id="{@id}">
<xsl:if test="$isGenerateTableIF = 'true'">
<xsl:attribute name="wrap-option">no-wrap</xsl:attribute>
</xsl:if>
<xsl:for-each select="xalan:nodeset($table_attributes)/table_attributes/@*">
<xsl:attribute name="{local-name()}">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:for-each>
<xsl:variable name="isNoteOrFnExist" select="./*[local-name()='note'][not(@type = 'units')] or ./*[local-name()='example'] or .//*[local-name()='fn'][local-name(..) != 'name'] or ./*[local-name()='source']"/>
<xsl:if test="$isNoteOrFnExist = 'true'">
<xsl:attribute name="border-bottom">0pt solid black</xsl:attribute><!-- set 0pt border, because there is a separete table below for footer -->
</xsl:if>
<xsl:choose>
<xsl:when test="$isGenerateTableIF = 'true'">
<!-- generate IF for table widths -->
<!-- example:
<tr>
<td valign="top" align="left" id="tab-symdu_1_1">
<p>Symbol</p>
<word id="tab-symdu_1_1_word_1">Symbol</word>
</td>
<td valign="top" align="left" id="tab-symdu_1_2">
<p>Description</p>
<word id="tab-symdu_1_2_word_1">Description</word>
</td>
</tr>
-->
<!-- Simple_table=<xsl:copy-of select="$simple-table"/> -->
<xsl:apply-templates select="xalan:nodeset($simple-table)" mode="process_table-if"/>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="*[local-name()='colgroup']/*[local-name()='col']">
<xsl:for-each select="*[local-name()='colgroup']/*[local-name()='col']">
<fo:table-column column-width="{@width}"/>
</xsl:for-each>
</xsl:when>
<xsl:when test="@class = 'dl'">
<xsl:for-each select=".//*[local-name()='tr'][1]/*">
<fo:table-column column-width="{@width}"/>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="insertTableColumnWidth">
<xsl:with-param name="colwidths" select="$colwidths"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
<xsl:choose>
<xsl:when test="not(*[local-name()='tbody']) and *[local-name()='thead']">
<xsl:apply-templates select="*[local-name()='thead']" mode="process_tbody"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="node()[not(local-name() = 'name') and not(local-name() = 'note') and not(local-name() = 'example') and not(local-name() = 'dl') and not(local-name() = 'source') and not(local-name() = 'p') and not(local-name() = 'thead') and not(local-name() = 'tfoot')]"/> <!-- process all table' elements, except name, header, footer, note, source and dl which render separaterely -->
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</fo:table>
<xsl:variable name="colgroup" select="*[local-name()='colgroup']"/>
<xsl:for-each select="*[local-name()='tbody']"><!-- select context to tbody -->
<xsl:call-template name="insertTableFooterInSeparateTable">
<xsl:with-param name="table_attributes" select="$table_attributes"/>
<xsl:with-param name="colwidths" select="$colwidths"/>
<xsl:with-param name="colgroup" select="$colgroup"/>
</xsl:call-template>
</xsl:for-each>
<xsl:if test="*[local-name()='bookmark']"> <!-- special case: table/bookmark -->
<fo:block keep-with-previous="always" line-height="0.1">
<xsl:for-each select="*[local-name()='bookmark']">
<xsl:call-template name="bookmark"/>
</xsl:for-each>
</fo:block>
</xsl:if>
</fo:block-container>
</xsl:variable>
<xsl:variable name="isAdded" select="@added"/>
<xsl:variable name="isDeleted" select="@deleted"/>
<xsl:choose>
<xsl:when test="@width and @width != 'full-page-width' and @width != 'text-width'">
<!-- centered table when table name is centered (see table-name-style) -->
<fo:table table-layout="fixed" width="100%" xsl:use-attribute-sets="table-container-style">
<xsl:if test="$layoutVersion = '1951'">
<xsl:attribute name="font-size">inherit</xsl:attribute>
</xsl:if>
<xsl:if test="$layoutVersion = '2024'">
<xsl:attribute name="margin-top">12pt</xsl:attribute>
<xsl:attribute name="margin-bottom">2pt</xsl:attribute>
</xsl:if>
<fo:table-column column-width="proportional-column-width(1)"/>
<fo:table-column column-width="{@width}"/>
<fo:table-column column-width="proportional-column-width(1)"/>
<fo:table-body>
<fo:table-row>
<fo:table-cell column-number="2">
<xsl:copy-of select="$table-preamble"/>
<fo:block role="SKIP">
<xsl:call-template name="setTrackChangesStyles">
<xsl:with-param name="isAdded" select="$isAdded"/>
<xsl:with-param name="isDeleted" select="$isDeleted"/>
</xsl:call-template>
<xsl:copy-of select="$table"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="$isAdded = 'true' or $isDeleted = 'true'">
<xsl:copy-of select="$table-preamble"/>
<fo:block>
<xsl:call-template name="setTrackChangesStyles">
<xsl:with-param name="isAdded" select="$isAdded"/>
<xsl:with-param name="isDeleted" select="$isDeleted"/>
</xsl:call-template>
<xsl:copy-of select="$table"/>
</fo:block>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="$table-preamble"/>
<xsl:copy-of select="$table"/>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="setBordersTableArray">
<xsl:if test="starts-with(@id, 'array_') or starts-with(ancestor::*[local-name() = 'table'][1]/@id, 'array_')">
<!-- array - table without borders -->
<xsl:attribute name="border">none</xsl:attribute>
</xsl:if>
</xsl:template>
<xsl:template match="*[local-name()='table']/*[local-name() = 'name']">
<xsl:param name="continued"/>
<xsl:if test="normalize-space() != ''">
<fo:block xsl:use-attribute-sets="table-name-style" role="SKIP">
<xsl:call-template name="refine_table-name-style">
<xsl:with-param name="continued" select="$continued"/>
</xsl:call-template>
<xsl:choose>
<xsl:when test="$continued = 'true'">
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="$continued = 'true'">
<fo:inline font-weight="bold" font-style="normal" role="SKIP">
<fo:retrieve-table-marker retrieve-class-name="table_number"/>
</fo:inline>
<fo:inline font-weight="normal" font-style="italic" role="SKIP">
<xsl:text> </xsl:text>
<fo:retrieve-table-marker retrieve-class-name="table_continued"/>
</fo:inline>
</xsl:if>
</fo:block>
<!-- <xsl:if test="$namespace = 'bsi' or $namespace = 'iec' or $namespace = 'iso'"> -->
<xsl:if test="$continued = 'true'">
<fo:block text-align="right">
<xsl:apply-templates select="../*[local-name() = 'note'][@type = 'units']/node()"/>
</fo:block>
</xsl:if>
<!-- </xsl:if> -->
</xsl:if>
</xsl:template> <!-- table/name -->
<!-- workaround solution for https://github.com/metanorma/metanorma-iso/issues/1151#issuecomment-2033087938 -->
<xsl:template match="*[local-name()='table']/*[local-name() = 'note'][@type = 'units']/*[local-name() = 'p']/text()" priority="4">
<xsl:choose>
<xsl:when test="preceding-sibling::*[local-name() = 'br']">
<!-- remove CR or LF at start -->
<xsl:value-of select="java:replaceAll(java:java.lang.String.new(.),'^( | | )', '')"/>
</xsl:when>
<xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- SOURCE: ... -->
<xsl:template match="*[local-name()='table']/*[local-name() = 'source']" priority="2">
<xsl:call-template name="termsource"/>
</xsl:template>
<xsl:template name="calculate-columns-numbers">
<xsl:param name="table-row"/>
<xsl:variable name="columns-count" select="count($table-row/*)"/>
<xsl:variable name="sum-colspans" select="sum($table-row/*/@colspan)"/>
<xsl:variable name="columns-with-colspan" select="count($table-row/*[@colspan])"/>
<xsl:value-of select="$columns-count + $sum-colspans - $columns-with-colspan"/>
</xsl:template>
<xsl:template name="calculate-column-widths">
<xsl:param name="table"/>
<xsl:param name="cols-count"/>
<xsl:choose>
<xsl:when test="$isApplyAutolayoutAlgorithm = 'true'">
<xsl:call-template name="get-calculated-column-widths-autolayout-algorithm"/>
</xsl:when>
<xsl:when test="$isApplyAutolayoutAlgorithm = 'skip'"/>
<xsl:otherwise>
<xsl:call-template name="calculate-column-widths-proportional">
<xsl:with-param name="cols-count" select="$cols-count"/>
<xsl:with-param name="table" select="$table"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- ================================================== -->
<!-- Calculate column's width based on text string max widths -->
<!-- ================================================== -->
<xsl:template name="calculate-column-widths-proportional">
<xsl:param name="table"/>
<xsl:param name="cols-count"/>
<xsl:param name="curr-col" select="1"/>
<xsl:param name="width" select="0"/>
<!-- table=<xsl:copy-of select="$table"/> -->
<xsl:if test="$curr-col <= $cols-count">
<xsl:variable name="widths">
<xsl:choose>
<xsl:when test="not($table)"><!-- this branch is not using in production, for debug only -->
<xsl:for-each select="*[local-name()='thead']//*[local-name()='tr']">
<xsl:variable name="words">
<xsl:call-template name="tokenize">
<xsl:with-param name="text" select="translate(*[local-name()='th'][$curr-col],'- —:', ' ')"/>
</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)"/>
</xsl:call-template>
</xsl:variable>
<width>
<xsl:value-of select="$max_length"/>
</width>
</xsl:for-each>
<xsl:for-each select="*[local-name()='tbody']//*[local-name()='tr']">
<xsl:variable name="words">
<xsl:call-template name="tokenize">
<xsl:with-param name="text" select="translate(*[local-name()='td'][$curr-col],'- —:', ' ')"/>
</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)"/>
</xsl:call-template>
</xsl:variable>
<width>
<xsl:value-of select="$max_length"/>
</width>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<!-- <curr_col><xsl:value-of select="$curr-col"/></curr_col> -->
<!-- <table><xsl:copy-of select="$table"/></table>
-->
<xsl:for-each select="xalan:nodeset($table)/*/*[local-name()='tr']">
<xsl:variable name="td_text">
<xsl:apply-templates select="td[$curr-col]" mode="td_text"/>
</xsl:variable>
<!-- <td_text><xsl:value-of select="$td_text"/></td_text> -->
<xsl:variable name="words">
<xsl:variable name="string_with_added_zerospaces">
<xsl:call-template name="add-zero-spaces-java">
<xsl:with-param name="text" select="$td_text"/>
</xsl:call-template>
</xsl:variable>
<!-- <xsl:message>string_with_added_zerospaces=<xsl:value-of select="$string_with_added_zerospaces"/></xsl:message> -->
<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, '', ' '))"/> <!-- replace zero-width-space and soft-hyphen to space -->
</xsl:call-template>
</xsl:variable>
<!-- words=<xsl:copy-of select="$words"/> -->
<xsl:variable name="max_length">
<xsl:call-template name="max_length">
<xsl:with-param name="words" select="xalan:nodeset($words)"/>
</xsl:call-template>
</xsl:variable>
<!-- <xsl:message>max_length=<xsl:value-of select="$max_length"/></xsl:message> -->
<width>
<xsl:variable name="divider">
<xsl:choose>
<xsl:when test="td[$curr-col]/@divide">
<xsl:value-of select="td[$curr-col]/@divide"/>
</xsl:when>
<xsl:otherwise>1</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:value-of select="$max_length div $divider"/>
</width>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- widths=<xsl:copy-of select="$widths"/> -->
<column>
<xsl:for-each select="xalan:nodeset($widths)//width">
<xsl:sort select="." data-type="number" order="descending"/>
<xsl:if test="position()=1">
<xsl:value-of select="."/>
</xsl:if>
</xsl:for-each>
</column>
<xsl:call-template name="calculate-column-widths-proportional">
<xsl:with-param name="cols-count" select="$cols-count"/>
<xsl:with-param name="curr-col" select="$curr-col +1"/>
<xsl:with-param name="table" select="$table"/>
</xsl:call-template>
</xsl:if>
</xsl:template> <!-- calculate-column-widths-proportional -->
<!-- ================================= -->
<!-- mode="td_text" -->
<!-- ================================= -->
<!-- replace each each char to 'X', just to process the tag 'keep-together_within-line' as whole word in longest word calculation -->
<xsl:template match="*[@keep-together.within-line or local-name() = 'keep-together_within-line']/text()" priority="2" mode="td_text">
<!-- <xsl:message>DEBUG t1=<xsl:value-of select="."/></xsl:message>
<xsl:message>DEBUG t2=<xsl:value-of select="java:replaceAll(java:java.lang.String.new(.),'.','X')"/></xsl:message> -->
<xsl:value-of select="java:replaceAll(java:java.lang.String.new(.),'.','X')"/>
<!-- if all capitals english letters or digits -->
<xsl:if test="normalize-space(translate(., concat($upper,'0123456789'), '')) = ''">
<xsl:call-template name="repeat">
<xsl:with-param name="char" select="'X'"/>
<xsl:with-param name="count" select="string-length(normalize-space(.)) * 0.5"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
<xsl:template match="text()" mode="td_text">
<xsl:value-of select="translate(., $zero_width_space, ' ')"/><xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="*[local-name()='termsource']" mode="td_text">
<xsl:value-of select="*[local-name()='origin']/@citeas"/>
</xsl:template>
<xsl:template match="*[local-name()='link']" mode="td_text">
<xsl:value-of select="@target"/>
</xsl:template>
<xsl:template match="*[local-name()='math']" mode="td_text" name="math_length">
<xsl:if test="$isGenerateTableIF = 'false'">
<xsl:variable name="mathml_">
<xsl:for-each select="*">
<xsl:if test="local-name() != 'unit' and local-name() != 'prefix' and local-name() != 'dimension' and local-name() != 'quantity'">
<xsl:copy-of select="."/>
</xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="mathml" select="xalan:nodeset($mathml_)"/>
<xsl:variable name="math_text">
<xsl:value-of select="normalize-space($mathml)"/>
<xsl:for-each select="$mathml//@open"><xsl:value-of select="."/></xsl:for-each>
<xsl:for-each select="$mathml//@close"><xsl:value-of select="."/></xsl:for-each>
</xsl:variable>
<xsl:value-of select="translate($math_text, ' ', '#')"/><!-- mathml images as one 'word' without spaces -->
</xsl:if>
</xsl:template>
<!-- ================================= -->
<!-- END mode="td_text" -->
<!-- ================================= -->
<!-- ================================================== -->
<!-- END Calculate column's width based on text string max widths -->
<!-- ================================================== -->
<!-- ================================================== -->
<!-- Calculate column's width based on HTML4 algorithm -->
<!-- (https://www.w3.org/TR/REC-html40/appendix/notes.html#h-B.5.2) -->
<!-- ================================================== -->
<!-- INPUT: table with columns widths, generated by table_if.xsl -->
<xsl:template name="calculate-column-widths-autolayout-algorithm">
<xsl:param name="parent_table_page-width"/> <!-- for nested tables, in re-calculate step -->
<!-- via intermediate format -->
<!-- The algorithm uses two passes through the table data and scales linearly with the size of the table -->
<!-- In the first pass, line wrapping is disabled, and the user agent keeps track of the minimum and maximum width of each cell. -->
<!-- Since line wrap has been disabled, paragraphs are treated as long lines unless broken by BR elements. -->
<xsl:variable name="page_width">
<xsl:choose>
<xsl:when test="$parent_table_page-width != ''">
<xsl:value-of select="$parent_table_page-width"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="@page-width"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:if test="$table_if_debug = 'true'">
<page_width><xsl:value-of select="$page_width"/></page_width>
</xsl:if>
<!-- There are three cases: -->
<xsl:choose>
<!-- 1. The minimum table width is equal to or wider than the available space -->
<xsl:when test="@width_min >= $page_width and 1 = 2"> <!-- this condition isn't working see case 3 below -->
<!-- call old algorithm -->
<case1/>
<!-- <xsl:variable name="cols-count" select="count(xalan:nodeset($table)/*/tr[1]/td)"/>
<xsl:call-template name="calculate-column-widths-proportional">
<xsl:with-param name="cols-count" select="$cols-count"/>
<xsl:with-param name="table" select="$table"/>
</xsl:call-template> -->
</xsl:when>
<!-- 2. The maximum table width fits within the available space. In this case, set the columns to their maximum widths. -->
<xsl:when test="@width_max <= $page_width">
<case2/>
<autolayout/>
<xsl:for-each select="column/@width_max">
<column divider="100"><xsl:value-of select="."/></column>
</xsl:for-each>
</xsl:when>
<!-- 3. The maximum width of the table is greater than the available space, but the minimum table width is smaller.
In this case, find the difference between the available space and the minimum table width, lets call it W.
Lets also call D the difference between maximum and minimum width of the table.
For each column, let d be the difference between maximum and minimum width of that column.
Now set the column's width to the minimum width plus d times W over D.
This makes columns with large differences between minimum and maximum widths wider than columns with smaller differences. -->
<xsl:when test="(@width_max > $page_width and @width_min < $page_width) or (@width_min >= $page_width)">
<!-- difference between the available space and the minimum table width -->
<_width_min><xsl:value-of select="@width_min"/></_width_min>
<xsl:variable name="W" select="$page_width - @width_min"/>
<W><xsl:value-of select="$W"/></W>
<!-- difference between maximum and minimum width of the table -->
<xsl:variable name="D" select="@width_max - @width_min"/>
<D><xsl:value-of select="$D"/></D>
<case3/>
<autolayout/>
<xsl:if test="@width_min >= $page_width">
<split_keep-within-line>true</split_keep-within-line>
</xsl:if>
<xsl:for-each select="column">
<!-- difference between maximum and minimum width of that column. -->
<xsl:variable name="d" select="@width_max - @width_min"/>
<d><xsl:value-of select="$d"/></d>
<width_min><xsl:value-of select="@width_min"/></width_min>
<e><xsl:value-of select="$d * $W div $D"/></e>
<!-- set the column's width to the minimum width plus d times W over D. -->
<xsl:variable name="column_width_" select="round(@width_min + $d * $W div $D)"/> <!-- * 10 -->
<xsl:variable name="column_width" select="$column_width_*($column_width_ >= 0) - $column_width_*($column_width_ < 0)"/> <!-- absolute value -->
<column divider="100">
<xsl:value-of select="$column_width"/>
</column>
</xsl:for-each>
</xsl:when>
<xsl:otherwise><unknown_case/></xsl:otherwise>
</xsl:choose>
</xsl:template> <!-- calculate-column-widths-autolayout-algorithm -->
<xsl:template name="get-calculated-column-widths-autolayout-algorithm">
<!-- if nested 'dl' or 'table' -->
<xsl:variable name="parent_table_id" select="normalize-space(ancestor::*[local-name() = 'table' or local-name() = 'dl'][1]/@id)"/>
<parent_table_id><xsl:value-of select="$parent_table_id"/></parent_table_id>
<parent_element><xsl:value-of select="local-name(..)"/></parent_element>
<ancestor_tree>
<xsl:for-each select="ancestor::*">
<ancestor><xsl:value-of select="local-name()"/></ancestor>
</xsl:for-each>
</ancestor_tree>
<xsl:variable name="parent_table_page-width_">
<xsl:if test="$parent_table_id != ''">
<!-- determine column number in the parent table -->
<xsl:variable name="parent_table_column_number">
<xsl:choose>
<!-- <xsl:when test="parent::*[local-name() = 'dd']">2</xsl:when> -->
<xsl:when test="(ancestor::*[local-name() = 'dd' or local-name() = 'table' or local-name() = 'dl'])[last()][local-name() = 'dd' or local-name() = 'dl']">2</xsl:when>
<xsl:otherwise> <!-- parent is table -->
<xsl:value-of select="count(ancestor::*[local-name() = 'td'][1]/preceding-sibling::*[local-name() = 'td']) + 1"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- find table by id in the file 'table_widths' and get all Nth `<column>...</column> -->
<xsl:variable name="parent_table_column_" select="$table_widths_from_if_calculated//table[@id = $parent_table_id]/column[number($parent_table_column_number)]"/>
<xsl:variable name="parent_table_column" select="xalan:nodeset($parent_table_column_)"/>
<!-- <xsl:variable name="divider">
<xsl:value-of select="$parent_table_column/@divider"/>
<xsl:if test="not($parent_table_column/@divider)">1</xsl:if>
</xsl:variable> -->
<xsl:value-of select="$parent_table_column/text()"/> <!-- * 10 -->
</xsl:if>
</xsl:variable>
<xsl:variable name="parent_table_page-width" select="normalize-space($parent_table_page-width_)"/>
<parent_table_page-width><xsl:value-of select="$parent_table_page-width"/></parent_table_page-width>
<!-- get current table id -->
<xsl:variable name="table_id" select="@id"/>
<xsl:choose>
<xsl:when test="$parent_table_id = '' or $parent_table_page-width = ''">
<!-- find table by id in the file 'table_widths' and get all `<column>...</column> -->
<xsl:copy-of select="$table_widths_from_if_calculated//table[@id = $table_id]/node()"/>
</xsl:when>
<xsl:otherwise>
<!-- recalculate columns width based on parent table width -->
<xsl:for-each select="$table_widths_from_if//table[@id = $table_id]">
<xsl:call-template name="calculate-column-widths-autolayout-algorithm">
<xsl:with-param name="parent_table_page-width" select="$parent_table_page-width"/> <!-- padding-left = 2mm = 50000-->
</xsl:call-template>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
</xsl:template> <!-- get-calculated-column-widths-autolayout-algorithm -->
<!-- ================================================== -->
<!-- Calculate column's width based on HTML4 algorithm -->
<!-- ================================================== -->
<xsl:template match="*[local-name()='thead']">
<xsl:param name="cols-count"/>
<fo:table-header>
<xsl:call-template name="table-header-title">
<xsl:with-param name="cols-count" select="$cols-count"/>
</xsl:call-template>
<xsl:apply-templates/>
</fo:table-header>
</xsl:template> <!-- thead -->
<!-- template is using for iec, iso, jcgm, bsi only -->
<xsl:template name="table-header-title">
<xsl:param name="cols-count"/>
<!-- row for title -->
<fo:table-row role="SKIP">
<fo:table-cell number-columns-spanned="{$cols-count}" border-left="1.5pt solid white" border-right="1.5pt solid white" border-top="1.5pt solid white" border-bottom="1.5pt solid black" role="SKIP">
<xsl:call-template name="refine_table-header-title-style"/>
<xsl:apply-templates select="ancestor::*[local-name()='table']/*[local-name()='name']">
<xsl:with-param name="continued">true</xsl:with-param>
</xsl:apply-templates>
<xsl:if test="not(ancestor::*[local-name()='table']/*[local-name()='name'])"> <!-- to prevent empty fo:table-cell in case of missing table's name -->
<fo:block role="SKIP"/>
</xsl:if>
<xsl:for-each select="ancestor::*[local-name()='table'][1]">
<xsl:call-template name="table_name_fn_display"/>
</xsl:for-each>
</fo:table-cell>
</fo:table-row>
</xsl:template> <!-- table-header-title -->
<xsl:template name="refine_table-header-title-style">
<xsl:attribute name="border-left">1pt solid white</xsl:attribute>
<xsl:attribute name="border-right">1pt solid white</xsl:attribute>
<xsl:attribute name="border-top">1pt solid white</xsl:attribute>
<!-- <xsl:attribute name="border-bottom">0.5pt solid white</xsl:attribute> -->
<xsl:attribute name="border-bottom">none</xsl:attribute>
</xsl:template> <!-- refine_table-header-title-style -->
<xsl:template match="*[local-name()='thead']" mode="process_tbody">
<fo:table-body>
<xsl:apply-templates/>
</fo:table-body>
</xsl:template>
<xsl:template match="*[local-name()='tfoot']">
<xsl:apply-templates/>
</xsl:template>
<xsl:template name="insertTableFooter">
<xsl:param name="cols-count"/>
<xsl:if test="../*[local-name()='tfoot']">
<fo:table-footer>
<xsl:apply-templates select="../*[local-name()='tfoot']"/>
</fo:table-footer>
</xsl:if>
</xsl:template>
<xsl:template name="insertTableFooterInSeparateTable">
<xsl:param name="table_attributes"/>
<xsl:param name="colwidths"/>
<xsl:param name="colgroup"/>
<xsl:variable name="isNoteOrFnExist" select="../*[local-name()='note'][not(@type = 'units')] or ../*[local-name()='example'] or ../*[local-name()='dl'] or ..//*[local-name()='fn'][local-name(..) != 'name'] or ../*[local-name()='source'] or ../*[local-name()='p']"/>
<xsl:variable name="isNoteOrFnExistShowAfterTable">
</xsl:variable>
<xsl:if test="$isNoteOrFnExist = 'true' or normalize-space($isNoteOrFnExistShowAfterTable) = 'true'">
<xsl:variable name="cols-count">
<xsl:choose>
<xsl:when test="xalan:nodeset($colgroup)//*[local-name()='col']">
<xsl:value-of select="count(xalan:nodeset($colgroup)//*[local-name()='col'])"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="count(xalan:nodeset($colwidths)//column)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="table_fn_block">
<xsl:call-template name="table_fn_display"/>
</xsl:variable>
<xsl:variable name="tableWithNotesAndFootnotes">
<fo:table keep-with-previous="always">
<xsl:for-each select="xalan:nodeset($table_attributes)/table_attributes/@*">
<xsl:variable name="name" select="local-name()"/>
<xsl:choose>
<xsl:when test="$name = 'border-top'">
<xsl:attribute name="{$name}">0pt solid black</xsl:attribute>
</xsl:when>
<xsl:when test="$name = 'border'">
<xsl:attribute name="{$name}"><xsl:value-of select="."/></xsl:attribute>
<xsl:attribute name="border-top">0pt solid black</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="{$name}"><xsl:value-of select="."/></xsl:attribute>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
<xsl:choose>
<xsl:when test="xalan:nodeset($colgroup)//*[local-name()='col']">
<xsl:for-each select="xalan:nodeset($colgroup)//*[local-name()='col']">
<fo:table-column column-width="{@width}"/>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<!-- $colwidths=<xsl:copy-of select="$colwidths"/> -->
<xsl:call-template name="insertTableColumnWidth">
<xsl:with-param name="colwidths" select="$colwidths"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
<fo:table-body>
<fo:table-row>
<fo:table-cell xsl:use-attribute-sets="table-footer-cell-style" number-columns-spanned="{$cols-count}">
<xsl:call-template name="refine_table-footer-cell-style"/>
<xsl:call-template name="setBordersTableArray"/>
<!-- fn will be processed inside 'note' processing -->
<!-- for BSI (not PAS) display Notes before footnotes -->
<!-- except gb and bsi -->
<xsl:apply-templates select="../*[local-name()='p']"/>
<xsl:apply-templates select="../*[local-name()='dl']"/>
<xsl:apply-templates select="../*[local-name()='note'][not(@type = 'units')]"/>
<xsl:apply-templates select="../*[local-name()='example']"/>
<xsl:apply-templates select="../*[local-name()='source']"/>
<xsl:variable name="isDisplayRowSeparator">
</xsl:variable>
<!-- horizontal row separator -->
<xsl:if test="normalize-space($isDisplayRowSeparator) = 'true'">
<xsl:if test="(../*[local-name()='note'][not(@type = 'units')] or ../*[local-name()='example']) and normalize-space($table_fn_block) != ''">
<fo:block-container border-top="0.5pt solid black" padding-left="1mm" padding-right="1mm">
<xsl:call-template name="setBordersTableArray"/>
<fo:block font-size="1pt"> </fo:block>
</fo:block-container>
</xsl:if>
</xsl:if>
<!-- fn processing -->
<!-- <xsl:call-template name="table_fn_display" /> -->
<xsl:copy-of select="$table_fn_block"/>
<!-- for PAS display Notes after footnotes -->
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</xsl:variable>
<xsl:if test="normalize-space($tableWithNotesAndFootnotes) != ''">
<xsl:copy-of select="$tableWithNotesAndFootnotes"/>
</xsl:if>
</xsl:if>
</xsl:template> <!-- insertTableFooterInSeparateTable -->
<xsl:template match="*[local-name()='tbody']">
<xsl:variable name="cols-count">
<xsl:choose>
<xsl:when test="../*[local-name()='thead']">
<xsl:call-template name="calculate-columns-numbers">
<xsl:with-param name="table-row" select="../*[local-name()='thead']/*[local-name()='tr'][1]"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="calculate-columns-numbers">
<xsl:with-param name="table-row" select="./*[local-name()='tr'][1]"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- if there isn't 'thead' and there is a table's title -->
<xsl:if test="not(ancestor::*[local-name()='table']/*[local-name()='thead']) and ancestor::*[local-name()='table']/*[local-name()='name']">
<fo:table-header>
<xsl:call-template name="table-header-title">
<xsl:with-param name="cols-count" select="$cols-count"/>
</xsl:call-template>
</fo:table-header>
</xsl:if>
<xsl:apply-templates select="../*[local-name()='thead']">
<xsl:with-param name="cols-count" select="$cols-count"/>
</xsl:apply-templates>
<xsl:call-template name="insertTableFooter">
<xsl:with-param name="cols-count" select="$cols-count"/>
</xsl:call-template>
<fo:table-body>
<xsl:variable name="title_continued_">
<xsl:call-template name="getLocalizedString">
<xsl:with-param name="key">continued</xsl:with-param>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="title_continued_in_parenthesis" select="concat('(',$title_continued_,')')"/>
<xsl:variable name="title_continued">
<xsl:value-of select="$title_continued_in_parenthesis"/>
</xsl:variable>
<xsl:variable name="title_start" select="ancestor::*[local-name()='table'][1]/*[local-name()='name']/node()[1][self::text()]"/>
<xsl:variable name="table_number" select="substring-before($title_start, '—')"/>
<fo:table-row height="0" keep-with-next.within-page="always" role="SKIP">
<fo:table-cell role="SKIP">
<fo:marker marker-class-name="table_number"/>
<fo:marker marker-class-name="table_continued"/>
<fo:block role="SKIP"/>
</fo:table-cell>
</fo:table-row>
<fo:table-row height="0" keep-with-next.within-page="always" role="SKIP">
<fo:table-cell role="SKIP">
<fo:marker marker-class-name="table_number"><xsl:value-of select="normalize-space(translate($table_number, ' ', ' '))"/></fo:marker>
<fo:marker marker-class-name="table_continued">
<xsl:value-of select="$title_continued"/>
</fo:marker>
<fo:block role="SKIP"/>
</fo:table-cell>
</fo:table-row>
<xsl:apply-templates/>
</fo:table-body>
</xsl:template> <!-- tbody -->
<xsl:template match="/" mode="process_table-if">
<xsl:param name="table_or_dl">table</xsl:param>
<xsl:apply-templates mode="process_table-if">
<xsl:with-param name="table_or_dl" select="$table_or_dl"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="*[local-name()='tbody']" mode="process_table-if">
<xsl:param name="table_or_dl">table</xsl:param>
<fo:table-body>
<xsl:for-each select="*[local-name() = 'tr']">
<xsl:variable name="col_count" select="count(*)"/>
<!-- iteration for each tr/td -->
<xsl:choose>
<xsl:when test="$table_or_dl = 'table'">
<xsl:for-each select="*[local-name() = 'td' or local-name() = 'th']/*">
<fo:table-row number-columns-spanned="{$col_count}">
<xsl:copy-of select="../@font-weight"/>
<!-- <test_table><xsl:copy-of select="."/></test_table> -->
<xsl:call-template name="td"/>
</fo:table-row>
</xsl:for-each>
</xsl:when>
<xsl:otherwise> <!-- $table_or_dl = 'dl' -->
<xsl:for-each select="*[local-name() = 'td' or local-name() = 'th']">
<xsl:variable name="is_dt" select="position() = 1"/>
<xsl:for-each select="*">
<!-- <test><xsl:copy-of select="."/></test> -->
<fo:table-row number-columns-spanned="{$col_count}">
<xsl:choose>
<xsl:when test="$is_dt">
<xsl:call-template name="insert_dt_cell"/>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="insert_dd_cell"/>
</xsl:otherwise>
</xsl:choose>
</fo:table-row>
</xsl:for-each>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</fo:table-body>
</xsl:template> <!-- process_table-if -->
<!-- ===================== -->
<!-- Table's row processing -->
<!-- ===================== -->
<!-- row in table header (thead) thead/tr -->
<xsl:template match="*[local-name()='thead']/*[local-name()='tr']" priority="2">
<fo:table-row xsl:use-attribute-sets="table-header-row-style">
<xsl:call-template name="refine_table-header-row-style"/>
<xsl:call-template name="setTableRowAttributes"/>
<xsl:apply-templates/>
</fo:table-row>
</xsl:template>
<xsl:template name="setBorderUnderRow">
<xsl:variable name="border_under_row_" select="normalize-space(ancestor::*[local-name() = 'table'][1]/@border-under-row)"/>
<xsl:choose>
<xsl:when test="$border_under_row_ != ''">
<xsl:variable name="table_id" select="ancestor::*[local-name() = 'table'][1]/@id"/>
<xsl:variable name="row_num_"><xsl:number level="any" count="*[local-name() = 'table'][@id = $table_id]//*[local-name() = 'tr']"/></xsl:variable>
<xsl:variable name="row_num" select="number($row_num_) - 1"/> <!-- because values in border-under-row start with 0 -->
<xsl:variable name="border_under_row">
<xsl:call-template name="split">
<xsl:with-param name="pText" select="$border_under_row_"/>
</xsl:call-template>
</xsl:variable>
<xsl:if test="xalan:nodeset($border_under_row)/item[. = normalize-space($row_num)]">
<xsl:attribute name="border-bottom"><xsl:value-of select="$table-border"/></xsl:attribute>
</xsl:if>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="border-bottom"><xsl:value-of select="$table-border"/></xsl:attribute>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- row in table footer (tfoot), tfoot/tr -->
<xsl:template match="*[local-name()='tfoot']/*[local-name()='tr']" priority="2">
<fo:table-row xsl:use-attribute-sets="table-footer-row-style">
<xsl:call-template name="refine_table-footer-row-style"/>
<xsl:call-template name="setTableRowAttributes"/>
<xsl:apply-templates/>
</fo:table-row>
</xsl:template>
<!-- row in table's body (tbody) -->
<xsl:template match="*[local-name()='tr']">
<fo:table-row xsl:use-attribute-sets="table-body-row-style">
<xsl:if test="count(*) = count(*[local-name() = 'th'])"> <!-- row contains 'th' only -->
<xsl:attribute name="keep-with-next">always</xsl:attribute>
</xsl:if>
<xsl:call-template name="refine_table-body-row-style"/>
<xsl:call-template name="setTableRowAttributes"/>
<xsl:apply-templates/>
</fo:table-row>
</xsl:template>
<xsl:template name="setTableRowAttributes">
</xsl:template> <!-- setTableRowAttributes -->
<!-- ===================== -->
<!-- END Table's row processing -->
<!-- ===================== -->
<!-- cell in table header row -->
<xsl:template match="*[local-name()='th']">
<fo:table-cell xsl:use-attribute-sets="table-header-cell-style"> <!-- text-align="{@align}" -->
<xsl:call-template name="setTextAlignment">
<xsl:with-param name="default">center</xsl:with-param>
</xsl:call-template>
<xsl:copy-of select="@keep-together.within-line"/>
<xsl:call-template name="refine_table-header-cell-style"/>
<!-- experimental feature, see https://github.com/metanorma/metanorma-plateau/issues/30#issuecomment-2145461828 -->
<!-- <xsl:choose>
<xsl:when test="count(node()) = 1 and *[local-name() = 'span'][contains(@style, 'text-orientation')]">
<fo:block-container reference-orientation="270">
<fo:block role="SKIP" text-align="start">
<xsl:apply-templates />
</fo:block>
</fo:block-container>
</xsl:when>
<xsl:otherwise>
<fo:block role="SKIP">
<xsl:apply-templates />
</fo:block>
</xsl:otherwise>
</xsl:choose> -->
<fo:block role="SKIP">
<xsl:apply-templates/>
<xsl:if test="$isGenerateTableIF = 'false' and count(node()) = 0"> </xsl:if>
</fo:block>
</fo:table-cell>
</xsl:template> <!-- cell in table header row - 'th' -->
<xsl:template name="setTableCellAttributes">
<xsl:if test="@colspan">
<xsl:attribute name="number-columns-spanned">
<xsl:value-of select="@colspan"/>
</xsl:attribute>
</xsl:if>
<xsl:if test="@rowspan">
<xsl:attribute name="number-rows-spanned">
<xsl:value-of select="@rowspan"/>
</xsl:attribute>
</xsl:if>
<xsl:call-template name="display-align"/>
</xsl:template>
<xsl:template name="display-align">
<xsl:if test="@valign">
<xsl:attribute name="display-align">
<xsl:choose>
<xsl:when test="@valign = 'top'">before</xsl:when>
<xsl:when test="@valign = 'middle'">center</xsl:when>
<xsl:when test="@valign = 'bottom'">after</xsl:when>
<xsl:otherwise>before</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:if>
</xsl:template>
<!-- cell in table body, footer -->
<xsl:template match="*[local-name()='td']" name="td">
<fo:table-cell xsl:use-attribute-sets="table-cell-style"> <!-- text-align="{@align}" -->
<xsl:call-template name="setTextAlignment">
<xsl:with-param name="default">left</xsl:with-param>
</xsl:call-template>
<xsl:copy-of select="@keep-together.within-line"/>
<xsl:call-template name="refine_table-cell-style"/>
<xsl:if test=".//*[local-name() = 'table']"> <!-- if there is nested table -->
<xsl:attribute name="padding-right">1mm</xsl:attribute>
</xsl:if>
<xsl:call-template name="setTableCellAttributes"/>
<xsl:if test="$isGenerateTableIF = 'true'">
<xsl:attribute name="border">1pt solid black</xsl:attribute> <!-- border is mandatory, to determine page width -->
<xsl:attribute name="text-align">left</xsl:attribute>
</xsl:if>
<fo:block role="SKIP">
<xsl:if test="$isGenerateTableIF = 'true'">
<xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
</xsl:if>
<xsl:apply-templates/>
<xsl:if test="$isGenerateTableIF = 'true'"> <fo:inline id="{@id}_end">end</fo:inline></xsl:if> <!-- to determine width of text --> <!-- <xsl:value-of select="$hair_space"/> -->
<xsl:if test="$isGenerateTableIF = 'false' and count(node()) = 0"> </xsl:if>
</fo:block>
</fo:table-cell>
</xsl:template> <!-- td -->
<xsl:template match="*[local-name()='table']/*[local-name()='note' or local-name() = 'example']" priority="2">
<fo:block xsl:use-attribute-sets="table-note-style">
<xsl:copy-of select="@id"/>
<xsl:call-template name="refine_table-note-style"/>
<!-- Table's note/example name (NOTE, for example) -->
<fo:inline xsl:use-attribute-sets="table-note-name-style">
<xsl:call-template name="refine_table-note-name-style"/>
<xsl:apply-templates select="*[local-name() = 'name']"/>
</fo:inline>
<xsl:apply-templates select="node()[not(local-name() = 'name')]"/>
</fo:block>
</xsl:template> <!-- table/note -->
<xsl:template match="*[local-name()='table']/*[local-name()='note' or local-name()='example']/*[local-name()='p']" priority="2">
<xsl:apply-templates/>
</xsl:template>
<!-- ===================== -->
<!-- Footnotes processing -->
<!-- ===================== -->
<!--
<fn reference="1">
<p id="_8e5cf917-f75a-4a49-b0aa-1714cb6cf954">Formerly denoted as 15 % (m/m).</p>
</fn>
-->
<!-- footnotes in text (title, bibliography, main body, table's, figure's names), not for tables, figures -->
<xsl:template match="*[local-name() = 'fn'][not(ancestor::*[(local-name() = 'table' or local-name() = 'figure')] and not(ancestor::*[local-name() = 'name']))]" priority="2" name="fn">
<!-- list of footnotes to calculate actual footnotes number -->
<xsl:variable name="p_fn_">
<xsl:call-template name="get_fn_list"/>
<!-- <xsl:choose>
<xsl:when test="$namespace = 'jis'">
<xsl:call-template name="get_fn_list_for_element"/>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="get_fn_list"/>
</xsl:otherwise>
</xsl:choose> -->
</xsl:variable>
<xsl:variable name="p_fn" select="xalan:nodeset($p_fn_)"/>
<xsl:variable name="gen_id" select="generate-id(.)"/>
<xsl:variable name="lang" select="ancestor::*[contains(local-name(), '-standard')]/*[local-name()='bibdata']//*[local-name()='language'][@current = 'true']"/>
<xsl:variable name="reference_">
<xsl:value-of select="@reference"/>
<xsl:if test="normalize-space(@reference) = ''"><xsl:value-of select="$gen_id"/></xsl:if>
</xsl:variable>
<xsl:variable name="reference" select="normalize-space($reference_)"/>
<!-- fn sequence number in document -->
<xsl:variable name="current_fn_number">
<xsl:choose>
<xsl:when test="@current_fn_number"><xsl:value-of select="@current_fn_number"/></xsl:when> <!-- for BSI -->
<xsl:otherwise>
<xsl:value-of select="count($p_fn//fn[@reference = $reference]/preceding-sibling::fn) + 1"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="current_fn_number_text">
<xsl:choose>
<xsl:when test="$layoutVersion = '1951' and translate($current_fn_number, '0123456789', '') = ''">
<!-- replace number to asterisks -->
<xsl:call-template name="repeat">
<xsl:with-param name="char" select="'*'"/>
<xsl:with-param name="count" select="$current_fn_number"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise><xsl:value-of select="$current_fn_number"/><xsl:text>)</xsl:text></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="ref_id">
<xsl:choose>
<xsl:when test="normalize-space(@ref_id) != ''"><xsl:value-of select="@ref_id"/></xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat('footnote_', $lang, '_', $reference, '_', $current_fn_number)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="footnote_inline">
<fo:inline role="Reference">
<xsl:variable name="fn_styles">
<xsl:choose>
<xsl:when test="ancestor::*[local-name() = 'bibitem']">
<fn_styles xsl:use-attribute-sets="bibitem-note-fn-style">
</fn_styles>
</xsl:when>
<xsl:otherwise>
<fn_styles xsl:use-attribute-sets="fn-num-style">
</fn_styles>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:for-each select="xalan:nodeset($fn_styles)/fn_styles/@*">
<xsl:copy-of select="."/>
</xsl:for-each>
<xsl:if test="following-sibling::node()[normalize-space() != ''][1][local-name() = 'fn']">
<xsl:attribute name="padding-right">0.5mm</xsl:attribute>
</xsl:if>
<xsl:if test="$layoutVersion = '2024'">
<xsl:attribute name="font-size">70%</xsl:attribute>
</xsl:if>
<xsl:call-template name="insert_basic_link">
<xsl:with-param name="element">
<fo:basic-link internal-destination="{$ref_id}" fox:alt-text="footnote {$current_fn_number}"> <!-- note: role="Lbl" removed in https://github.com/metanorma/mn2pdf/issues/291 -->
<fo:inline role="Lbl"> <!-- need for https://github.com/metanorma/metanorma-iso/issues/1003 -->
<xsl:copy-of select="$current_fn_number_text"/>
</fo:inline>
</fo:basic-link>
</xsl:with-param>
</xsl:call-template>
</fo:inline>
</xsl:variable>
<xsl:choose>
<xsl:when test="normalize-space(@skip_footnote_body) = 'true'">
<xsl:copy-of select="$footnote_inline"/>
</xsl:when>
<xsl:when test="$p_fn//fn[@gen_id = $gen_id] or normalize-space(@skip_footnote_body) = 'false'">
<fo:footnote xsl:use-attribute-sets="fn-style" role="SKIP">
<xsl:copy-of select="$footnote_inline"/>
<fo:footnote-body role="Note">
<fo:block-container xsl:use-attribute-sets="fn-container-body-style" role="SKIP">
<fo:block xsl:use-attribute-sets="fn-body-style" role="SKIP">
<xsl:call-template name="refine_fn-body-style"/>
<fo:inline id="{$ref_id}" xsl:use-attribute-sets="fn-body-num-style" role="Lbl">
<xsl:call-template name="refine_fn-body-num-style"/>
<xsl:value-of select="$current_fn_number_text"/>
</fo:inline>
<xsl:apply-templates/>
</fo:block>
</fo:block-container>
</fo:footnote-body>
</fo:footnote>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="$footnote_inline"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template> <!-- fn in text -->
<xsl:template name="get_fn_list">
<xsl:choose>
<xsl:when test="@current_fn_number"> <!-- for BSI, footnote reference number calculated already -->
<fn gen_id="{generate-id(.)}">
<xsl:copy-of select="@*"/>
<xsl:copy-of select="node()"/>
</fn>
</xsl:when>
<xsl:otherwise>
<!-- itetation for:
footnotes in bibdata/title
footnotes in bibliography
footnotes in document's body (except table's head/body/foot and figure text)
-->
<xsl:for-each select="ancestor::*[contains(local-name(), '-standard')]/*[local-name() = 'bibdata']/*[local-name() = 'note'][@type='title-footnote']">
<fn gen_id="{generate-id(.)}">
<xsl:copy-of select="@*"/>
<xsl:copy-of select="node()"/>
</fn>
</xsl:for-each>
<xsl:for-each select="ancestor::*[contains(local-name(), '-standard')]/*[local-name()='boilerplate']/* | ancestor::*[contains(local-name(), '-standard')]//*[local-name()='preface']/* | ancestor::*[contains(local-name(), '-standard')]//*[local-name()='sections']/* | ancestor::*[contains(local-name(), '-standard')]//*[local-name()='annex'] | ancestor::*[contains(local-name(), '-standard')]//*[local-name()='bibliography']/*">
<xsl:sort select="@displayorder" data-type="number"/>
<!-- commented:
.//*[local-name() = 'bibitem'][ancestor::*[local-name() = 'references']]/*[local-name() = 'note'] |
because 'fn' there is in biblio-tag -->
<xsl:for-each select=".//*[local-name() = 'fn'][not(ancestor::*[(local-name() = 'table' or local-name() = 'figure')] and not(ancestor::*[local-name() = 'name']))][generate-id(.)=generate-id(key('kfn',@reference)[1])]">
<!-- copy unique fn -->
<fn gen_id="{generate-id(.)}">
<xsl:copy-of select="@*"/>
<xsl:copy-of select="node()"/>
</fn>
</xsl:for-each>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="get_fn_list_for_element">
<xsl:choose>
<xsl:when test="@current_fn_number"> <!-- footnote reference number calculated already -->
<fn gen_id="{generate-id(.)}">
<xsl:copy-of select="@*"/>
<xsl:copy-of select="node()"/>
</fn>
</xsl:when>
<xsl:otherwise>
<xsl:for-each select="ancestor::*[local-name() = 'ul' or local-name() = 'ol'][1]">
<xsl:variable name="element_id" select="@id"/>
<xsl:for-each select=".//*[local-name() = 'fn'][generate-id(.)=generate-id(key('kfn',@reference)[1])]">
<!-- copy unique fn -->
<fn gen_id="{generate-id(.)}">
<xsl:copy-of select="@*"/>
<xsl:copy-of select="node()"/>
</fn>
</xsl:for-each>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- ============================ -->
<!-- table's footnotes rendering -->
<!-- ============================ -->
<xsl:template name="table_fn_display">
<xsl:variable name="references">
<xsl:for-each select="..//*[local-name()='fn'][local-name(..) != 'name']">
<xsl:call-template name="create_fn"/>
</xsl:for-each>
</xsl:variable>
<xsl:for-each select="xalan:nodeset($references)//fn">
<xsl:variable name="reference" select="@reference"/>
<xsl:if test="not(preceding-sibling::*[@reference = $reference])"> <!-- only unique reference puts in note-->
<fo:block xsl:use-attribute-sets="table-fn-style">
<xsl:call-template name="refine_table-fn-style"/>
<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> <!-- 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">
<xsl:value-of select="concat(@reference, '_', ancestor::*[local-name()='table'][1]/@id)"/>
</xsl:attribute>
</xsl:if>
<xsl:apply-templates/>
</fn>
</xsl:template>
<!-- footnotes for table's name rendering -->
<xsl:template name="table_name_fn_display">
<xsl:for-each select="*[local-name()='name']//*[local-name()='fn']">
<xsl:variable name="reference" select="@reference"/>
<fo:block id="{@reference}_{ancestor::*[@id][1]/@id}"><xsl:value-of select="@reference"/></fo:block>
<fo:block margin-bottom="12pt">
<xsl:apply-templates/>
</fo:block>
</xsl:for-each>
</xsl:template>
<!-- ============================ -->
<!-- EMD table's footnotes rendering -->
<!-- ============================ -->
<!-- ============================ -->
<!-- figure's footnotes rendering -->
<!-- ============================ -->
<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>
</xsl:variable>
<xsl:variable name="figure_id" select="normalize-space($figure_id_)"/>
<!-- all footnotes relates to the current figure -->
<xsl:variable name="references">
<xsl:for-each select=".//*[local-name()='fn'][not(parent::*[local-name()='name'])][ancestor::*[local-name() = 'figure'][1][@id = $figure_id]]">
<fn reference="{@reference}" id="{@reference}_{ancestor::*[@id][1]/@id}">
<xsl:apply-templates/>
</fn>
</xsl:for-each>
</xsl:variable>
<xsl:if test="xalan:nodeset($references)//fn">
<xsl:variable name="key_iso">
true
</xsl:variable>
<fo:block>
<!-- current hierarchy is 'figure' element -->
<xsl:variable name="following_dl_colwidths">
<xsl:if test="*[local-name() = 'dl']"><!-- if there is a 'dl', then set the same columns width as for 'dl' -->
<xsl:variable name="simple-table">
<!-- <xsl:variable name="doc_ns">
<xsl:if test="$namespace = 'bipm'">bipm</xsl:if>
</xsl:variable>
<xsl:variable name="ns">
<xsl:choose>
<xsl:when test="normalize-space($doc_ns) != ''">
<xsl:value-of select="normalize-space($doc_ns)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="substring-before(name(/*), '-')"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable> -->
<xsl:for-each select="*[local-name() = 'dl'][1]">
<tbody>
<xsl:apply-templates mode="dl"/>
</tbody>
</xsl:for-each>
</xsl:variable>
<xsl:call-template name="calculate-column-widths">
<xsl:with-param name="cols-count" select="2"/>
<xsl:with-param name="table" select="$simple-table"/>
</xsl:call-template>
</xsl:if>
</xsl:variable>
<xsl:variable name="maxlength_dt">
<xsl:for-each select="*[local-name() = 'dl'][1]">
<xsl:call-template name="getMaxLength_dt"/>
</xsl:for-each>
</xsl:variable>
<fo:table width="95%" table-layout="fixed">
<xsl:if test="normalize-space($key_iso) = 'true'">
<xsl:attribute name="font-size">10pt</xsl:attribute>
</xsl:if>
<xsl:choose>
<!-- if there 'dl', then set same columns width -->
<xsl:when test="xalan:nodeset($following_dl_colwidths)//column">
<xsl:call-template name="setColumnWidth_dl">
<xsl:with-param name="colwidths" select="$following_dl_colwidths"/>
<xsl:with-param name="maxlength_dt" select="$maxlength_dt"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<fo:table-column column-width="5%"/>
<fo:table-column column-width="95%"/>
</xsl:otherwise>
</xsl:choose>
<fo:table-body>
<xsl:for-each select="xalan:nodeset($references)//fn">
<xsl:variable name="reference" select="@reference"/>
<xsl:if test="not(preceding-sibling::*[@reference = $reference])"> <!-- only unique reference puts in note-->
<fo:table-row>
<fo:table-cell>
<fo:block>
<fo:inline id="{@id}" xsl:use-attribute-sets="figure-fn-number-style">
<xsl:value-of select="@reference"/>
</fo:inline>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block xsl:use-attribute-sets="figure-fn-body-style">
<xsl:if test="normalize-space($key_iso) = 'true'">
<xsl:attribute name="margin-bottom">0</xsl:attribute>
</xsl:if>
<xsl:copy-of select="./node()"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
</xsl:if>
</xsl:for-each>
</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">
true
</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"/>
<fo:basic-link internal-destination="{@reference}_{ancestor::*[@id][1]/@id}" fox:alt-text="footnote {@reference}"> <!-- @reference | ancestor::*[local-name()='clause'][1]/@id-->
<xsl:if test="ancestor::*[local-name()='table'][1]/@id"> <!-- for footnotes in tables -->
<xsl:attribute name="internal-destination">
<xsl:value-of select="concat(@reference, '_', ancestor::*[local-name()='table'][1]/@id)"/>
</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() != '']">
<fo:inline role="SKIP"><xsl:value-of select="."/></fo:inline>
</xsl:template>
<xsl:template match="*[local-name()='fn']//*[local-name()='p']">
<fo:inline role="P">
<xsl:apply-templates/>
</fo:inline>
</xsl:template>
<!-- ===================== -->
<!-- END Footnotes processing -->
<!-- ===================== -->
<!-- ===================== -->
<!-- Definition List -->
<!-- ===================== -->
<!-- for table auto-layout algorithm -->
<xsl:template match="*[local-name()='dl']" priority="2">
<xsl:choose>
<xsl:when test="$table_only_with_id != '' and @id = $table_only_with_id">
<xsl:call-template name="dl"/>
</xsl:when>
<xsl:when test="$table_only_with_id != ''"><fo:block/><!-- to prevent empty fo:block-container --></xsl:when>
<xsl:when test="$table_only_with_ids != '' and contains($table_only_with_ids, concat(@id, ' '))">
<xsl:call-template name="dl"/>
</xsl:when>
<xsl:when test="$table_only_with_ids != ''"><fo:block/><!-- to prevent empty fo:block-container --></xsl:when>
<xsl:otherwise>
<xsl:call-template name="dl"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="*[local-name()='dl']" name="dl">
<xsl:variable name="isAdded" select="@added"/>
<xsl:variable name="isDeleted" select="@deleted"/>
<!-- <dl><xsl:copy-of select="."/></dl> -->
<fo:block-container xsl:use-attribute-sets="dl-block-style" role="SKIP">
<xsl:call-template name="setBlockSpanAll"/>
<xsl:if test="not(ancestor::*[local-name() = 'quote'])">
<xsl:attribute name="margin-left">0mm</xsl:attribute>
</xsl:if>
<xsl:if test="ancestor::*[local-name() = 'sourcecode']">
<!-- set font-size as sourcecode font-size -->
<xsl:variable name="sourcecode_attributes">
<xsl:call-template name="get_sourcecode_attributes"/>
</xsl:variable>
<xsl:for-each select="xalan:nodeset($sourcecode_attributes)/sourcecode_attributes/@font-size">
<xsl:attribute name="{local-name()}">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:for-each>
</xsl:if>
<xsl:if test="parent::*[local-name() = 'note']">
<xsl:attribute name="margin-left">
<xsl:choose>
<xsl:when test="not(ancestor::*[local-name() = 'table'])"><xsl:value-of select="$note-body-indent"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$note-body-indent-table"/></xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:if>
<xsl:call-template name="setTrackChangesStyles">
<xsl:with-param name="isAdded" select="$isAdded"/>
<xsl:with-param name="isDeleted" select="$isDeleted"/>
</xsl:call-template>
<fo:block-container margin-left="0mm" role="SKIP">
<xsl:attribute name="margin-right">0mm</xsl:attribute>
<xsl:variable name="parent" select="local-name(..)"/>
<xsl:variable name="key_iso">
<xsl:if test="$parent = 'figure' or $parent = 'formula' or ../@key = 'true'">true</xsl:if>
<!-- and (not(../@class) or ../@class !='pseudocode') -->
</xsl:variable>
<xsl:variable name="onlyOneComponent" select="normalize-space($parent = 'formula' and count(*[local-name()='dt']) = 1)"/>
<xsl:choose>
<xsl:when test="$onlyOneComponent = 'true'"> <!-- only one component -->
<fo:block margin-bottom="12pt" text-align="left">
<xsl:attribute name="margin-bottom">0</xsl:attribute>
<!-- <xsl:variable name="title-where">
<xsl:call-template name="getLocalizedString">
<xsl:with-param name="key">where</xsl:with-param>
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="$title-where"/> -->
<xsl:apply-templates select="preceding-sibling::*[1][local-name() = 'p' and @keep-with-next = 'true']/node()"/>
<xsl:text> </xsl:text>
<xsl:apply-templates select="*[local-name()='dt']/*"/>
<xsl:if test="*[local-name()='dd']/node()[normalize-space() != ''][1][self::text()]">
<xsl:text> </xsl:text>
</xsl:if>
<xsl:apply-templates select="*[local-name()='dd']/node()" mode="inline"/>
</fo:block>
</xsl:when> <!-- END: only one component -->
<xsl:when test="$parent = 'formula'"> <!-- a few components -->
<fo:block margin-bottom="12pt" text-align="left">
<xsl:call-template name="refine_dl_formula_where_style"/>
<!-- <xsl:variable name="title-where">
<xsl:call-template name="getLocalizedString">
<xsl:with-param name="key">where</xsl:with-param>
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="$title-where"/><xsl:if test="$namespace = 'bsi' or $namespace = 'itu'">:</xsl:if> -->
<!-- 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 -->
<!-- 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 -->
<fo:block font-weight="bold" text-align="left" margin-bottom="12pt" keep-with-next="always">
<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'">
<fo:block role="SKIP">
<xsl:call-template name="refine_multicomponent_style"/>
<xsl:if test="ancestor::*[local-name() = 'dd' or local-name() = 'td']">
<xsl:attribute name="margin-top">0</xsl:attribute>
</xsl:if>
<fo:block role="SKIP">
<xsl:call-template name="refine_multicomponent_block_style"/>
<xsl:apply-templates select="*[local-name() = 'name']">
<xsl:with-param name="process">true</xsl:with-param>
</xsl:apply-templates>
<xsl:if test="$isGenerateTableIF = 'true'">
<!-- to determine start of table -->
<fo:block id="{concat('table_if_start_',@id)}" keep-with-next="always" font-size="1pt">Start table '<xsl:value-of select="@id"/>'.</fo:block>
</xsl:if>
<fo:table width="95%" table-layout="fixed">
<xsl:if test="$isGenerateTableIF = 'true'">
<xsl:attribute name="wrap-option">no-wrap</xsl:attribute>
</xsl:if>
<xsl:choose>
<xsl:when test="normalize-space($key_iso) = 'true' and $parent = 'formula'"/>
<xsl:when test="normalize-space($key_iso) = 'true'">
<xsl:attribute name="font-size">10pt</xsl:attribute>
</xsl:when>
</xsl:choose>
<xsl:attribute name="width">100%</xsl:attribute>
<xsl:choose>
<xsl:when test="$isGenerateTableIF = 'true'">
<!-- generate IF for table widths -->
<!-- example:
<tr>
<td valign="top" align="left" id="tab-symdu_1_1">
<p>Symbol</p>
<word id="tab-symdu_1_1_word_1">Symbol</word>
</td>
<td valign="top" align="left" id="tab-symdu_1_2">
<p>Description</p>
<word id="tab-symdu_1_2_word_1">Description</word>
</td>
</tr>
-->
<!-- create virtual html table for dl/[dt and dd] -->
<xsl:variable name="simple-table">
<!-- initial='<xsl:copy-of select="."/>' -->
<xsl:variable name="dl_table">
<tbody>
<xsl:apply-templates mode="dl_if">
<xsl:with-param name="id" select="@id"/>
</xsl:apply-templates>
</tbody>
</xsl:variable>
<!-- dl_table='<xsl:copy-of select="$dl_table"/>' -->
<!-- Step: replace <br/> to <p>...</p> -->
<xsl:variable name="table_without_br">
<xsl:apply-templates select="xalan:nodeset($dl_table)" mode="table-without-br"/>
</xsl:variable>
<!-- table_without_br='<xsl:copy-of select="$table_without_br"/>' -->
<!-- Step: add id to each cell -->
<!-- add <word>...</word> for each word, image, math -->
<xsl:variable name="simple-table-id">
<xsl:apply-templates select="xalan:nodeset($table_without_br)" mode="simple-table-id">
<xsl:with-param name="id" select="@id"/>
</xsl:apply-templates>
</xsl:variable>
<!-- simple-table-id='<xsl:copy-of select="$simple-table-id"/>' -->
<xsl:copy-of select="xalan:nodeset($simple-table-id)"/>
</xsl:variable>
<!-- DEBUG: simple-table<xsl:copy-of select="$simple-table"/> -->
<xsl:apply-templates select="xalan:nodeset($simple-table)" mode="process_table-if">
<xsl:with-param name="table_or_dl">dl</xsl:with-param>
</xsl:apply-templates>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="simple-table">
<xsl:variable name="dl_table">
<tbody>
<xsl:apply-templates mode="dl">
<xsl:with-param name="id" select="@id"/>
</xsl:apply-templates>
</tbody>
</xsl:variable>
<xsl:copy-of select="$dl_table"/>
</xsl:variable>
<xsl:variable name="colwidths">
<xsl:choose>
<!-- dl from table[@class='dl'] -->
<xsl:when test="*[local-name() = 'colgroup']">
<autolayout/>
<xsl:for-each select="*[local-name() = 'colgroup']/*[local-name() = 'col']">
<column><xsl:value-of select="translate(@width,'%m','')"/></column>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="calculate-column-widths">
<xsl:with-param name="cols-count" select="2"/>
<xsl:with-param name="table" select="$simple-table"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- <xsl:text disable-output-escaping="yes"><!- -</xsl:text>
DEBUG
colwidths=<xsl:copy-of select="$colwidths"/>
<xsl:text disable-output-escaping="yes">- -></xsl:text> -->
<!-- colwidths=<xsl:copy-of select="$colwidths"/> -->
<xsl:variable name="maxlength_dt">
<xsl:call-template name="getMaxLength_dt"/>
</xsl:variable>
<xsl:variable name="isContainsKeepTogetherTag_">
<xsl:value-of select="count(.//*[local-name() = $element_name_keep-together_within-line]) > 0"/>
</xsl:variable>
<xsl:variable name="isContainsKeepTogetherTag" select="normalize-space($isContainsKeepTogetherTag_)"/>
<!-- isContainsExpressReference=<xsl:value-of select="$isContainsExpressReference"/> -->
<xsl:call-template name="setColumnWidth_dl">
<xsl:with-param name="colwidths" select="$colwidths"/>
<xsl:with-param name="maxlength_dt" select="$maxlength_dt"/>
<xsl:with-param name="isContainsKeepTogetherTag" select="$isContainsKeepTogetherTag"/>
</xsl:call-template>
<fo:table-body>
<!-- DEBUG -->
<xsl:if test="$table_if_debug = 'true'">
<fo:table-row>
<fo:table-cell number-columns-spanned="2" font-size="60%">
<xsl:apply-templates select="xalan:nodeset($colwidths)" mode="print_as_xml"/>
</fo:table-cell>
</fo:table-row>
</xsl:if>
<xsl:apply-templates>
<xsl:with-param name="key_iso" select="normalize-space($key_iso)"/>
<xsl:with-param name="split_keep-within-line" select="xalan:nodeset($colwidths)/split_keep-within-line"/>
</xsl:apply-templates>
</fo:table-body>
</xsl:otherwise>
</xsl:choose>
</fo:table>
</fo:block>
</fo:block>
</xsl:if> <!-- END: a few components -->
</fo:block-container>
</fo:block-container>
<xsl:if test="$isGenerateTableIF = 'true'"> <!-- process nested 'dl' -->
<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 -->
<xsl:template name="refine_figure_key_style">
<xsl:attribute name="font-size">10pt</xsl:attribute>
<xsl:attribute name="margin-bottom">0</xsl:attribute>
</xsl:template> <!-- refine_figure_key_style -->
<xsl:template name="refine_multicomponent_style">
<xsl:variable name="parent" select="local-name(..)"/>
<xsl:if test="$parent = 'formula'">
<xsl:attribute name="margin-left">4mm</xsl:attribute>
</xsl:if>
<xsl:attribute name="margin-top">12pt</xsl:attribute>
</xsl:template> <!-- refine_multicomponent_style -->
<xsl:template name="refine_multicomponent_block_style">
<xsl:variable name="parent" select="local-name(..)"/>
</xsl:template> <!-- refine_multicomponent_block_style -->
<!-- ignore 'p' with 'where' in formula, before 'dl' -->
<xsl:template match="*[local-name() = 'formula']/*[local-name() = 'p' and @keep-with-next = 'true' and following-sibling::*[1][local-name() = 'dl']]"/>
<xsl:template match="*[local-name() = 'dl']/*[local-name() = 'name']">
<xsl:param name="process">false</xsl:param>
<xsl:if test="$process = 'true'">
<fo:block xsl:use-attribute-sets="dl-name-style">
<xsl:apply-templates/>
</fo:block>
</xsl:if>
</xsl:template>
<xsl:template name="setColumnWidth_dl">
<xsl:param name="colwidths"/>
<xsl:param name="maxlength_dt"/>
<xsl:param name="isContainsKeepTogetherTag"/>
<!-- <colwidths><xsl:copy-of select="$colwidths"/></colwidths> -->
<xsl:choose>
<xsl:when test="xalan:nodeset($colwidths)/autolayout">
<xsl:call-template name="insertTableColumnWidth">
<xsl:with-param name="colwidths" select="$colwidths"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="ancestor::*[local-name()='dl']"><!-- second level, i.e. inlined table -->
<fo:table-column column-width="50%"/>
<fo:table-column column-width="50%"/>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="xalan:nodeset($colwidths)/autolayout">
<xsl:call-template name="insertTableColumnWidth">
<xsl:with-param name="colwidths" select="$colwidths"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="$isContainsKeepTogetherTag">
<xsl:call-template name="insertTableColumnWidth">
<xsl:with-param name="colwidths" select="$colwidths"/>
</xsl:call-template>
</xsl:when>
<!-- to set width check most wide chars like `W` -->
<xsl:when test="normalize-space($maxlength_dt) != '' and number($maxlength_dt) <= 2"> <!-- if dt contains short text like t90, a, etc -->
<fo:table-column column-width="7%"/>
<fo:table-column column-width="93%"/>
</xsl:when>
<xsl:when test="normalize-space($maxlength_dt) != '' and number($maxlength_dt) <= 5"> <!-- if dt contains short text like ABC, etc -->
<fo:table-column column-width="15%"/>
<fo:table-column column-width="85%"/>
</xsl:when>
<xsl:when test="normalize-space($maxlength_dt) != '' and number($maxlength_dt) <= 7"> <!-- if dt contains short text like ABCDEF, etc -->
<fo:table-column column-width="20%"/>
<fo:table-column column-width="80%"/>
</xsl:when>
<xsl:when test="normalize-space($maxlength_dt) != '' and number($maxlength_dt) <= 10"> <!-- if dt contains short text like ABCDEFEF, etc -->
<fo:table-column column-width="25%"/>
<fo:table-column column-width="75%"/>
</xsl:when>
<!-- <xsl:when test="xalan:nodeset($colwidths)/column[1] div xalan:nodeset($colwidths)/column[2] > 1.7">
<fo:table-column column-width="60%"/>
<fo:table-column column-width="40%"/>
</xsl:when> -->
<xsl:when test="xalan:nodeset($colwidths)/column[1] div xalan:nodeset($colwidths)/column[2] > 1.3">
<fo:table-column column-width="50%"/>
<fo:table-column column-width="50%"/>
</xsl:when>
<xsl:when test="xalan:nodeset($colwidths)/column[1] div xalan:nodeset($colwidths)/column[2] > 0.5">
<fo:table-column column-width="40%"/>
<fo:table-column column-width="60%"/>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="insertTableColumnWidth">
<xsl:with-param name="colwidths" select="$colwidths"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="insertTableColumnWidth">
<xsl:param name="colwidths"/>
<xsl:for-each select="xalan:nodeset($colwidths)//column">
<xsl:choose>
<xsl:when test=". = 1 or . = 0">
<fo:table-column column-width="proportional-column-width(2)"/>
</xsl:when>
<xsl:otherwise>
<!-- <fo:table-column column-width="proportional-column-width({.})"/> -->
<xsl:variable name="divider">
<xsl:value-of select="@divider"/>
<xsl:if test="not(@divider)">1</xsl:if>
</xsl:variable>
<fo:table-column column-width="proportional-column-width({round(. div $divider)})"/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:template>
<xsl:template name="getMaxLength_dt">
<xsl:variable name="lengths">
<xsl:for-each select="*[local-name()='dt']">
<xsl:variable name="maintext_length" select="string-length(normalize-space(.))"/>
<xsl:variable name="attributes">
<xsl:for-each select=".//@open"><xsl:value-of select="."/></xsl:for-each>
<xsl:for-each select=".//@close"><xsl:value-of select="."/></xsl:for-each>
</xsl:variable>
<length><xsl:value-of select="string-length(normalize-space(.)) + string-length($attributes)"/></length>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="maxLength">
<xsl:for-each select="xalan:nodeset($lengths)/length">
<xsl:sort select="." data-type="number" order="descending"/>
<xsl:if test="position() = 1">
<xsl:value-of select="."/>
</xsl:if>
</xsl:for-each>
</xsl:variable>
<!-- <xsl:message>DEBUG:<xsl:value-of select="$maxLength"/></xsl:message> -->
<xsl:value-of select="$maxLength"/>
</xsl:template>
<!-- note in definition list: dl/note -->
<!-- renders in the 2-column spanned table row -->
<xsl:template match="*[local-name()='dl']/*[local-name()='note']" priority="2">
<xsl:param name="key_iso"/>
<!-- <tr>
<td>NOTE</td>
<td>
<xsl:apply-templates />
</td>
</tr>
-->
<!-- OLD Variant -->
<!-- <fo:table-row>
<fo:table-cell>
<fo:block margin-top="6pt">
<xsl:if test="normalize-space($key_iso) = 'true'">
<xsl:attribute name="margin-top">0</xsl:attribute>
</xsl:if>
<xsl:apply-templates select="*[local-name() = 'name']" />
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:apply-templates select="node()[not(local-name() = 'name')]" />
</fo:block>
</fo:table-cell>
</fo:table-row> -->
<!-- <tr>
<td number-columns-spanned="2">NOTE <xsl:apply-templates /> </td>
</tr>
-->
<fo:table-row>
<fo:table-cell number-columns-spanned="2">
<fo:block role="SKIP">
<xsl:call-template name="note"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
</xsl:template> <!-- END: dl/note -->
<!-- virtual html table for dl/[dt and dd] -->
<xsl:template match="*[local-name()='dt']" mode="dl">
<xsl:param name="id"/>
<xsl:variable name="row_number" select="count(preceding-sibling::*[local-name()='dt']) + 1"/>
<tr>
<td>
<xsl:attribute name="id">
<xsl:value-of select="concat($id,'@',$row_number,'_1')"/>
</xsl:attribute>
<xsl:apply-templates/>
</td>
<td>
<xsl:attribute name="id">
<xsl:value-of select="concat($id,'@',$row_number,'_2')"/>
</xsl:attribute>
<xsl:apply-templates select="following-sibling::*[local-name()='dd'][1]">
<xsl:with-param name="process">true</xsl:with-param>
</xsl:apply-templates>
</td>
</tr>
</xsl:template>
<!-- Definition's term -->
<xsl:template match="*[local-name()='dt']">
<xsl:param name="key_iso"/>
<xsl:param name="split_keep-within-line"/>
<fo:table-row xsl:use-attribute-sets="dt-row-style">
<xsl:call-template name="insert_dt_cell">
<xsl:with-param name="key_iso" select="$key_iso"/>
<xsl:with-param name="split_keep-within-line" select="$split_keep-within-line"/>
</xsl:call-template>
<xsl:for-each select="following-sibling::*[local-name()='dd'][1]">
<xsl:call-template name="insert_dd_cell">
<xsl:with-param name="split_keep-within-line" select="$split_keep-within-line"/>
</xsl:call-template>
</xsl:for-each>
</fo:table-row>
</xsl:template> <!-- END: dt -->
<xsl:template name="insert_dt_cell">
<xsl:param name="key_iso"/>
<xsl:param name="split_keep-within-line"/>
<fo:table-cell xsl:use-attribute-sets="dt-cell-style">
<xsl:if test="$isGenerateTableIF = 'true'">
<!-- border is mandatory, to calculate real width -->
<xsl:attribute name="border">0.1pt solid black</xsl:attribute>
<xsl:attribute name="text-align">left</xsl:attribute>
</xsl:if>
<xsl:call-template name="refine_dt-cell-style"/>
<fo:block xsl:use-attribute-sets="dt-block-style" role="SKIP">
<xsl:copy-of select="@id"/>
<xsl:if test="normalize-space($key_iso) = 'true'">
<xsl:attribute name="margin-top">0</xsl:attribute>
</xsl:if>
<xsl:call-template name="refine_dt-block-style"/>
<xsl:apply-templates>
<xsl:with-param name="split_keep-within-line" select="$split_keep-within-line"/>
</xsl:apply-templates>
<xsl:if test="$isGenerateTableIF = 'true'"><fo:inline id="{@id}_end">end</fo:inline></xsl:if> <!-- to determine width of text --> <!-- <xsl:value-of select="$hair_space"/> -->
</fo:block>
</fo:table-cell>
</xsl:template> <!-- insert_dt_cell -->
<xsl:template name="insert_dd_cell">
<xsl:param name="split_keep-within-line"/>
<fo:table-cell xsl:use-attribute-sets="dd-cell-style">
<xsl:if test="$isGenerateTableIF = 'true'">
<!-- border is mandatory, to calculate real width -->
<xsl:attribute name="border">0.1pt solid black</xsl:attribute>
</xsl:if>
<xsl:call-template name="refine_dd-cell-style"/>
<fo:block role="SKIP">
<xsl:if test="$isGenerateTableIF = 'true'">
<xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
</xsl:if>
<xsl:choose>
<xsl:when test="$isGenerateTableIF = 'true'">
<xsl:apply-templates> <!-- following-sibling::*[local-name()='dd'][1] -->
<xsl:with-param name="process">true</xsl:with-param>
</xsl:apply-templates>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="."> <!-- following-sibling::*[local-name()='dd'][1] -->
<xsl:with-param name="process">true</xsl:with-param>
<xsl:with-param name="split_keep-within-line" select="$split_keep-within-line"/>
</xsl:apply-templates>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="$isGenerateTableIF = 'true'"><fo:inline id="{@id}_end">end</fo:inline></xsl:if> <!-- to determine width of text --> <!-- <xsl:value-of select="$hair_space"/> -->
</fo:block>
</fo:table-cell>
</xsl:template> <!-- insert_dd_cell -->
<!-- END Definition's term -->
<xsl:template match="*[local-name()='dd']" mode="dl"/>
<xsl:template match="*[local-name()='dd']" mode="dl_process">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="*[local-name()='dd']">
<xsl:param name="process">false</xsl:param>
<xsl:param name="split_keep-within-line"/>
<xsl:if test="$process = 'true'">
<xsl:apply-templates select="@language"/>
<xsl:apply-templates>
<xsl:with-param name="split_keep-within-line" select="$split_keep-within-line"/>
</xsl:apply-templates>
</xsl:if>
</xsl:template>
<xsl:template match="*[local-name()='dd']/*" mode="inline">
<xsl:variable name="is_inline_element_after_where">
<xsl:if test="(local-name() = 'p') and not(preceding-sibling::node()[normalize-space() != ''])">true</xsl:if>
</xsl:variable>
<xsl:choose>
<xsl:when test="$is_inline_element_after_where = 'true'">
<fo:inline><xsl:text> </xsl:text><xsl:apply-templates/></fo:inline>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- virtual html table for dl/[dt and dd] for IF (Intermediate Format) -->
<xsl:template match="*[local-name()='dt']" mode="dl_if">
<xsl:param name="id"/>
<tr>
<td>
<xsl:copy-of select="node()"/>
</td>
<td>
<!-- <xsl:copy-of select="following-sibling::*[local-name()='dd'][1]/node()[not(local-name() = 'dl')]"/> -->
<xsl:apply-templates select="following-sibling::*[local-name()='dd'][1]/node()[not(local-name() = 'dl')]" mode="dl_if"/>
<!-- get paragraphs from nested 'dl' -->
<xsl:apply-templates select="following-sibling::*[local-name()='dd'][1]/*[local-name() = 'dl']" mode="dl_if_nested"/>
</td>
</tr>
</xsl:template>
<xsl:template match="*[local-name()='dd']" mode="dl_if"/>
<xsl:template match="*" mode="dl_if">
<xsl:copy-of select="."/>
</xsl:template>
<xsl:template match="*[local-name() = 'p']" mode="dl_if">
<xsl:param name="indent"/>
<p>
<xsl:copy-of select="@*"/>
<xsl:value-of select="$indent"/>
<xsl:copy-of select="node()"/>
</p>
</xsl:template>
<xsl:template match="*[local-name() = 'ul' or local-name() = 'ol']" mode="dl_if">
<xsl:variable name="list_rendered_">
<xsl:apply-templates select="."/>
</xsl:variable>
<xsl:variable name="list_rendered" select="xalan:nodeset($list_rendered_)"/>
<xsl:variable name="indent">
<xsl:for-each select="($list_rendered//fo:block[not(.//fo:block)])[1]">
<xsl:apply-templates select="ancestor::*[@provisional-distance-between-starts]/@provisional-distance-between-starts" mode="dl_if"/>
</xsl:for-each>
</xsl:variable>
<xsl:apply-templates mode="dl_if">
<xsl:with-param name="indent" select="$indent"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="*[local-name() = 'li']" mode="dl_if">
<xsl:param name="indent"/>
<xsl:apply-templates mode="dl_if">
<xsl:with-param name="indent" select="$indent"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="@provisional-distance-between-starts" mode="dl_if">
<xsl:variable name="value" select="round(substring-before(.,'mm'))"/>
<!-- emulate left indent for list item -->
<xsl:call-template name="repeat">
<xsl:with-param name="char" select="'x'"/>
<xsl:with-param name="count" select="$value"/>
</xsl:call-template>
</xsl:template>
<xsl:template match="*[local-name()='dl']" mode="dl_if_nested">
<xsl:for-each select="*[local-name() = 'dt']">
<p>
<xsl:copy-of select="node()"/>
<xsl:text> </xsl:text>
<xsl:copy-of select="following-sibling::*[local-name()='dd'][1]/*[local-name() = 'p']/node()"/>
</p>
</xsl:for-each>
</xsl:template>
<xsl:template match="*[local-name()='dd']" mode="dl_if_nested"/>
<!-- ===================== -->
<!-- END Definition List -->
<!-- ===================== -->
<!-- default: ignore title in sections/p -->
<xsl:template match="*[local-name() = 'sections']/*[local-name() = 'p'][starts-with(@class, 'zzSTDTitle')]" priority="3"/>
<!-- ========================= -->
<!-- Rich text formatting -->
<!-- ========================= -->
<xsl:template match="*[local-name()='em']">
<fo:inline font-style="italic">
<xsl:call-template name="refine_italic_style"/>
<xsl:apply-templates/>
</fo:inline>
</xsl:template>
<xsl:template name="refine_italic_style">
<xsl:if test="ancestor::*[local-name() = 'item']">
<xsl:attribute name="role">SKIP</xsl:attribute>
</xsl:if>
</xsl:template>
<xsl:template match="*[local-name()='strong'] | *[local-name()='b']">
<xsl:param name="split_keep-within-line"/>
<fo:inline font-weight="bold">
<xsl:call-template name="refine_strong_style"/>
<xsl:apply-templates>
<xsl:with-param name="split_keep-within-line" select="$split_keep-within-line"/>
</xsl:apply-templates>
</fo:inline>
</xsl:template>
<xsl:template name="refine_strong_style">
<xsl:if test="ancestor::*[local-name() = 'item']">
<xsl:attribute name="role">SKIP</xsl:attribute>
</xsl:if>
<xsl:if test="ancestor::*['preferred']">
<xsl:attribute name="role">SKIP</xsl:attribute>
</xsl:if>
</xsl:template>
<xsl:template match="*[local-name()='padding']">
<fo:inline padding-right="{@value}"> </fo:inline>
</xsl:template>
<xsl:template match="*[local-name()='sup']">
<fo:inline font-size="80%" vertical-align="super">
<xsl:apply-templates/>
</fo:inline>
</xsl:template>
<xsl:template match="*[local-name()='sub']">
<fo:inline font-size="80%" vertical-align="sub">
<xsl:apply-templates/>
</fo:inline>
</xsl:template>
<xsl:template match="*[local-name()='tt']">
<fo:inline xsl:use-attribute-sets="tt-style">
<xsl:variable name="_font-size">
9 <!-- inherit -->
</xsl:variable>
<xsl:variable name="font-size" select="normalize-space($_font-size)"/>
<xsl:if test="$font-size != ''">
<xsl:attribute name="font-size">
<xsl:choose>
<xsl:when test="$font-size = 'inherit'"><xsl:value-of select="$font-size"/></xsl:when>
<xsl:when test="contains($font-size, '%')"><xsl:value-of select="$font-size"/></xsl:when>
<xsl:when test="ancestor::*[local-name()='note'] or ancestor::*[local-name()='example']"><xsl:value-of select="$font-size * 0.91"/>pt</xsl:when>
<xsl:otherwise><xsl:value-of select="$font-size"/>pt</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:if>
<xsl:apply-templates/>
</fo:inline>
</xsl:template> <!-- tt -->
<xsl:variable name="regex_url_start">^(http://|https://|www\.)?(.*)</xsl:variable>
<xsl:template match="*[local-name()='tt']/text()" priority="2">
<xsl:choose>
<xsl:when test="java:replaceAll(java:java.lang.String.new(.), $regex_url_start, '$2') != ''">
<!-- url -->
<xsl:call-template name="add-zero-spaces-link-java"/>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="add_spaces_to_sourcecode"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="*[local-name()='underline']">
<fo:inline text-decoration="underline">
<xsl:apply-templates/>
</fo:inline>
</xsl:template>
<!-- ================= -->
<!-- Added,deleted text -->
<!-- ================= -->
<xsl:template match="*[local-name()='add'] | *[local-name() = 'change-open-tag'] | *[local-name() = 'change-close-tag']" name="tag_add">
<xsl:param name="skip">true</xsl:param>
<xsl:param name="block">false</xsl:param>
<xsl:param name="type"/>
<xsl:param name="text-align"/>
<xsl:choose>
<xsl:when test="starts-with(., $ace_tag) or local-name() = 'change-open-tag' or local-name() = 'change-close-tag'"> <!-- examples: ace-tag_A1_start, ace-tag_A2_end, C1_start, AC_start, or
<change-open-tag>A<sub>1</sub></change-open-tag>, <change-close-tag>A<sub>1</sub></change-close-tag> -->
<xsl:choose>
<xsl:when test="$skip = 'true' and ((local-name(../..) = 'note' and not(preceding-sibling::node())) or (local-name(..) = 'title' and preceding-sibling::node()[1][local-name() = 'tab']) or local-name(..) = 'formattedref' and not(preceding-sibling::node())) and ../node()[last()][local-name() = 'add'][starts-with(text(), $ace_tag)]"><!-- start tag displayed in template name="note" and title --></xsl:when>
<xsl:otherwise>
<xsl:variable name="tag">
<xsl:call-template name="insertTag">
<xsl:with-param name="type">
<xsl:choose>
<xsl:when test="local-name() = 'change-open-tag'">start</xsl:when>
<xsl:when test="local-name() = 'change-close-tag'">end</xsl:when>
<xsl:when test="$type = ''"><xsl:value-of select="substring-after(substring-after(., $ace_tag), '_')"/> <!-- start or end --></xsl:when>
<xsl:otherwise><xsl:value-of select="$type"/></xsl:otherwise>
</xsl:choose>
</xsl:with-param>
<xsl:with-param name="kind">
<xsl:choose>
<xsl:when test="local-name() = 'change-open-tag' or local-name() = 'change-close-tag'">
<xsl:value-of select="text()"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="substring(substring-before(substring-after(., $ace_tag), '_'), 1, 1)"/> <!-- A or C -->
</xsl:otherwise>
</xsl:choose>
</xsl:with-param>
<xsl:with-param name="value">
<xsl:choose>
<xsl:when test="local-name() = 'change-open-tag' or local-name() = 'change-close-tag'">
<xsl:value-of select="*[local-name() = 'sub']"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="substring(substring-before(substring-after(., $ace_tag), '_'), 2)"/> <!-- 1, 2, C -->
</xsl:otherwise>
</xsl:choose>
</xsl:with-param>
</xsl:call-template>
</xsl:variable>
<xsl:choose>
<xsl:when test="$block = 'false'">
<fo:inline>
<xsl:copy-of select="$tag"/>
</fo:inline>
</xsl:when>
<xsl:otherwise>
<fo:block> <!-- for around figures -->
<xsl:if test="$text-align != ''">
<xsl:attribute name="text-align"><xsl:value-of select="$text-align"/></xsl:attribute>
</xsl:if>
<xsl:copy-of select="$tag"/>
</fo:block>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="@amendment">
<fo:inline>
<xsl:call-template name="insertTag">
<xsl:with-param name="kind">A</xsl:with-param>
<xsl:with-param name="value"><xsl:value-of select="@amendment"/></xsl:with-param>
</xsl:call-template>
<xsl:apply-templates/>
<xsl:call-template name="insertTag">
<xsl:with-param name="type">closing</xsl:with-param>
<xsl:with-param name="kind">A</xsl:with-param>
<xsl:with-param name="value"><xsl:value-of select="@amendment"/></xsl:with-param>
</xsl:call-template>
</fo:inline>
</xsl:when>
<xsl:when test="@corrigenda">
<fo:inline>
<xsl:call-template name="insertTag">
<xsl:with-param name="kind">C</xsl:with-param>
<xsl:with-param name="value"><xsl:value-of select="@corrigenda"/></xsl:with-param>
</xsl:call-template>
<xsl:apply-templates/>
<xsl:call-template name="insertTag">
<xsl:with-param name="type">closing</xsl:with-param>
<xsl:with-param name="kind">C</xsl:with-param>
<xsl:with-param name="value"><xsl:value-of select="@corrigenda"/></xsl:with-param>
</xsl:call-template>
</fo:inline>
</xsl:when>
<xsl:otherwise>
<fo:inline xsl:use-attribute-sets="add-style">
<xsl:apply-templates/>
</fo:inline>
</xsl:otherwise>
</xsl:choose>
</xsl:template> <!-- add -->
<xsl:template name="insertTag">
<xsl:param name="type"/>
<xsl:param name="kind"/>
<xsl:param name="value"/>
<xsl:variable name="add_width" select="string-length($value) * 20"/>
<xsl:variable name="maxwidth" select="60 + $add_width"/>
<fo:instream-foreign-object fox:alt-text="OpeningTag" baseline-shift="-10%"><!-- alignment-baseline="middle" -->
<xsl:attribute name="height">3.5mm</xsl:attribute> <!-- 5mm -->
<xsl:attribute name="content-width">100%</xsl:attribute>
<xsl:attribute name="content-width">scale-down-to-fit</xsl:attribute>
<xsl:attribute name="scaling">uniform</xsl:attribute>
<!-- <svg xmlns="http://www.w3.org/2000/svg" width="{$maxwidth + 32}" height="80">
<g>
<xsl:if test="$type = 'closing' or $type = 'end'">
<xsl:attribute name="transform">scale(-1 1) translate(-<xsl:value-of select="$maxwidth + 32"/>,0)</xsl:attribute>
</xsl:if>
<polyline points="0,0 {$maxwidth},0 {$maxwidth + 30},40 {$maxwidth},80 0,80 " stroke="black" stroke-width="5" fill="white"/>
<line x1="0" y1="0" x2="0" y2="80" stroke="black" stroke-width="20"/>
</g>
<text font-family="Arial" x="15" y="57" font-size="40pt">
<xsl:if test="$type = 'closing' or $type = 'end'">
<xsl:attribute name="x">25</xsl:attribute>
</xsl:if>
<xsl:value-of select="$kind"/><tspan dy="10" font-size="30pt"><xsl:value-of select="$value"/></tspan>
</text>
</svg> -->
<svg xmlns="http://www.w3.org/2000/svg" width="{$maxwidth + 32}" height="80">
<g>
<xsl:if test="$type = 'closing' or $type = 'end'">
<xsl:attribute name="transform">scale(-1 1) translate(-<xsl:value-of select="$maxwidth + 32"/>,0)</xsl:attribute>
</xsl:if>
<polyline points="0,2.5 {$maxwidth},2.5 {$maxwidth + 20},40 {$maxwidth},77.5 0,77.5" stroke="black" stroke-width="5" fill="white"/>
<line x1="9.5" y1="0" x2="9.5" y2="80" stroke="black" stroke-width="19"/>
</g>
<xsl:variable name="text_x">
<xsl:choose>
<xsl:when test="$type = 'closing' or $type = 'end'">28</xsl:when>
<xsl:otherwise>22</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<text font-family="Arial" x="{$text_x}" y="50" font-size="40pt">
<xsl:value-of select="$kind"/>
</text>
<text font-family="Arial" x="{$text_x + 33}" y="65" font-size="38pt">
<xsl:value-of select="$value"/>
</text>
</svg>
</fo:instream-foreign-object>
</xsl:template>
<xsl:template match="*[local-name()='del']">
<fo:inline xsl:use-attribute-sets="del-style">
<xsl:apply-templates/>
</fo:inline>
</xsl:template>
<!-- ================= -->
<!-- END Added,deleted text -->
<!-- ================= -->
<!-- highlight text -->
<xsl:template match="*[local-name()='hi']">
<fo:inline background-color="yellow">
<xsl:apply-templates/>
</fo:inline>
</xsl:template>
<xsl:template match="text()[ancestor::*[local-name()='smallcap']]" name="smallcaps">
<xsl:param name="txt"/>
<!-- <xsl:variable name="text" select="normalize-space(.)"/> --> <!-- https://github.com/metanorma/metanorma-iso/issues/1115 -->
<xsl:variable name="text">
<xsl:choose>
<xsl:when test="$txt != ''">
<xsl:value-of select="$txt"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="ratio_">
<xsl:choose>
<xsl:when test="$layoutVersion = '1951'">0.9</xsl:when>
<xsl:when test="$layoutVersion = '2024'">0.8</xsl:when>
<xsl:otherwise>0.75</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="ratio" select="number(normalize-space($ratio_))"/>
<fo:inline font-size="{$ratio * 100}%" role="SKIP">
<xsl:if test="string-length($text) > 0">
<xsl:variable name="smallCapsText">
<xsl:call-template name="recursiveSmallCaps">
<xsl:with-param name="text" select="$text"/>
<xsl:with-param name="ratio" select="$ratio"/>
</xsl:call-template>
</xsl:variable>
<!-- merge neighboring fo:inline -->
<xsl:for-each select="xalan:nodeset($smallCapsText)/node()">
<xsl:choose>
<xsl:when test="self::fo:inline and preceding-sibling::node()[1][self::fo:inline]"><!-- <xsl:copy-of select="."/> --></xsl:when>
<xsl:when test="self::fo:inline and @font-size">
<xsl:variable name="curr_pos" select="count(preceding-sibling::node()) + 1"/>
<!-- <curr_pos><xsl:value-of select="$curr_pos"/></curr_pos> -->
<xsl:variable name="next_text_" select="count(following-sibling::node()[not(local-name() = 'inline')][1]/preceding-sibling::node())"/>
<xsl:variable name="next_text">
<xsl:choose>
<xsl:when test="$next_text_ = 0">99999999</xsl:when>
<xsl:otherwise><xsl:value-of select="$next_text_ + 1"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- <next_text><xsl:value-of select="$next_text"/></next_text> -->
<fo:inline>
<xsl:copy-of select="@*"/>
<xsl:copy-of select="./node()"/>
<xsl:for-each select="following-sibling::node()[position() < $next_text - $curr_pos]"> <!-- [self::fo:inline] -->
<xsl:copy-of select="./node()"/>
</xsl:for-each>
</fo:inline>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:if>
</fo:inline>
</xsl:template>
<xsl:template name="recursiveSmallCaps">
<xsl:param name="text"/>
<xsl:param name="ratio">0.75</xsl:param>
<xsl:variable name="char" select="substring($text,1,1)"/>
<!-- <xsl:variable name="upperCase" select="translate($char, $lower, $upper)"/> -->
<xsl:variable name="upperCase" select="java:toUpperCase(java:java.lang.String.new($char))"/>
<xsl:choose>
<xsl:when test="$char=$upperCase">
<fo:inline font-size="{100 div $ratio}%" role="SKIP">
<xsl:value-of select="$upperCase"/>
</fo:inline>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$upperCase"/>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="string-length($text) > 1">
<xsl:call-template name="recursiveSmallCaps">
<xsl:with-param name="text" select="substring($text,2)"/>
<xsl:with-param name="ratio" select="$ratio"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
<xsl:template match="*[local-name() = 'pagebreak']">
<fo:block break-after="page"/>
<fo:block> </fo:block>
<fo:block break-after="page"/>
</xsl:template>
<!-- ================================================================ -->
<!-- landscape/portrait orientation processing (post-processing step) -->
<!-- ================================================================ -->
<xsl:template match="@*|node()" mode="landscape_portrait">
<xsl:copy>
<xsl:apply-templates select="@*|node()" mode="landscape_portrait"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[local-name() = 'pagebreak'][not(following-sibling::*[1][local-name() = 'pagebreak'])]" mode="landscape_portrait">
<!-- determine pagebreak is last element before </fo:flow> or not -->
<xsl:variable name="isLast">
<xsl:for-each select="ancestor-or-self::*[ancestor::fo:flow]">
<xsl:if test="following-sibling::*">false</xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:if test="contains($isLast, 'false')">
<xsl:variable name="orientation" select="normalize-space(@orientation)"/>
<xsl:variable name="tree_">
<xsl:for-each select="ancestor::*[ancestor::fo:flow]">
<element pos="{position()}">
<xsl:value-of select="name()"/>
</element>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="tree" select="xalan:nodeset($tree_)"/>
<!-- close fo:page-sequence (closing preceding fo elements) -->
<xsl:for-each select="$tree//element">
<xsl:sort data-type="number" order="descending" select="@pos"/>
<xsl:text disable-output-escaping="yes"></</xsl:text>
<xsl:value-of select="."/>
<xsl:text disable-output-escaping="yes">></xsl:text>
</xsl:for-each>
<xsl:text disable-output-escaping="yes"></fo:flow></xsl:text>
<xsl:text disable-output-escaping="yes"></fo:page-sequence></xsl:text>
<!-- <pagebreak/> -->
<!-- create a new fo:page-sequence (opening fo elements) -->
<xsl:text disable-output-escaping="yes"><fo:page-sequence master-reference="document</xsl:text><xsl:if test="$orientation != ''">-<xsl:value-of select="$orientation"/></xsl:if><xsl:text disable-output-escaping="yes">"></xsl:text>
<fo:static-content flow-name="xsl-footnote-separator">
<fo:block>
<fo:leader leader-pattern="rule" leader-length="30%"/>
</fo:block>
</fo:static-content>
<xsl:call-template name="insertHeaderFooter"/>
<xsl:text disable-output-escaping="yes"><fo:flow flow-name="xsl-region-body"></xsl:text>
<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:text disable-output-escaping="yes">></xsl:text>
</xsl:for-each>
</xsl:if>
</xsl:template>
<!-- ================================================================ -->
<!-- END: landscape/portrait orientation processing (post-processing step) -->
<!-- ================================================================ -->
<!-- Example: <span style="font-family:"Noto Sans JP"">styled text</span> -->
<xsl:template match="*[local-name() = 'span'][@style]" priority="2">
<xsl:variable name="styles__">
<xsl:call-template name="split">
<xsl:with-param name="pText" select="concat(@style,';')"/>
<xsl:with-param name="sep" select="';'"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="quot">"</xsl:variable>
<xsl:variable name="styles_">
<xsl:for-each select="xalan:nodeset($styles__)/item">
<xsl:variable name="key" select="normalize-space(substring-before(., ':'))"/>
<xsl:variable name="value_" select="normalize-space(substring-after(translate(.,$quot,''), ':'))"/>
<xsl:variable name="value">
<xsl:choose>
<!-- if font-size is digits only -->
<xsl:when test="$key = 'font-size' and translate($value_, '0123456789', '') = ''"><xsl:value-of select="$value_"/>pt</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$value_"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:if test="$key = 'font-family' or $key = 'font-size' or $key = 'color'">
<style name="{$key}"><xsl:value-of select="$value"/></style>
</xsl:if>
<xsl:if test="$key = 'text-indent'">
<style name="padding-left"><xsl:value-of select="$value"/></style>
</xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="styles" select="xalan:nodeset($styles_)"/>
<xsl:choose>
<xsl:when test="$styles/style">
<fo:inline>
<xsl:for-each select="$styles/style">
<xsl:attribute name="{@name}"><xsl:value-of select="."/></xsl:attribute>
</xsl:for-each>
<xsl:apply-templates/>
</fo:inline>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</xsl:template> <!-- END: span[@style] -->
<!-- Note: to enable the addition of character span markup with semantic styling for DIS Word output -->
<xsl:template match="*[local-name() = 'span']">
<xsl:apply-templates/>
</xsl:template>
<!-- Don't break standard's numbers -->
<!-- Example : <span class="stdpublisher">ISO</span> <span class="stddocNumber">10303</span>-<span class="stddocPartNumber">1</span>:<span class="stdyear">1994</span> -->
<xsl:template match="*[local-name() = 'span'][@class = 'stdpublisher' or @class = 'stddocNumber' or @class = 'stddocPartNumber' or @class = 'stdyear']" priority="2">
<xsl:choose>
<xsl:when test="ancestor::*[local-name() = 'table']"><xsl:apply-templates/></xsl:when>
<xsl:when test="following-sibling::*[2][local-name() = 'span'][@class = 'stdpublisher' or @class = 'stddocNumber' or @class = 'stddocPartNumber' or @class = 'stdyear']">
<fo:inline keep-with-next.within-line="always"><xsl:apply-templates/></fo:inline>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="text()[not(ancestor::*[local-name() = 'table']) and preceding-sibling::*[1][local-name() = 'span'][@class = 'stdpublisher' or @class = 'stddocNumber' or @class = 'stddocPartNumber' or @class = 'stdyear'] and following-sibling::*[1][local-name() = 'span'][@class = 'stdpublisher' or @class = 'stddocNumber' or @class = 'stddocPartNumber' or @class = 'stdyear']]" priority="2">
<fo:inline keep-with-next.within-line="always"><xsl:value-of select="."/></fo:inline>
</xsl:template>
<xsl:template match="*[local-name() = 'span'][contains(@style, 'text-transform:none')]//text()" priority="5">
<xsl:value-of select="."/>
</xsl:template>
<!-- ========================= -->
<!-- END Rich text formatting -->
<!-- ========================= -->
<!-- split string 'text' by 'separator' -->
<xsl:template name="tokenize">
<xsl:param name="text"/>
<xsl:param name="separator" select="' '"/>
<xsl:choose>
<xsl:when test="$isGenerateTableIF = 'true' and not(contains($text, $separator))">
<word><xsl:value-of select="normalize-space($text)"/></word>
</xsl:when>
<xsl:when test="not(contains($text, $separator))">
<word>
<xsl:variable name="len_str_tmp" select="string-length(normalize-space($text))"/>
<xsl:choose>
<xsl:when test="normalize-space(translate($text, 'X', '')) = ''"> <!-- special case for keep-together.within-line -->
<xsl:value-of select="$len_str_tmp"/>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="str_no_en_chars" select="normalize-space(translate($text, $en_chars, ''))"/>
<xsl:variable name="len_str_no_en_chars" select="string-length($str_no_en_chars)"/>
<xsl:variable name="len_str">
<xsl:choose>
<xsl:when test="normalize-space(translate($text, $upper, '')) = ''"> <!-- english word in CAPITAL letters -->
<xsl:value-of select="$len_str_tmp * 1.5"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$len_str_tmp"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- <xsl:if test="$len_str_no_en_chars div $len_str > 0.8">
<xsl:message>
div=<xsl:value-of select="$len_str_no_en_chars div $len_str"/>
len_str=<xsl:value-of select="$len_str"/>
len_str_no_en_chars=<xsl:value-of select="$len_str_no_en_chars"/>
</xsl:message>
</xsl:if> -->
<!-- <len_str_no_en_chars><xsl:value-of select="$len_str_no_en_chars"/></len_str_no_en_chars>
<len_str><xsl:value-of select="$len_str"/></len_str> -->
<xsl:choose>
<xsl:when test="$len_str_no_en_chars div $len_str > 0.8"> <!-- means non-english string -->
<xsl:value-of select="$len_str - $len_str_no_en_chars"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$len_str"/>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</word>
</xsl:when>
<xsl:otherwise>
<word>
<xsl:variable name="word" select="normalize-space(substring-before($text, $separator))"/>
<xsl:choose>
<xsl:when test="$isGenerateTableIF = 'true'">
<xsl:value-of select="$word"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="string-length($word)"/>
</xsl:otherwise>
</xsl:choose>
</word>
<xsl:call-template name="tokenize">
<xsl:with-param name="text" select="substring-after($text, $separator)"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- split string 'text' by 'separator', enclosing in formatting tags -->
<xsl:template name="tokenize_with_tags">
<xsl:param name="tags"/>
<xsl:param name="text"/>
<xsl:param name="separator" select="' '"/>
<xsl:choose>
<xsl:when test="not(contains($text, $separator))">
<word>
<xsl:if test="ancestor::*[local-name() = 'p'][@from_dl = 'true']">
<xsl:text>
</xsl:text> <!-- to add distance between dt and dd -->
</xsl:if>
<xsl:call-template name="enclose_text_in_tags">
<xsl:with-param name="text" select="normalize-space($text)"/>
<xsl:with-param name="tags" select="$tags"/>
</xsl:call-template>
</word>
</xsl:when>
<xsl:otherwise>
<word>
<xsl:if test="ancestor::*[local-name() = 'p'][@from_dl = 'true']">
<xsl:text>
</xsl:text> <!-- to add distance between dt and dd -->
</xsl:if>
<xsl:call-template name="enclose_text_in_tags">
<xsl:with-param name="text" select="normalize-space(substring-before($text, $separator))"/>
<xsl:with-param name="tags" select="$tags"/>
</xsl:call-template>
</word>
<xsl:call-template name="tokenize_with_tags">
<xsl:with-param name="text" select="substring-after($text, $separator)"/>
<xsl:with-param name="tags" select="$tags"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="enclose_text_in_tags">
<xsl:param name="text"/>
<xsl:param name="tags"/>
<xsl:param name="num">1</xsl:param> <!-- default (start) value -->
<xsl:variable name="tag_name" select="normalize-space(xalan:nodeset($tags)//tag[$num])"/>
<xsl:choose>
<xsl:when test="$tag_name = ''"><xsl:value-of select="$text"/></xsl:when>
<xsl:otherwise>
<xsl:element name="{$tag_name}">
<xsl:call-template name="enclose_text_in_tags">
<xsl:with-param name="text" select="$text"/>
<xsl:with-param name="tags" select="$tags"/>
<xsl:with-param name="num" select="$num + 1"/>
</xsl:call-template>
</xsl:element>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- get max value in array -->
<xsl:template name="max_length">
<xsl:param name="words"/>
<xsl:for-each select="$words//word">
<xsl:sort select="." data-type="number" order="descending"/>
<xsl:if test="position()=1">
<xsl:value-of select="."/>
</xsl:if>
</xsl:for-each>
</xsl:template>
<xsl:template name="add-zero-spaces-java">
<xsl:param name="text" select="."/>
<!-- add zero-width space (#x200B) after dot with next non-digit -->
<xsl:variable name="text1" select="java:replaceAll(java:java.lang.String.new($text),'(\.)([^\d\s])','$1$2')"/>
<!-- add zero-width space (#x200B) after characters: dash, equal, underscore, em dash, thin space, arrow right, ; -->
<xsl:variable name="text2" select="java:replaceAll(java:java.lang.String.new($text1),'(-|=|_|—| |→|;)','$1')"/>
<!-- add zero-width space (#x200B) after characters: colon, if there aren't digits after -->
<xsl:variable name="text3" select="java:replaceAll(java:java.lang.String.new($text2),'(:)(\D)','$1$2')"/>
<!-- add zero-width space (#x200B) after characters: 'great than' -->
<xsl:variable name="text4" select="java:replaceAll(java:java.lang.String.new($text3), '(\u003e)(?!\u003e)', '$1')"/><!-- negative lookahead: 'great than' not followed by 'great than' -->
<!-- add zero-width space (#x200B) before characters: 'less than' -->
<xsl:variable name="text5" select="java:replaceAll(java:java.lang.String.new($text4), '(?<!\u003c)(\u003c)', '$1')"/> <!-- (?<!\u003c)(\u003c) --> <!-- negative lookbehind: 'less than' not preceeded by 'less than' -->
<!-- add zero-width space (#x200B) before character: { -->
<xsl:variable name="text6" select="java:replaceAll(java:java.lang.String.new($text5), '(?<!\W)(\{)', '$1')"/> <!-- negative lookbehind: '{' not preceeded by 'punctuation char' -->
<!-- add zero-width space (#x200B) after character: , -->
<xsl:variable name="text7" select="java:replaceAll(java:java.lang.String.new($text6), '(\,)(?!\d)', '$1')"/> <!-- negative lookahead: ',' not followed by digit -->
<!-- add zero-width space (#x200B) after character: '/' -->
<xsl:variable name="text8" select="java:replaceAll(java:java.lang.String.new($text7), '(\u002f)(?!\u002f)', '$1')"/><!-- negative lookahead: '/' not followed by '/' -->
<xsl:variable name="text9">
<xsl:choose>
<xsl:when test="$isGenerateTableIF = 'true'">
<xsl:value-of select="java:replaceAll(java:java.lang.String.new($text8), '([\u3000-\u9FFF])', '$1')"/> <!-- 3000 - CJK Symbols and Punctuation ... 9FFF CJK Unified Ideographs-->
</xsl:when>
<xsl:otherwise><xsl:value-of select="$text8"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- replace sequence #x200B to one ​ -->
<xsl:variable name="text10" select="java:replaceAll(java:java.lang.String.new($text9), '\u200b{2,}', '')"/>
<!-- replace sequence #x200B and space TO space -->
<xsl:variable name="text11" select="java:replaceAll(java:java.lang.String.new($text10), '\u200b ', ' ')"/>
<xsl:value-of select="$text11"/>
</xsl:template>
<xsl:template name="add-zero-spaces-link-java">
<xsl:param name="text" select="."/>
<xsl:value-of select="java:replaceAll(java:java.lang.String.new($text), $regex_url_start, '$1')"/> <!-- http://. https:// or www. -->
<xsl:variable name="url_continue" select="java:replaceAll(java:java.lang.String.new($text), $regex_url_start, '$2')"/>
<!-- add zero-width space (#x200B) after characters: dash, dot, colon, equal, underscore, em dash, thin space, comma, slash, @ -->
<xsl:variable name="url" select="java:replaceAll(java:java.lang.String.new($url_continue),'(-|\.|:|=|_|—| |,|/|@)','$1')"/>
<!-- replace sequence #x200B to one ​ -->
<xsl:variable name="url2" select="java:replaceAll(java:java.lang.String.new($url), '\u200b{2,}', '')"/>
<!-- remove zero-width space at the end -->
<xsl:value-of select="java:replaceAll(java:java.lang.String.new($url2), '$', '')"/>
</xsl:template>
<!-- add zero space after dash character (for table's entries) -->
<xsl:template name="add-zero-spaces">
<xsl:param name="text" select="."/>
<xsl:variable name="zero-space-after-chars">-</xsl:variable>
<xsl:variable name="zero-space-after-dot">.</xsl:variable>
<xsl:variable name="zero-space-after-colon">:</xsl:variable>
<xsl:variable name="zero-space-after-equal">=</xsl:variable>
<xsl:variable name="zero-space-after-underscore">_</xsl:variable>
<xsl:variable name="zero-space"></xsl:variable>
<xsl:choose>
<xsl:when test="contains($text, $zero-space-after-chars)">
<xsl:value-of select="substring-before($text, $zero-space-after-chars)"/>
<xsl:value-of select="$zero-space-after-chars"/>
<xsl:value-of select="$zero-space"/>
<xsl:call-template name="add-zero-spaces">
<xsl:with-param name="text" select="substring-after($text, $zero-space-after-chars)"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="contains($text, $zero-space-after-dot)">
<xsl:value-of select="substring-before($text, $zero-space-after-dot)"/>
<xsl:value-of select="$zero-space-after-dot"/>
<xsl:value-of select="$zero-space"/>
<xsl:call-template name="add-zero-spaces">
<xsl:with-param name="text" select="substring-after($text, $zero-space-after-dot)"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="contains($text, $zero-space-after-colon)">
<xsl:value-of select="substring-before($text, $zero-space-after-colon)"/>
<xsl:value-of select="$zero-space-after-colon"/>
<xsl:value-of select="$zero-space"/>
<xsl:call-template name="add-zero-spaces">
<xsl:with-param name="text" select="substring-after($text, $zero-space-after-colon)"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="contains($text, $zero-space-after-equal)">
<xsl:value-of select="substring-before($text, $zero-space-after-equal)"/>
<xsl:value-of select="$zero-space-after-equal"/>
<xsl:value-of select="$zero-space"/>
<xsl:call-template name="add-zero-spaces">
<xsl:with-param name="text" select="substring-after($text, $zero-space-after-equal)"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="contains($text, $zero-space-after-underscore)">
<xsl:value-of select="substring-before($text, $zero-space-after-underscore)"/>
<xsl:value-of select="$zero-space-after-underscore"/>
<xsl:value-of select="$zero-space"/>
<xsl:call-template name="add-zero-spaces">
<xsl:with-param name="text" select="substring-after($text, $zero-space-after-underscore)"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$text"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="add-zero-spaces-equal">
<xsl:param name="text" select="."/>
<xsl:variable name="zero-space-after-equals">==========</xsl:variable>
<xsl:variable name="regex_zero-space-after-equals">(==========)</xsl:variable>
<xsl:variable name="zero-space-after-equal">=</xsl:variable>
<xsl:variable name="regex_zero-space-after-equal">(=)</xsl:variable>
<xsl:variable name="zero-space"></xsl:variable>
<xsl:choose>
<xsl:when test="contains($text, $zero-space-after-equals)">
<!-- <xsl:value-of select="substring-before($text, $zero-space-after-equals)"/>
<xsl:value-of select="$zero-space-after-equals"/>
<xsl:value-of select="$zero-space"/>
<xsl:call-template name="add-zero-spaces-equal">
<xsl:with-param name="text" select="substring-after($text, $zero-space-after-equals)"/>
</xsl:call-template> -->
<xsl:value-of select="java:replaceAll(java:java.lang.String.new(.),$regex_zero-space-after-equals,concat('$1',$zero_width_space))"/>
</xsl:when>
<xsl:when test="contains($text, $zero-space-after-equal)">
<!-- <xsl:value-of select="substring-before($text, $zero-space-after-equal)"/>
<xsl:value-of select="$zero-space-after-equal"/>
<xsl:value-of select="$zero-space"/>
<xsl:call-template name="add-zero-spaces-equal">
<xsl:with-param name="text" select="substring-after($text, $zero-space-after-equal)"/>
</xsl:call-template> -->
<xsl:value-of select="java:replaceAll(java:java.lang.String.new(.),$regex_zero-space-after-equal,concat('$1',$zero_width_space))"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$text"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- Table normalization (colspan,rowspan processing for adding TDs) for column width calculation -->
<xsl:template name="getSimpleTable">
<xsl:param name="id"/>
<!-- <test0>
<xsl:copy-of select="."/>
</test0> -->
<xsl:variable name="simple-table">
<!-- Step 0. replace <br/> to <p>...</p> -->
<xsl:variable name="table_without_br">
<xsl:apply-templates mode="table-without-br"/>
</xsl:variable>
<!-- Step 1. colspan processing -->
<xsl:variable name="simple-table-colspan">
<tbody>
<xsl:apply-templates select="xalan:nodeset($table_without_br)" mode="simple-table-colspan"/>
</tbody>
</xsl:variable>
<!-- Step 2. rowspan processing -->
<xsl:variable name="simple-table-rowspan">
<xsl:apply-templates select="xalan:nodeset($simple-table-colspan)" mode="simple-table-rowspan"/>
</xsl:variable>
<!-- Step 3: add id to each cell -->
<!-- add <word>...</word> for each word, image, math -->
<xsl:variable name="simple-table-id">
<xsl:apply-templates select="xalan:nodeset($simple-table-rowspan)" mode="simple-table-id">
<xsl:with-param name="id" select="$id"/>
</xsl:apply-templates>
</xsl:variable>
<xsl:copy-of select="xalan:nodeset($simple-table-id)"/>
</xsl:variable>
<xsl:copy-of select="$simple-table"/>
</xsl:template>
<!-- ================================== -->
<!-- Step 0. replace <br/> to <p>...</p> -->
<!-- ================================== -->
<xsl:template match="@*|node()" mode="table-without-br">
<xsl:copy>
<xsl:apply-templates select="@*|node()" mode="table-without-br"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[local-name()='th' or local-name() = 'td'][not(*[local-name()='br']) and not(*[local-name()='p']) and not(*[local-name()='sourcecode']) and not(*[local-name()='ul']) and not(*[local-name()='ol'])]" mode="table-without-br">
<xsl:copy>
<xsl:copy-of select="@*"/>
<p>
<xsl:copy-of select="node()"/>
</p>
</xsl:copy>
</xsl:template>
<xsl:template match="*[local-name()='th' or local-name()='td'][*[local-name()='br']]" mode="table-without-br">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:for-each select="*[local-name()='br']">
<xsl:variable name="current_id" select="generate-id()"/>
<p>
<xsl:for-each select="preceding-sibling::node()[following-sibling::*[local-name() = 'br'][1][generate-id() = $current_id]][not(local-name() = 'br')]">
<xsl:copy-of select="."/>
</xsl:for-each>
</p>
<xsl:if test="not(following-sibling::*[local-name() = 'br'])">
<p>
<xsl:for-each select="following-sibling::node()">
<xsl:copy-of select="."/>
</xsl:for-each>
</p>
</xsl:if>
</xsl:for-each>
</xsl:copy>
</xsl:template>
<xsl:template match="*[local-name()='th' or local-name()='td']/*[local-name() = 'p'][*[local-name()='br']]" mode="table-without-br">
<xsl:for-each select="*[local-name()='br']">
<xsl:variable name="current_id" select="generate-id()"/>
<p>
<xsl:for-each select="preceding-sibling::node()[following-sibling::*[local-name() = 'br'][1][generate-id() = $current_id]][not(local-name() = 'br')]">
<xsl:copy-of select="."/>
</xsl:for-each>
</p>
<xsl:if test="not(following-sibling::*[local-name() = 'br'])">
<p>
<xsl:for-each select="following-sibling::node()">
<xsl:copy-of select="."/>
</xsl:for-each>
</p>
</xsl:if>
</xsl:for-each>
</xsl:template>
<xsl:template match="*[local-name()='th' or local-name()='td']/*[local-name() = 'sourcecode']" mode="table-without-br">
<xsl:apply-templates mode="table-without-br"/>
</xsl:template>
<xsl:template match="*[local-name()='th' or local-name()='td']/*[local-name() = 'sourcecode']/text()[contains(., ' ') or contains(., ' ')]" mode="table-without-br">
<xsl:variable name="sep">###SOURCECODE_NEWLINE###</xsl:variable>
<xsl:variable name="sourcecode_text" select="java:replaceAll(java:java.lang.String.new(.),'( | | )', $sep)"/>
<xsl:variable name="items">
<xsl:call-template name="split">
<xsl:with-param name="pText" select="$sourcecode_text"/>
<xsl:with-param name="sep" select="$sep"/>
<xsl:with-param name="normalize-space">false</xsl:with-param>
</xsl:call-template>
</xsl:variable>
<xsl:for-each select="xalan:nodeset($items)/*">
<p>
<sourcecode><xsl:copy-of select="node()"/></sourcecode>
</p>
</xsl:for-each>
</xsl:template>
<!-- remove redundant white spaces -->
<xsl:template match="text()[not(ancestor::*[local-name() = 'sourcecode'])]" mode="table-without-br">
<xsl:variable name="text" select="translate(.,'	 ','')"/>
<xsl:value-of select="java:replaceAll(java:java.lang.String.new($text),' {2,}',' ')"/>
</xsl:template>
<xsl:template match="*[local-name()='th' or local-name()='td']//*[local-name() = 'ol' or local-name() = 'ul']" mode="table-without-br">
<xsl:apply-templates mode="table-without-br"/>
</xsl:template>
<xsl:template match="*[local-name()='th' or local-name()='td']//*[local-name() = 'li']" mode="table-without-br">
<xsl:apply-templates mode="table-without-br"/>
</xsl:template>
<!-- mode="table-without-br" -->
<!-- ================================== -->
<!-- END: Step 0. replace <br/> to <p>...</p> -->
<!-- ================================== -->
<!-- ===================== -->
<!-- 1. mode "simple-table-colspan"
1.1. remove thead, tbody, fn
1.2. rename th -> td
1.3. repeating N td with colspan=N
1.4. remove namespace
1.5. remove @colspan attribute
1.6. add @divide attribute for divide text width in further processing
-->
<!-- ===================== -->
<xsl:template match="*[local-name()='thead'] | *[local-name()='tbody']" mode="simple-table-colspan">
<xsl:apply-templates mode="simple-table-colspan"/>
</xsl:template>
<xsl:template match="*[local-name()='fn']" mode="simple-table-colspan"/>
<xsl:template match="*[local-name()='th'] | *[local-name()='td']" mode="simple-table-colspan">
<xsl:choose>
<xsl:when test="@colspan">
<xsl:variable name="td">
<xsl:element name="{local-name()}">
<xsl:attribute name="divide"><xsl:value-of select="@colspan"/></xsl:attribute>
<xsl:if test="local-name()='th'">
<xsl:attribute name="font-weight">bold</xsl:attribute>
</xsl:if>
<xsl:apply-templates select="@*" mode="simple-table-colspan"/>
<xsl:apply-templates mode="simple-table-colspan"/>
</xsl:element>
</xsl:variable>
<xsl:call-template name="repeatNode">
<xsl:with-param name="count" select="@colspan"/>
<xsl:with-param name="node" select="$td"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:element name="{local-name()}">
<xsl:apply-templates select="@*" mode="simple-table-colspan"/>
<xsl:if test="local-name()='th'">
<xsl:attribute name="font-weight">bold</xsl:attribute>
</xsl:if>
<xsl:apply-templates mode="simple-table-colspan"/>
</xsl:element>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="@colspan" mode="simple-table-colspan"/>
<xsl:template match="*[local-name()='tr']" mode="simple-table-colspan">
<xsl:element name="tr">
<xsl:apply-templates select="@*" mode="simple-table-colspan"/>
<xsl:apply-templates mode="simple-table-colspan"/>
</xsl:element>
</xsl:template>
<xsl:template match="@*|node()" mode="simple-table-colspan">
<xsl:copy>
<xsl:apply-templates select="@*|node()" mode="simple-table-colspan"/>
</xsl:copy>
</xsl:template>
<!-- repeat node 'count' times -->
<xsl:template name="repeatNode">
<xsl:param name="count"/>
<xsl:param name="node"/>
<xsl:if test="$count > 0">
<xsl:call-template name="repeatNode">
<xsl:with-param name="count" select="$count - 1"/>
<xsl:with-param name="node" select="$node"/>
</xsl:call-template>
<xsl:copy-of select="$node"/>
</xsl:if>
</xsl:template>
<!-- End mode simple-table-colspan -->
<!-- ===================== -->
<!-- ===================== -->
<!-- ===================== -->
<!-- 2. mode "simple-table-rowspan"
Row span processing, more information http://andrewjwelch.com/code/xslt/table/table-normalization.html -->
<!-- ===================== -->
<xsl:template match="@*|node()" mode="simple-table-rowspan">
<xsl:copy>
<xsl:apply-templates select="@*|node()" mode="simple-table-rowspan"/>
</xsl:copy>
</xsl:template>
<xsl:template match="tbody" mode="simple-table-rowspan">
<xsl:copy>
<xsl:copy-of select="tr[1]"/>
<xsl:apply-templates select="tr[2]" mode="simple-table-rowspan">
<xsl:with-param name="previousRow" select="tr[1]"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="tr" mode="simple-table-rowspan">
<xsl:param name="previousRow"/>
<xsl:variable name="currentRow" select="."/>
<xsl:variable name="normalizedTDs">
<xsl:for-each select="xalan:nodeset($previousRow)//*[self::td or self::th]">
<xsl:choose>
<xsl:when test="@rowspan > 1">
<xsl:copy>
<xsl:attribute name="rowspan">
<xsl:value-of select="@rowspan - 1"/>
</xsl:attribute>
<xsl:copy-of select="@*[not(name() = 'rowspan')]"/>
<xsl:copy-of select="node()"/>
</xsl:copy>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="$currentRow/*[self::td or self::th][1 + count(current()/preceding-sibling::*[self::td or self::th][not(@rowspan) or (@rowspan = 1)])]"/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="newRow">
<xsl:copy>
<xsl:copy-of select="$currentRow/@*"/>
<xsl:copy-of select="xalan:nodeset($normalizedTDs)"/>
</xsl:copy>
</xsl:variable>
<xsl:copy-of select="$newRow"/>
<!-- optimize to prevent StackOverflowError, just copy next 'tr' -->
<xsl:variable name="currrow_num" select="count(preceding-sibling::tr) + 1"/>
<xsl:variable name="nextrow_without_rowspan_" select="count(following-sibling::tr[*[@rowspan and @rowspan != 1]][1]/preceding-sibling::tr) + 1"/>
<xsl:variable name="nextrow_without_rowspan" select="$nextrow_without_rowspan_ - $currrow_num"/>
<xsl:choose>
<xsl:when test="not(xalan:nodeset($newRow)/*/*[@rowspan and @rowspan != 1]) and $nextrow_without_rowspan <= 0">
<xsl:copy-of select="following-sibling::tr"/>
</xsl:when>
<!-- <xsl:when test="xalan:nodeset($newRow)/*[not(@rowspan) or (@rowspan = 1)] and $nextrow_without_rowspan > 0">
<xsl:copy-of select="following-sibling::tr[position() <= $nextrow_without_rowspan]"/>
<xsl:copy-of select="following-sibling::tr[$nextrow_without_rowspan + 1]"/>
<xsl:apply-templates select="following-sibling::tr[$nextrow_without_rowspan + 2]" mode="simple-table-rowspan">
<xsl:with-param name="previousRow" select="following-sibling::tr[$nextrow_without_rowspan + 1]"/>
</xsl:apply-templates>
</xsl:when> -->
<xsl:otherwise>
<xsl:apply-templates select="following-sibling::tr[1]" mode="simple-table-rowspan">
<xsl:with-param name="previousRow" select="$newRow"/>
</xsl:apply-templates>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- End mode simple-table-rowspan -->
<!-- Step 3: add id for each cell -->
<!-- mode: simple-table-id -->
<xsl:template match="/" mode="simple-table-id">
<xsl:param name="id"/>
<xsl:variable name="id_prefixed" select="concat('table_if_',$id)"/> <!-- table id prefixed by 'table_if_' to simple search in IF -->
<xsl:apply-templates select="@*|node()" mode="simple-table-id">
<xsl:with-param name="id" select="$id_prefixed"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="@*|node()" mode="simple-table-id">
<xsl:param name="id"/>
<xsl:copy>
<xsl:apply-templates select="@*|node()" mode="simple-table-id">
<xsl:with-param name="id" select="$id"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="*[local-name()='tbody']" mode="simple-table-id">
<xsl:param name="id"/>
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:attribute name="id"><xsl:value-of select="$id"/></xsl:attribute>
<xsl:apply-templates select="node()" mode="simple-table-id">
<xsl:with-param name="id" select="$id"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:variable name="font_main_root_style">
<root-style xsl:use-attribute-sets="root-style">
</root-style>
</xsl:variable>
<xsl:variable name="font_main_root_style_font_family" select="xalan:nodeset($font_main_root_style)/root-style/@font-family"/>
<xsl:variable name="font_main">
<xsl:choose>
<xsl:when test="contains($font_main_root_style_font_family, ',')"><xsl:value-of select="substring-before($font_main_root_style_font_family, ',')"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$font_main_root_style_font_family"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:template match="*[local-name()='th' or local-name()='td']" mode="simple-table-id">
<xsl:param name="id"/>
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:variable name="row_number" select="count(../preceding-sibling::*) + 1"/>
<xsl:variable name="col_number" select="count(preceding-sibling::*) + 1"/>
<xsl:variable name="divide">
<xsl:choose>
<xsl:when test="@divide"><xsl:value-of select="@divide"/></xsl:when>
<xsl:otherwise>1</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:attribute name="id">
<xsl:value-of select="concat($id,'@',$row_number,'_',$col_number,'_',$divide)"/>
</xsl:attribute>
<xsl:for-each select="*[local-name() = 'p']">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:variable name="p_num" select="count(preceding-sibling::*[local-name() = 'p']) + 1"/>
<xsl:attribute name="id">
<xsl:value-of select="concat($id,'@',$row_number,'_',$col_number,'_p_',$p_num,'_',$divide)"/>
</xsl:attribute>
<!-- <xsl:copy-of select="node()" /> -->
<xsl:apply-templates mode="simple-table-noid"/>
</xsl:copy>
</xsl:for-each>
<xsl:if test="$isGenerateTableIF = 'true'"> <!-- split each paragraph to words, image, math -->
<xsl:variable name="td_text">
<xsl:apply-templates select="." mode="td_text_with_formatting"/>
</xsl:variable>
<!-- td_text='<xsl:copy-of select="$td_text"/>' -->
<xsl:variable name="words_with_width">
<!-- calculate width for 'word' which contain text only (without formatting tags inside) -->
<xsl:for-each select="xalan:nodeset($td_text)//*[local-name() = 'word'][normalize-space() != ''][not(*)]">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:attribute name="width">
<xsl:value-of select="java:org.metanorma.fop.Util.getStringWidth(., $font_main)"/> <!-- Example: 'Times New Roman' -->
</xsl:attribute>
<xsl:copy-of select="node()"/>
</xsl:copy>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="words_with_width_sorted">
<xsl:for-each select="xalan:nodeset($words_with_width)//*[local-name() = 'word']">
<xsl:sort select="@width" data-type="number" order="descending"/>
<!-- select word maximal width only -->
<xsl:if test="position() = 1">
<xsl:copy-of select="."/>
</xsl:if>
</xsl:for-each>
<!-- add 'word' with formatting tags inside -->
<xsl:for-each select="xalan:nodeset($td_text)//*[local-name() = 'word'][normalize-space() != ''][*]">
<xsl:copy-of select="."/>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="words">
<xsl:for-each select=".//*[local-name() = 'image' or local-name() = 'stem']">
<word>
<xsl:copy-of select="."/>
</word>
</xsl:for-each>
<xsl:for-each select="xalan:nodeset($words_with_width_sorted)//*[local-name() = 'word'][normalize-space() != '']">
<xsl:copy-of select="."/>
</xsl:for-each>
<!-- <xsl:for-each select="xalan:nodeset($td_text)//*[local-name() = 'word'][normalize-space() != '']">
<xsl:copy-of select="."/>
</xsl:for-each> -->
</xsl:variable>
<xsl:for-each select="xalan:nodeset($words)/word">
<xsl:variable name="num" select="count(preceding-sibling::word) + 1"/>
<xsl:copy>
<xsl:attribute name="id">
<xsl:value-of select="concat($id,'@',$row_number,'_',$col_number,'_word_',$num,'_',$divide)"/>
</xsl:attribute>
<xsl:copy-of select="node()"/>
</xsl:copy>
</xsl:for-each>
</xsl:if>
</xsl:copy>
</xsl:template>
<xsl:template match="*[local-name()='th' or local-name()='td']/*[local-name() = 'p']//*" mode="simple-table-noid">
<xsl:copy>
<xsl:choose>
<xsl:when test="$isGenerateTableIF = 'true'">
<xsl:copy-of select="@*[local-name() != 'id']"/> <!-- to prevent repeat id in colspan/rowspan cells -->
<!-- <xsl:if test="local-name() = 'dl' or local-name() = 'table'">
<xsl:copy-of select="@id"/>
</xsl:if> -->
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="@*"/>
</xsl:otherwise>
</xsl:choose>
<xsl:apply-templates select="node()" mode="simple-table-noid"/>
</xsl:copy>
</xsl:template>
<!-- End mode: simple-table-id -->
<!-- ===================== -->
<!-- ===================== -->
<!-- =============================== -->
<!-- mode="td_text_with_formatting" -->
<!-- =============================== -->
<xsl:template match="@*|node()" mode="td_text_with_formatting">
<xsl:copy>
<xsl:apply-templates select="@*|node()" mode="td_text_with_formatting"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[local-name() = 'stem' or local-name() = 'image']" mode="td_text_with_formatting"/>
<xsl:template match="*[local-name() = 'keep-together_within-line']/text()" mode="td_text_with_formatting">
<xsl:variable name="formatting_tags">
<xsl:call-template name="getFormattingTags"/>
</xsl:variable>
<word>
<xsl:call-template name="enclose_text_in_tags">
<xsl:with-param name="text" select="normalize-space(.)"/>
<xsl:with-param name="tags" select="$formatting_tags"/>
</xsl:call-template>
</word>
</xsl:template>
<xsl:template match="*[local-name() != 'keep-together_within-line']/text()" mode="td_text_with_formatting">
<xsl:variable name="td_text" select="."/>
<xsl:variable name="string_with_added_zerospaces">
<xsl:call-template name="add-zero-spaces-java">
<xsl:with-param name="text" select="$td_text"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="formatting_tags">
<xsl:call-template name="getFormattingTags"/>
</xsl:variable>
<!-- <word>text</word> -->
<xsl:call-template name="tokenize_with_tags">
<xsl:with-param name="tags" select="$formatting_tags"/>
<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:template>
<xsl:template match="*[local-name() = 'link'][normalize-space() = '']" mode="td_text_with_formatting">
<xsl:variable name="link">
<link_updated>
<xsl:variable name="target_text">
<xsl:choose>
<xsl:when test="starts-with(normalize-space(@target), 'mailto:')">
<xsl:value-of select="normalize-space(substring-after(@target, 'mailto:'))"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="normalize-space(@target)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:value-of select="$target_text"/>
</link_updated>
</xsl:variable>
<xsl:for-each select="xalan:nodeset($link)/*">
<xsl:apply-templates mode="td_text_with_formatting"/>
</xsl:for-each>
</xsl:template>
<xsl:template name="getFormattingTags">
<tags>
<xsl:if test="ancestor::*[local-name() = 'strong']"><tag>strong</tag></xsl:if>
<xsl:if test="ancestor::*[local-name() = 'em']"><tag>em</tag></xsl:if>
<xsl:if test="ancestor::*[local-name() = 'sub']"><tag>sub</tag></xsl:if>
<xsl:if test="ancestor::*[local-name() = 'sup']"><tag>sup</tag></xsl:if>
<xsl:if test="ancestor::*[local-name() = 'tt']"><tag>tt</tag></xsl:if>
<xsl:if test="ancestor::*[local-name() = 'sourcecode']"><tag>sourcecode</tag></xsl:if>
<xsl:if test="ancestor::*[local-name() = 'keep-together_within-line']"><tag>keep-together_within-line</tag></xsl:if>
</tags>
</xsl:template>
<!-- =============================== -->
<!-- END mode="td_text_with_formatting" -->
<!-- =============================== -->
<xsl:template name="getLang">
<xsl:variable name="language_current" select="normalize-space(//*[local-name()='bibdata']//*[local-name()='language'][@current = 'true'])"/>
<xsl:variable name="language">
<xsl:choose>
<xsl:when test="$language_current != ''">
<xsl:value-of select="$language_current"/>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="language_current_2" select="normalize-space(xalan:nodeset($bibdata)//*[local-name()='bibdata']//*[local-name()='language'][@current = 'true'])"/>
<xsl:choose>
<xsl:when test="$language_current_2 != ''">
<xsl:value-of select="$language_current_2"/>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="language_current_3" select="normalize-space(//*[local-name()='bibdata']//*[local-name()='language'])"/>
<xsl:choose>
<xsl:when test="$language_current_3 != ''">
<xsl:value-of select="$language_current_3"/>
</xsl:when>
<xsl:otherwise>en</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:choose>
<xsl:when test="$language = 'English'">en</xsl:when>
<xsl:otherwise><xsl:value-of select="$language"/></xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="getLang_fromCurrentNode">
<xsl:variable name="language_current" select="normalize-space(.//*[local-name()='bibdata']//*[local-name()='language'][@current = 'true'])"/>
<xsl:variable name="language">
<xsl:choose>
<xsl:when test="$language_current != ''">
<xsl:value-of select="$language_current"/>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="language_current_2" select="normalize-space(xalan:nodeset($bibdata)//*[local-name()='bibdata']//*[local-name()='language'][@current = 'true'])"/>
<xsl:choose>
<xsl:when test="$language_current_2 != ''">
<xsl:value-of select="$language_current_2"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select=".//*[local-name()='bibdata']//*[local-name()='language']"/>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:choose>
<xsl:when test="$language = 'English'">en</xsl:when>
<xsl:otherwise><xsl:value-of select="$language"/></xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="capitalizeWords">
<xsl:param name="str"/>
<xsl:variable name="str2" select="translate($str, '-', ' ')"/>
<xsl:choose>
<xsl:when test="contains($str2, ' ')">
<xsl:variable name="substr" select="substring-before($str2, ' ')"/>
<xsl:call-template name="capitalize">
<xsl:with-param name="str" select="$substr"/>
</xsl:call-template>
<xsl:text> </xsl:text>
<xsl:call-template name="capitalizeWords">
<xsl:with-param name="str" select="substring-after($str2, ' ')"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="capitalize">
<xsl:with-param name="str" select="$str2"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="capitalize">
<xsl:param name="str"/>
<xsl:value-of select="java:toUpperCase(java:java.lang.String.new(substring($str, 1, 1)))"/>
<xsl:value-of select="substring($str, 2)"/>
</xsl:template>
<!-- ======================================= -->
<!-- math -->
<!-- ======================================= -->
<xsl:template match="mathml:math">
<xsl:variable name="isAdded" select="@added"/>
<xsl:variable name="isDeleted" select="@deleted"/>
<fo:inline xsl:use-attribute-sets="mathml-style">
<!-- DEBUG -->
<!-- <xsl:copy-of select="ancestor::*[local-name() = 'stem']/@font-family"/> -->
<xsl:call-template name="refine_mathml-style"/>
<xsl:if test="$isGenerateTableIF = 'true' and ancestor::*[local-name() = 'td' or local-name() = 'th' or local-name() = 'dl'] and not(following-sibling::node()[not(self::comment())][normalize-space() != ''])"> <!-- math in table cell, and math is last element -->
<!-- <xsl:attribute name="padding-right">1mm</xsl:attribute> -->
</xsl:if>
<xsl:call-template name="setTrackChangesStyles">
<xsl:with-param name="isAdded" select="$isAdded"/>
<xsl:with-param name="isDeleted" select="$isDeleted"/>
</xsl:call-template>
<xsl:if test="$add_math_as_text = 'true'">
<!-- insert helper tag -->
<!-- set unique font-size (fiction) -->
<xsl:variable name="font-size_sfx"><xsl:number level="any"/></xsl:variable>
<fo:inline color="white" font-size="1.{$font-size_sfx}pt" font-style="normal" font-weight="normal"><xsl:value-of select="$zero_width_space"/></fo:inline> <!-- zero width space -->
</xsl:if>
<xsl:variable name="mathml_content">
<xsl:apply-templates select="." mode="mathml_actual_text"/>
</xsl:variable>
<xsl:call-template name="mathml_instream_object">
<xsl:with-param name="mathml_content" select="$mathml_content"/>
</xsl:call-template>
</fo:inline>
</xsl:template>
<xsl:template name="getMathml_comment_text">
<xsl:variable name="comment_text_following" select="following-sibling::node()[1][self::comment()]"/>
<xsl:variable name="comment_text_">
<xsl:choose>
<xsl:when test="normalize-space($comment_text_following) != ''">
<xsl:value-of select="$comment_text_following"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="normalize-space(translate(.,' ',' '))"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="comment_text_2" select="java:org.metanorma.fop.Util.unescape($comment_text_)"/>
<xsl:variable name="comment_text" select="java:trim(java:java.lang.String.new($comment_text_2))"/>
<xsl:value-of select="$comment_text"/>
</xsl:template>
<xsl:template match="*[local-name() = 'asciimath']">
<xsl:param name="process" select="'false'"/>
<xsl:if test="$process = 'true'">
<xsl:apply-templates/>
</xsl:if>
</xsl:template>
<xsl:template match="*[local-name() = 'latexmath']"/>
<xsl:template name="getMathml_asciimath_text">
<xsl:variable name="asciimath" select="../*[local-name() = 'asciimath']"/>
<xsl:variable name="latexmath">
</xsl:variable>
<xsl:variable name="asciimath_text_following">
<xsl:choose>
<xsl:when test="normalize-space($latexmath) != ''">
<xsl:value-of select="$latexmath"/>
</xsl:when>
<xsl:when test="normalize-space($asciimath) != ''">
<xsl:value-of select="$asciimath"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="following-sibling::node()[1][self::comment()]"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="asciimath_text_">
<xsl:choose>
<xsl:when test="normalize-space($asciimath_text_following) != ''">
<xsl:value-of select="$asciimath_text_following"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="normalize-space(translate(.,' ',' '))"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="asciimath_text_2" select="java:org.metanorma.fop.Util.unescape($asciimath_text_)"/>
<xsl:variable name="asciimath_text" select="java:trim(java:java.lang.String.new($asciimath_text_2))"/>
<xsl:value-of select="$asciimath_text"/>
</xsl:template>
<xsl:template name="mathml_instream_object">
<xsl:param name="asciimath_text"/>
<xsl:param name="mathml_content"/>
<xsl:variable name="asciimath_text_">
<xsl:choose>
<xsl:when test="normalize-space($asciimath_text) != ''"><xsl:value-of select="$asciimath_text"/></xsl:when>
<!-- <xsl:otherwise><xsl:call-template name="getMathml_comment_text"/></xsl:otherwise> -->
<xsl:otherwise><xsl:call-template name="getMathml_asciimath_text"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="mathml">
<xsl:apply-templates select="." mode="mathml"/>
</xsl:variable>
<fo:instream-foreign-object fox:alt-text="Math">
<xsl:call-template name="refine_mathml_insteam_object_style"/>
<!-- put MathML in Actual Text -->
<!-- DEBUG: mathml_content=<xsl:value-of select="$mathml_content"/> -->
<xsl:attribute name="fox:actual-text">
<xsl:value-of select="$mathml_content"/>
</xsl:attribute>
<!-- <xsl:if test="$add_math_as_text = 'true'"> -->
<xsl:if test="normalize-space($asciimath_text_) != ''">
<!-- put Mathin Alternate Text -->
<xsl:attribute name="fox:alt-text">
<xsl:value-of select="$asciimath_text_"/>
</xsl:attribute>
</xsl:if>
<!-- </xsl:if> -->
<xsl:copy-of select="xalan:nodeset($mathml)"/>
</fo:instream-foreign-object>
</xsl:template>
<xsl:template name="refine_mathml_insteam_object_style">
<xsl:if test="count(ancestor::*[local-name() = 'table']) > 1">
<xsl:attribute name="width">95%</xsl:attribute>
<xsl:attribute name="content-height">100%</xsl:attribute>
<xsl:attribute name="content-width">scale-down-to-fit</xsl:attribute>
<xsl:attribute name="scaling">uniform</xsl:attribute>
</xsl:if>
</xsl:template> <!-- refine_mathml_insteam_object_style -->
<xsl:template match="mathml:*" mode="mathml_actual_text">
<!-- <xsl:text>a+b</xsl:text> -->
<xsl:text><</xsl:text>
<xsl:value-of select="local-name()"/>
<xsl:if test="local-name() = 'math'">
<xsl:text> xmlns="http://www.w3.org/1998/Math/MathML"</xsl:text>
</xsl:if>
<xsl:for-each select="@*">
<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:text>></xsl:text>
<xsl:apply-templates mode="mathml_actual_text"/>
<xsl:text></</xsl:text>
<xsl:value-of select="local-name()"/>
<xsl:text>></xsl:text>
</xsl:template>
<xsl:template match="text()" mode="mathml_actual_text">
<xsl:value-of select="normalize-space()"/>
</xsl:template>
<xsl:template match="@*|node()" mode="mathml">
<xsl:copy>
<xsl:apply-templates select="@*|node()" mode="mathml"/>
</xsl:copy>
</xsl:template>
<xsl:template match="mathml:mtext" mode="mathml">
<xsl:copy>
<!-- replace start and end spaces to non-break space -->
<xsl:value-of select="java:replaceAll(java:java.lang.String.new(.),'(^ )|( $)',' ')"/>
</xsl:copy>
</xsl:template>
<!-- <xsl:template match="mathml:mi[. = ',' and not(following-sibling::*[1][local-name() = 'mtext' and text() = ' '])]" mode="mathml">
<xsl:copy>
<xsl:apply-templates select="@*|node()" mode="mathml"/>
</xsl:copy>
<xsl:choose>
if in msub, then don't add space
<xsl:when test="ancestor::mathml:mrow[parent::mathml:msub and preceding-sibling::*[1][self::mathml:mrow]]"></xsl:when>
if next char in digit, don't add space
<xsl:when test="translate(substring(following-sibling::*[1]/text(),1,1),'0123456789','') = ''"></xsl:when>
<xsl:otherwise>
<mathml:mspace width="0.5ex"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template> -->
<xsl:template match="mathml:math/*[local-name()='unit']" mode="mathml"/>
<xsl:template match="mathml:math/*[local-name()='prefix']" mode="mathml"/>
<xsl:template match="mathml:math/*[local-name()='dimension']" mode="mathml"/>
<xsl:template match="mathml:math/*[local-name()='quantity']" mode="mathml"/>
<!-- patch: slash in the mtd wrong rendering -->
<xsl:template match="mathml:mtd/mathml:mo/text()[. = '/']" mode="mathml">
<xsl:value-of select="."/><xsl:value-of select="$zero_width_space"/>
</xsl:template>
<!-- special case for:
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mstyle displaystyle="true">
<msup>
<mi color="#00000000">C</mi>
<mtext>R</mtext>
</msup>
<msubsup>
<mtext>C</mtext>
<mi>n</mi>
<mi>k</mi>
</msubsup>
</mstyle>
</math>
-->
<xsl:template match="mathml:msup/mathml:mi[. = '' or . = ''][not(preceding-sibling::*)][following-sibling::mathml:mtext]" mode="mathml">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:variable name="next_mtext" select="ancestor::mathml:msup/following-sibling::*[1][self::mathml:msubsup or self::mathml:msub or self::mathml:msup]/mathml:mtext"/>
<xsl:if test="string-length($next_mtext) != ''">
<xsl:attribute name="color">#00000000</xsl:attribute>
</xsl:if>
<xsl:apply-templates/>
<xsl:value-of select="$next_mtext"/>
</xsl:copy>
</xsl:template>
<!-- special case for:
<msup>
<mtext/>
<mn>1</mn>
</msup>
convert to (add mspace after mtext and enclose them into mrow):
<msup>
<mrow>
<mtext/>
<mspace height="1.47ex"/>
</mrow>
<mn>1</mn>
</msup>
-->
<xsl:template match="mathml:msup/mathml:mtext[not(preceding-sibling::*)]" mode="mathml">
<mathml:mrow>
<xsl:copy-of select="."/>
<mathml:mspace height="1.47ex"/>
</mathml:mrow>
</xsl:template>
<!-- add space around vertical line -->
<xsl:template match="mathml:mo[normalize-space(text()) = '|']" mode="mathml">
<xsl:copy>
<xsl:apply-templates select="@*" mode="mathml"/>
<xsl:if test="not(@lspace)">
<xsl:attribute name="lspace">0.2em</xsl:attribute>
</xsl:if>
<xsl:if test="not(@rspace) and not(following-sibling::*[1][self::mathml:mo and normalize-space(text()) = '|'])">
<xsl:attribute name="rspace">0.2em</xsl:attribute>
</xsl:if>
<xsl:apply-templates mode="mathml"/>
</xsl:copy>
</xsl:template>
<!-- decrease fontsize for 'Circled Times' char -->
<xsl:template match="mathml:mo[normalize-space(text()) = '⊗']" mode="mathml">
<xsl:copy>
<xsl:apply-templates select="@*" mode="mathml"/>
<xsl:if test="not(@fontsize)">
<xsl:attribute name="fontsize">55%</xsl:attribute>
</xsl:if>
<xsl:apply-templates mode="mathml"/>
</xsl:copy>
</xsl:template>
<!-- increase space before '(' -->
<xsl:template match="mathml:mo[normalize-space(text()) = '(']" mode="mathml">
<xsl:copy>
<xsl:apply-templates select="@*" mode="mathml"/>
<xsl:if test="(preceding-sibling::* and not(preceding-sibling::*[1][self::mathml:mo])) or (../preceding-sibling::* and not(../preceding-sibling::*[1][self::mathml:mo]))">
<xsl:if test="not(@lspace)">
<xsl:attribute name="lspace">0.4em</xsl:attribute>
<xsl:choose>
<xsl:when test="preceding-sibling::*[1][self::mathml:mi or self::mathml:mstyle]">
<xsl:attribute name="lspace">0.2em</xsl:attribute>
</xsl:when>
<xsl:when test="../preceding-sibling::*[1][self::mathml:mi or self::mathml:mstyle]">
<xsl:attribute name="lspace">0.2em</xsl:attribute>
</xsl:when>
</xsl:choose>
</xsl:if>
</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>
-->
<xsl:template match="*[local-name() = 'stem'][@type = 'AsciiMath'][count(*) = 0]/text() | *[local-name() = 'stem'][@type = 'AsciiMath'][*[local-name() = 'asciimath']]" priority="3">
<fo:inline xsl:use-attribute-sets="mathml-style">
<xsl:call-template name="refine_mathml-style"/>
<xsl:choose>
<xsl:when test="self::text()"><xsl:value-of select="."/></xsl:when>
<xsl:otherwise>
<xsl:apply-templates>
<xsl:with-param name="process">true</xsl:with-param>
</xsl:apply-templates>
</xsl:otherwise>
</xsl:choose>
</fo:inline>
</xsl:template>
<!-- ======================================= -->
<!-- END: math -->
<!-- ======================================= -->
<xsl:template match="*[local-name()='localityStack']"/>
<xsl:variable name="pdfAttachmentsList_">
<xsl:for-each select="//*[contains(local-name(), '-standard')]/*[local-name() = 'metanorma-extension']/*[local-name() = 'attachment']">
<attachment filename="{@name}"/>
</xsl:for-each>
<xsl:if test="not(//*[contains(local-name(), '-standard')]/*[local-name() = 'metanorma-extension']/*[local-name() = 'attachment'])">
<xsl:for-each select="//*[local-name() = 'bibitem'][@hidden = 'true'][*[local-name() = 'uri'][@type = 'attachment']]">
<xsl:variable name="attachment_path" select="*[local-name() = 'uri'][@type = 'attachment']"/>
<attachment filename="{$attachment_path}"/>
</xsl:for-each>
</xsl:if>
</xsl:variable>
<xsl:variable name="pdfAttachmentsList" select="xalan:nodeset($pdfAttachmentsList_)"/>
<xsl:template match="*[local-name()='link']" name="link">
<xsl:variable name="target_normalized" select="translate(@target, '\', '/')"/>
<xsl:variable name="target_attachment_name" select="substring-after($target_normalized, '_attachments/')"/>
<xsl:variable name="isLinkToEmbeddedFile" select="normalize-space(@attachment = 'true' and $pdfAttachmentsList//attachment[@filename = current()/@target])"/>
<xsl:variable name="target">
<xsl:choose>
<xsl:when test="@updatetype = 'true'">
<xsl:value-of select="concat(normalize-space(@target), '.pdf')"/>
</xsl:when>
<!-- link to the PDF attachment -->
<xsl:when test="$isLinkToEmbeddedFile = 'true'">
<xsl:variable name="target_file" select="java:org.metanorma.fop.Util.getFilenameFromPath(@target)"/>
<xsl:value-of select="concat('url(embedded-file:', $target_file, ')')"/>
</xsl:when>
<!-- <xsl:when test="starts-with($target_normalized, '_') and contains($target_normalized, '_attachments/') and $pdfAttachmentsList//attachment[@filename = $target_attachment_name]">
<xsl:value-of select="concat('url(embedded-file:', $target_attachment_name, ')')"/>
</xsl:when>
<xsl:when test="contains(@target, concat('_', $inputxml_filename_prefix, '_attachments'))">
<xsl:variable name="target_" select="translate(@target, '\', '/')"/>
<xsl:variable name="target__" select="substring-after($target_, concat('_', $inputxml_filename_prefix, '_attachments', '/'))"/>
<xsl:value-of select="concat('url(embedded-file:', $target__, ')')"/>
</xsl:when> -->
<xsl:otherwise>
<xsl:value-of select="normalize-space(@target)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="target_text">
<xsl:choose>
<xsl:when test="starts-with(normalize-space(@target), 'mailto:')">
<xsl:value-of select="normalize-space(substring-after(@target, 'mailto:'))"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="normalize-space(@target)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<fo:inline xsl:use-attribute-sets="link-style">
<xsl:if test="starts-with(normalize-space(@target), 'mailto:') and not(ancestor::*[local-name() = 'td'])">
<xsl:attribute name="keep-together.within-line">always</xsl:attribute>
</xsl:if>
<xsl:if test="$isLinkToEmbeddedFile = 'true'">
<xsl:attribute name="color">inherit</xsl:attribute>
<xsl:attribute name="text-decoration">none</xsl:attribute>
</xsl:if>
<xsl:call-template name="refine_link-style"/>
<xsl:choose>
<xsl:when test="$target_text = ''">
<xsl:apply-templates/>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="alt_text">
<xsl:call-template name="getAltText"/>
</xsl:variable>
<xsl:call-template name="insert_basic_link">
<xsl:with-param name="element">
<fo:basic-link external-destination="{$target}" fox:alt-text="{$alt_text}">
<xsl:if test="$isLinkToEmbeddedFile = 'true'">
<xsl:attribute name="role">Annot</xsl:attribute>
</xsl:if>
<xsl:choose>
<xsl:when test="normalize-space(.) = ''">
<xsl:call-template name="add-zero-spaces-link-java">
<xsl:with-param name="text" select="$target_text"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<!-- output text from <link>text</link> -->
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</fo:basic-link>
<xsl:if test="$isLinkToEmbeddedFile = 'true'">
<!-- reserve space at right for PaperClip icon -->
<fo:inline keep-with-previous.within-line="always"> </fo:inline>
</xsl:if>
</xsl:with-param>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</fo:inline>
</xsl:template> <!-- link -->
<xsl:template name="getAltText">
<xsl:choose>
<xsl:when test="normalize-space(.) = ''"><xsl:value-of select="@target"/></xsl:when>
<xsl:otherwise><xsl:value-of select="normalize-space(translate(normalize-space(), ' —', ' -'))"/></xsl:otherwise>
<!-- <xsl:otherwise><xsl:value-of select="@target"/></xsl:otherwise> -->
</xsl:choose>
</xsl:template>
<!-- ======================== -->
<!-- Appendix processing -->
<!-- ======================== -->
<xsl:template match="*[local-name()='appendix']">
<fo:block id="{@id}" xsl:use-attribute-sets="appendix-style">
<xsl:apply-templates select="*[local-name()='title']"/>
</fo:block>
<xsl:apply-templates select="node()[not(local-name()='title')]"/>
</xsl:template>
<xsl:template match="*[local-name()='appendix']/*[local-name()='title']" priority="2">
<xsl:variable name="level">
<xsl:call-template name="getLevel"/>
</xsl:variable>
<fo:inline role="H{$level}"><xsl:apply-templates/></fo:inline>
</xsl:template>
<!-- ======================== -->
<!-- END Appendix processing -->
<!-- ======================== -->
<xsl:template match="*[local-name()='appendix']//*[local-name()='example']" priority="2">
<fo:block id="{@id}" xsl:use-attribute-sets="appendix-example-style">
<xsl:apply-templates select="*[local-name()='name']"/>
</fo:block>
<xsl:apply-templates select="node()[not(local-name()='name')]"/>
</xsl:template>
<xsl:template match="*[local-name() = 'callout']">
<xsl:choose>
<xsl:when test="normalize-space(@target) = ''"><<xsl:apply-templates/>></xsl:when>
<xsl:otherwise><fo:basic-link internal-destination="{@target}" fox:alt-text="{normalize-space()}"><<xsl:apply-templates/>></fo:basic-link></xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="*[local-name() = 'annotation']">
<xsl:variable name="annotation-id" select="@id"/>
<xsl:variable name="callout" select="//*[@target = $annotation-id]/text()"/>
<fo:block id="{$annotation-id}" white-space="nowrap">
<fo:inline>
<xsl:apply-templates>
<xsl:with-param name="callout" select="concat('<', $callout, '> ')"/>
</xsl:apply-templates>
</fo:inline>
</fo:block>
</xsl:template>
<xsl:template match="*[local-name() = 'annotation']/*[local-name() = 'p']">
<xsl:param name="callout"/>
<fo:inline id="{@id}">
<!-- for first p in annotation, put <x> -->
<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']">
<xsl:call-template name="insert_basic_link">
<xsl:with-param name="element">
<xsl:variable name="alt_text">
<xsl:call-template name="getAltText"/>
</xsl:variable>
<fo:basic-link internal-destination="{@target}" fox:alt-text="{$alt_text}" xsl:use-attribute-sets="xref-style">
<xsl:if test="string-length(normalize-space()) < 30 and not(contains(normalize-space(), 'http://')) and not(contains(normalize-space(), 'https://')) and not(ancestor::*[local-name() = 'table' or local-name() = 'dl'])">
<xsl:attribute name="keep-together.within-line">always</xsl:attribute>
</xsl:if>
<xsl:if test="parent::*[local-name() = 'add']">
<xsl:call-template name="append_add-style"/>
</xsl:if>
<xsl:apply-templates/>
</fo:basic-link>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<!-- command between two xref points to non-standard bibitem -->
<xsl:template match="text()[. = ','][preceding-sibling::node()[1][local-name() = 'sup'][*[local-name() = 'xref'][@type = 'footnote']] and following-sibling::node()[1][local-name() = 'sup'][*[local-name() = 'xref'][@type = 'footnote']]]">
<fo:inline baseline-shift="20%" font-size="80%"><xsl:value-of select="."/></fo:inline>
</xsl:template>
<!-- ====== -->
<!-- formula -->
<!-- ====== -->
<xsl:template match="*[local-name() = 'formula']" name="formula">
<fo:block-container margin-left="0mm" role="SKIP">
<xsl:if test="parent::*[local-name() = 'note']">
<xsl:attribute name="margin-left">
<xsl:choose>
<xsl:when test="not(ancestor::*[local-name() = 'table'])"><xsl:value-of select="$note-body-indent"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$note-body-indent-table"/></xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:if>
<fo:block-container margin-left="0mm" role="SKIP">
<fo:block id="{@id}">
<xsl:apply-templates select="node()[not(local-name() = 'name')]"/> <!-- formula's number will be process in 'stem' template -->
</fo:block>
</fo:block-container>
</fo:block-container>
</xsl:template>
<xsl:template match="*[local-name() = 'formula']/*[local-name() = 'dt']/*[local-name() = 'stem']">
<fo:inline>
<xsl:apply-templates/>
</fo:inline>
</xsl:template>
<xsl:template match="*[local-name() = 'admitted']/*[local-name() = 'stem']">
<fo:inline>
<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: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">
<fo:table table-layout="fixed" width="100%">
<fo:table-column column-width="95%"/>
<fo:table-column column-width="5%"/>
<fo:table-body>
<fo:table-row>
<fo:table-cell display-align="center">
<fo:block xsl:use-attribute-sets="formula-stem-block-style" role="SKIP">
<xsl:call-template name="refine_formula-stem-block-style"/>
<xsl:apply-templates/>
</fo:block>
</fo:table-cell>
<fo:table-cell display-align="center">
<fo:block xsl:use-attribute-sets="formula-stem-number-style" role="SKIP">
<xsl:call-template name="refine_formula-stem-number-style"/>
<xsl:apply-templates select="../*[local-name() = 'name']"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:block>
</xsl:template>
<!-- stem inside formula without name (without formula's number) -->
<xsl:template match="*[local-name() = 'formula'][not(*[local-name() = 'name'])]/*[local-name() = 'stem']">
<fo:block xsl:use-attribute-sets="formula-style">
<fo:block xsl:use-attribute-sets="formula-stem-block-style">
<xsl:apply-templates/>
</fo:block>
</fo:block>
</xsl:template>
<!-- ====== -->
<!-- ====== -->
<xsl:template name="setBlockSpanAll">
<xsl:if test="@columns = 1 or (local-name() = 'p' and *[@columns = 1])"><xsl:attribute name="span">all</xsl:attribute></xsl:if>
</xsl:template>
<!-- ====== -->
<!-- note -->
<!-- termnote -->
<!-- ====== -->
<xsl:template match="*[local-name() = 'note']" name="note">
<fo:block-container id="{@id}" xsl:use-attribute-sets="note-style" role="SKIP">
<xsl:call-template name="setBlockSpanAll"/>
<xsl:call-template name="refine_note-style"/>
<fo:block-container margin-left="0mm" margin-right="0mm" role="SKIP">
<fo:block>
<xsl:call-template name="refine_note_block_style"/>
<fo:inline xsl:use-attribute-sets="note-name-style" role="SKIP">
<xsl:call-template name="refine_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>
</xsl:if>
<xsl:apply-templates select="*[local-name() = 'name']"/>
</fo:inline>
<xsl:apply-templates select="node()[not(local-name() = 'name')]"/>
</fo:block>
</fo:block-container>
</fo:block-container>
</xsl:template>
<xsl:template name="refine_note_block_style">
<xsl:if test="$layoutVersion = '1951' or $layoutVersion = '1987'">
<xsl:if test="following-sibling::*[1][self::iso:note] and not(preceding-sibling::*[1][self::iso:note])">
<!-- NOTES -->
<fo:block font-size="9.5pt" keep-with-next="always" margin-bottom="6pt" text-transform="uppercase">
<xsl:variable name="i18n_notes">
<xsl:call-template name="getLocalizedString">
<xsl:with-param name="key">Note.pl</xsl:with-param>
</xsl:call-template>
</xsl:variable>
<xsl:choose>
<xsl:when test="$layoutVersion = '1951'">
<xsl:call-template name="smallcaps">
<xsl:with-param name="txt" select="$i18n_notes"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$i18n_notes"/>
</xsl:otherwise>
</xsl:choose>
</fo:block>
</xsl:if>
</xsl:if>
</xsl:template>
<xsl:template match="*[local-name() = 'note']/*[local-name() = 'p']">
<xsl:variable name="num"><xsl:number/></xsl:variable>
<xsl:choose>
<xsl:when test="$num = 1"> <!-- display first NOTE's paragraph in the same line with label NOTE -->
<fo:inline xsl:use-attribute-sets="note-p-style" role="SKIP">
<xsl:apply-templates/>
</fo:inline>
</xsl:when>
<xsl:otherwise>
<fo:block xsl:use-attribute-sets="note-p-style" role="SKIP">
<xsl:apply-templates/>
</fo:block>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="*[local-name() = 'termnote']">
<fo:block id="{@id}" xsl:use-attribute-sets="termnote-style">
<xsl:call-template name="setBlockSpanAll"/>
<xsl:call-template name="refine_termnote-style"/>
<fo:inline xsl:use-attribute-sets="termnote-name-style">
<xsl:if test="not(*[local-name() = 'name']/following-sibling::node()[1][self::text()][normalize-space()=''])">
<xsl:attribute name="padding-right">1mm</xsl:attribute>
</xsl:if>
<xsl:call-template name="refine_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')]"/>
</fo:block>
</xsl:template>
<xsl:template match="*[local-name() = 'note']/*[local-name() = 'name']">
<xsl:param name="sfx"/>
<xsl:variable name="suffix">
<xsl:choose>
<xsl:when test="$sfx != ''">
<xsl:value-of select="$sfx"/>
</xsl:when>
<xsl:otherwise>
<!-- 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="$layoutVersion = '1987' and . = translate(.,'1234567890','')"> <!-- NOTE without number -->
<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/>
<xsl:value-of select="$suffix"/>
</xsl:if>
</xsl:template>
<xsl:template match="*[local-name() = 'termnote']/*[local-name() = 'name']">
<xsl:param name="sfx"/>
<xsl:variable name="suffix">
<xsl:choose>
<xsl:when test="$sfx != ''">
<xsl:value-of select="$sfx"/>
</xsl:when>
<xsl:otherwise>
<!-- 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/>
<xsl:value-of select="$suffix"/>
</xsl:if>
</xsl:template>
<xsl:template match="*[local-name() = 'termnote']/*[local-name() = 'p']">
<xsl:variable name="num"><xsl:number/></xsl:variable>
<xsl:choose>
<xsl:when test="$num = 1"> <!-- first paragraph renders in the same line as titlenote name -->
<fo:inline xsl:use-attribute-sets="termnote-p-style">
<xsl:apply-templates/>
</fo:inline>
</xsl:when>
<xsl:otherwise>
<fo:block xsl:use-attribute-sets="termnote-p-style">
<xsl:apply-templates/>
</fo:block>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- ====== -->
<!-- ====== -->
<!-- ====== -->
<!-- term -->
<!-- ====== -->
<xsl:template match="*[local-name() = 'terms']">
<!-- <xsl:message>'terms' <xsl:number/> processing...</xsl:message> -->
<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'])">
<xsl:attribute name="space-before">12pt</xsl:attribute>
</xsl:if>
<xsl:apply-templates select="node()[not(local-name() = 'name')]"/>
</fo:block>
</xsl:template>
<xsl:template match="*[local-name() = 'term']/*[local-name() = 'name']">
<xsl:if test="normalize-space() != ''">
<!-- <xsl:variable name="level">
<xsl:call-template name="getLevelTermName"/>
</xsl:variable>
<fo:inline role="H{$level}">
<xsl:apply-templates />
</fo:inline> -->
<xsl:apply-templates/>
</xsl:if>
</xsl:template>
<!-- ====== -->
<!-- ====== -->
<!-- ====== -->
<!-- figure -->
<!-- image -->
<!-- ====== -->
<xsl:template match="*[local-name() = 'figure']" name="figure">
<xsl:variable name="isAdded" select="@added"/>
<xsl:variable name="isDeleted" select="@deleted"/>
<fo:block-container id="{@id}" xsl:use-attribute-sets="figure-block-style">
<xsl:call-template name="refine_figure-block-style"/>
<xsl:call-template name="setTrackChangesStyles">
<xsl:with-param name="isAdded" select="$isAdded"/>
<xsl:with-param name="isDeleted" select="$isDeleted"/>
</xsl:call-template>
<!-- Example: Dimensions in millimeters -->
<xsl:apply-templates select="*[local-name() = 'note'][@type = 'units']"/>
<xsl:variable name="show_figure_key_in_block_container">
true
</xsl:variable>
<fo:block xsl:use-attribute-sets="figure-style" role="SKIP">
<xsl:apply-templates select="node()[not(local-name() = 'name') and not(local-name() = 'note' and @type = 'units')]"/>
</fo:block>
<xsl:if test="normalize-space($show_figure_key_in_block_container) = 'true'">
<xsl:call-template name="showFigureKey"/>
</xsl:if>
<xsl:apply-templates select="*[local-name() = 'name']"/> <!-- show figure's name AFTER image -->
</fo:block-container>
</xsl:template>
<xsl:template name="showFigureKey">
<xsl:for-each select="*[local-name() = 'note'][not(@type = 'units')]">
<xsl:call-template name="note"/>
</xsl:for-each>
<xsl:call-template name="fn_display_figure"/>
</xsl:template>
<xsl:template match="*[local-name() = 'figure'][@class = 'pseudocode']">
<fo:block id="{@id}">
<xsl:apply-templates select="node()[not(local-name() = 'name')]"/>
</fo:block>
<xsl:apply-templates select="*[local-name() = 'name']"/>
</xsl:template>
<xsl:template match="*[local-name() = 'figure'][@class = 'pseudocode']//*[local-name() = 'p']">
<fo:block xsl:use-attribute-sets="figure-pseudocode-p-style">
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<!-- SOURCE: ... -->
<xsl:template match="*[local-name() = 'figure']/*[local-name() = 'source']" priority="2">
<xsl:call-template name="termsource"/>
</xsl:template>
<xsl:template match="*[local-name() = 'image']">
<xsl:param name="indent">0</xsl:param>
<xsl:variable name="isAdded" select="../@added"/>
<xsl:variable name="isDeleted" select="../@deleted"/>
<xsl:choose>
<xsl:when test="ancestor::*[local-name() = 'title'] or not(parent::*[local-name() = 'figure']) or parent::*[local-name() = 'p']"> <!-- inline image ( 'image:path' in adoc, with one colon after image) -->
<fo:inline padding-left="1mm" padding-right="1mm">
<xsl:if test="not(parent::*[local-name() = 'figure']) or parent::*[local-name() = 'p']">
<xsl:attribute name="padding-left">0mm</xsl:attribute>
<xsl:attribute name="padding-right">0mm</xsl:attribute>
</xsl:if>
<xsl:variable name="src">
<xsl:call-template name="image_src"/>
</xsl:variable>
<xsl:variable name="scale">
<xsl:call-template name="getImageScale">
<xsl:with-param name="indent" select="$indent"/>
</xsl:call-template>
</xsl:variable>
<!-- debug scale='<xsl:value-of select="$scale"/>', indent='<xsl:value-of select="$indent"/>' -->
<!-- <fo:external-graphic src="{$src}" fox:alt-text="Image {@alt}" vertical-align="middle"/> -->
<fo:external-graphic src="{$src}" fox:alt-text="Image {@alt}" vertical-align="middle">
<xsl:variable name="width">
<xsl:call-template name="setImageWidth"/>
</xsl:variable>
<xsl:if test="$width != ''">
<xsl:attribute name="width"><xsl:value-of select="$width"/></xsl:attribute>
</xsl:if>
<xsl:variable name="height">
<xsl:call-template name="setImageHeight"/>
</xsl:variable>
<xsl:if test="$height != ''">
<xsl:attribute name="height"><xsl:value-of select="$height"/></xsl:attribute>
</xsl:if>
<xsl:if test="$width = '' and $height = ''">
<xsl:if test="number($scale) < 100">
<xsl:attribute name="content-width"><xsl:value-of select="number($scale)"/>%</xsl:attribute>
<!-- <xsl:attribute name="content-width">scale-to-fit</xsl:attribute>
<xsl:attribute name="content-height">100%</xsl:attribute>
<xsl:attribute name="width">100%</xsl:attribute>
<xsl:attribute name="scaling">uniform</xsl:attribute> -->
</xsl:if>
</xsl:if>
</fo:external-graphic>
</fo:inline>
</xsl:when>
<xsl:otherwise>
<fo:block xsl:use-attribute-sets="image-style">
<xsl:call-template name="refine_image-style"/>
<xsl:variable name="src">
<xsl:call-template name="image_src"/>
</xsl:variable>
<xsl:choose>
<xsl:when test="$isDeleted = 'true'">
<!-- enclose in svg -->
<fo:instream-foreign-object fox:alt-text="Image {@alt}">
<xsl:attribute name="width">100%</xsl:attribute>
<xsl:attribute name="content-height">100%</xsl:attribute>
<xsl:attribute name="content-width">scale-down-to-fit</xsl:attribute>
<xsl:attribute name="scaling">uniform</xsl:attribute>
<xsl:apply-templates select="." mode="cross_image"/>
</fo:instream-foreign-object>
</xsl:when>
<xsl:otherwise>
<!-- <fo:block>debug block image:
<xsl:variable name="scale">
<xsl:call-template name="getImageScale">
<xsl:with-param name="indent" select="$indent"/>
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="concat('scale=', $scale,', indent=', $indent)"/>
</fo:block> -->
<fo:external-graphic src="{$src}" fox:alt-text="Image {@alt}">
<xsl:choose>
<!-- default -->
<xsl:when test="((@width = 'auto' or @width = 'text-width' or @width = 'full-page-width' or @width = 'narrow') and @height = 'auto') or (normalize-space(@width) = '' and normalize-space(@height) = '') ">
<!-- add attribute for automatic scaling -->
<xsl:variable name="image-graphic-style_attributes">
<attributes xsl:use-attribute-sets="image-graphic-style"/>
</xsl:variable>
<xsl:copy-of select="xalan:nodeset($image-graphic-style_attributes)/attributes/@*"/>
<xsl:if test="not(@mimetype = 'image/svg+xml') and not(ancestor::*[local-name() = 'table'])">
<xsl:variable name="scale">
<xsl:call-template name="getImageScale">
<xsl:with-param name="indent" select="$indent"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="scaleRatio">
1
</xsl:variable>
<xsl:if test="number($scale) < 100">
<xsl:attribute name="content-width"><xsl:value-of select="number($scale) * number($scaleRatio)"/>%</xsl:attribute>
</xsl:if>
</xsl:if>
</xsl:when> <!-- default -->
<xsl:otherwise>
<xsl:variable name="width_height_">
<attributes>
<xsl:call-template name="setImageWidthHeight"/>
</attributes>
</xsl:variable>
<xsl:variable name="width_height" select="xalan:nodeset($width_height_)"/>
<xsl:copy-of select="$width_height/attributes/@*"/>
<xsl:if test="$width_height/attributes/@content-width != '' and $width_height/attributes/@content-height != ''">
<xsl:attribute name="scaling">non-uniform</xsl:attribute>
</xsl:if>
</xsl:otherwise>
</xsl:choose>
<!--
<xsl:if test="not(@mimetype = 'image/svg+xml') and (../*[local-name() = 'name'] or parent::*[local-name() = 'figure'][@unnumbered = 'true']) and not(ancestor::*[local-name() = 'table'])">
-->
</fo:external-graphic>
</xsl:otherwise>
</xsl:choose>
</fo:block>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="setImageWidth">
<xsl:if test="@width != '' and @width != 'auto' and @width != 'text-width' and @width != 'full-page-width' and @width != 'narrow'">
<xsl:value-of select="@width"/>
</xsl:if>
</xsl:template>
<xsl:template name="setImageHeight">
<xsl:if test="@height != '' and @height != 'auto'">
<xsl:value-of select="@height"/>
</xsl:if>
</xsl:template>
<xsl:template name="setImageWidthHeight">
<xsl:variable name="width">
<xsl:call-template name="setImageWidth"/>
</xsl:variable>
<xsl:if test="$width != ''">
<xsl:attribute name="content-width">
<xsl:value-of select="$width"/>
</xsl:attribute>
</xsl:if>
<xsl:variable name="height">
<xsl:call-template name="setImageHeight"/>
</xsl:variable>
<xsl:if test="$height != ''">
<xsl:attribute name="content-height">
<xsl:value-of select="$height"/>
</xsl:attribute>
</xsl:if>
</xsl:template>
<xsl:template name="getImageSrc">
<xsl:choose>
<xsl:when test="not(starts-with(@src, 'data:'))">
<xsl:choose>
<xsl:when test="@extracted = 'true'"> <!-- added in mn2pdf v1.97 -->
<xsl:value-of select="@src"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat($basepath, @src)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise><xsl:value-of select="@src"/></xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="getImageScale">
<xsl:param name="indent"/>
<xsl:variable name="indent_left">
<xsl:choose>
<xsl:when test="$indent != ''"><xsl:value-of select="$indent"/></xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="img_src">
<xsl:call-template name="getImageSrc"/>
</xsl:variable>
<xsl:variable name="image_width_effective">
<xsl:value-of select="$width_effective - number($indent_left)"/>
</xsl:variable>
<xsl:variable name="image_height_effective" select="$height_effective - number($indent_left)"/>
<!-- <xsl:message>width_effective=<xsl:value-of select="$width_effective"/></xsl:message>
<xsl:message>indent_left=<xsl:value-of select="$indent_left"/></xsl:message>
<xsl:message>image_width_effective=<xsl:value-of select="$image_width_effective"/> for <xsl:value-of select="ancestor::ogc:p[1]/@id"/></xsl:message> -->
<xsl:variable name="scale">
<xsl:value-of select="java:org.metanorma.fop.utils.ImageUtils.getImageScale($img_src, $image_width_effective, $height_effective)"/>
</xsl:variable>
<xsl:value-of select="$scale"/>
</xsl:template>
<xsl:template name="image_src">
<xsl:choose>
<xsl:when test="@mimetype = 'image/svg+xml' and $images/images/image[@id = current()/@id]">
<xsl:value-of select="$images/images/image[@id = current()/@id]/@src"/>
</xsl:when>
<!-- in WebP format, then convert image into PNG -->
<xsl:when test="starts-with(@src, 'data:image/webp')">
<xsl:variable name="src_png" select="java:org.metanorma.fop.utils.ImageUtils.convertWebPtoPNG(@src)"/>
<xsl:value-of select="$src_png"/>
</xsl:when>
<xsl:when test="not(starts-with(@src, 'data:')) and (java:endsWith(java:java.lang.String.new(@src), '.webp') or java:endsWith(java:java.lang.String.new(@src), '.WEBP'))">
<xsl:variable name="src_png" select="java:org.metanorma.fop.utils.ImageUtils.convertWebPtoPNG(@src)"/>
<xsl:value-of select="concat('url(file:///',$basepath, $src_png, ')')"/>
</xsl:when>
<xsl:when test="not(starts-with(@src, 'data:'))">
<xsl:choose>
<xsl:when test="@extracted = 'true'"> <!-- added in mn2pdf v1.97 -->
<xsl:value-of select="concat('url(file:///', @src, ')')"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat('url(file:///',$basepath, @src, ')')"/>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="@src"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="*[local-name() = 'image']" mode="cross_image">
<xsl:choose>
<xsl:when test="@mimetype = 'image/svg+xml' and $images/images/image[@id = current()/@id]">
<xsl:variable name="src">
<xsl:value-of select="$images/images/image[@id = current()/@id]/@src"/>
</xsl:variable>
<xsl:variable name="width" select="document($src)/@width"/>
<xsl:variable name="height" select="document($src)/@height"/>
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="enable-background:new 0 0 595.28 841.89;" height="{$height}" width="{$width}" viewBox="0 0 {$width} {$height}" y="0px" x="0px" id="Layer_1" version="1.1">
<image xlink:href="{$src}" style="overflow:visible;"/>
</svg>
</xsl:when>
<xsl:when test="not(starts-with(@src, 'data:'))">
<xsl:variable name="src">
<xsl:choose>
<xsl:when test="@extracted = 'true'"> <!-- added in mn2pdf v1.97 -->
<xsl:value-of select="concat('url(file:///', @src, ')')"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat('url(file:///',$basepath, @src, ')')"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="file" select="java:java.io.File.new(@src)"/>
<xsl:variable name="bufferedImage" select="java:javax.imageio.ImageIO.read($file)"/>
<xsl:variable name="width" select="java:getWidth($bufferedImage)"/>
<xsl:variable name="height" select="java:getHeight($bufferedImage)"/>
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="enable-background:new 0 0 595.28 841.89;" height="{$height}" width="{$width}" viewBox="0 0 {$width} {$height}" y="0px" x="0px" id="Layer_1" version="1.1">
<image xlink:href="{$src}" style="overflow:visible;"/>
</svg>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="base64String" select="substring-after(@src, 'base64,')"/>
<xsl:variable name="decoder" select="java:java.util.Base64.getDecoder()"/>
<xsl:variable name="fileContent" select="java:decode($decoder, $base64String)"/>
<xsl:variable name="bis" select="java:java.io.ByteArrayInputStream.new($fileContent)"/>
<xsl:variable name="bufferedImage" select="java:javax.imageio.ImageIO.read($bis)"/>
<xsl:variable name="width" select="java:getWidth($bufferedImage)"/>
<xsl:variable name="height" select="java:getHeight($bufferedImage)"/>
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="enable-background:new 0 0 595.28 841.89;" height="{$height}" width="{$width}" viewBox="0 0 {$width} {$height}" y="0px" x="0px" id="Layer_1" version="1.1">
<image xlink:href="{@src}" height="{$height}" width="{$width}" style="overflow:visible;"/>
<xsl:call-template name="svg_cross">
<xsl:with-param name="width" select="$width"/>
<xsl:with-param name="height" select="$height"/>
</xsl:call-template>
</svg>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="svg_cross">
<xsl:param name="width"/>
<xsl:param name="height"/>
<line xmlns="http://www.w3.org/2000/svg" x1="0" y1="0" x2="{$width}" y2="{$height}" style="stroke: rgb(255, 0, 0); stroke-width:4px; "/>
<line xmlns="http://www.w3.org/2000/svg" x1="0" y1="{$height}" x2="{$width}" y2="0" style="stroke: rgb(255, 0, 0); stroke-width:4px; "/>
</xsl:template>
<!-- =================== -->
<!-- SVG images processing -->
<!-- =================== -->
<xsl:variable name="figure_name_height">14</xsl:variable>
<xsl:variable name="width_effective" select="$pageWidth - $marginLeftRight1 - $marginLeftRight2"/><!-- paper width minus margins -->
<xsl:variable name="height_effective" select="$pageHeight - $marginTop - $marginBottom - $figure_name_height"/><!-- paper height minus margins and title height -->
<xsl:variable name="image_dpi" select="96"/>
<xsl:variable name="width_effective_px" select="$width_effective div 25.4 * $image_dpi"/>
<xsl:variable name="height_effective_px" select="$height_effective div 25.4 * $image_dpi"/>
<xsl:template match="*[local-name() = 'figure'][not(*[local-name() = 'image']) and *[local-name() = 'svg']]/*[local-name() = 'name']/*[local-name() = 'bookmark']" priority="2"/>
<xsl:template match="*[local-name() = 'figure'][not(*[local-name() = 'image'])]/*[local-name() = 'svg']" priority="2" name="image_svg">
<xsl:param name="name"/>
<xsl:variable name="svg_content">
<xsl:apply-templates select="." mode="svg_update"/>
</xsl:variable>
<xsl:variable name="alt-text">
<xsl:choose>
<xsl:when test="normalize-space(../*[local-name() = 'name']) != ''">
<xsl:value-of select="../*[local-name() = 'name']"/>
</xsl:when>
<xsl:when test="normalize-space($name) != ''">
<xsl:value-of select="$name"/>
</xsl:when>
<xsl:otherwise>Figure</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="isPrecedingTitle" select="normalize-space(ancestor::*[local-name() = 'figure']/preceding-sibling::*[1][local-name() = 'title'] and 1 = 1)"/>
<xsl:choose>
<xsl:when test=".//*[local-name() = 'a'][*[local-name() = 'rect'] or *[local-name() = 'polygon'] or *[local-name() = 'circle'] or *[local-name() = 'ellipse']]">
<fo:block>
<xsl:variable name="width" select="@width"/>
<xsl:variable name="height" select="@height"/>
<xsl:variable name="scale_x">
<xsl:choose>
<xsl:when test="$width > $width_effective_px">
<xsl:value-of select="$width_effective_px div $width"/>
</xsl:when>
<xsl:otherwise>1</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="scale_y">
<xsl:choose>
<xsl:when test="$height * $scale_x > $height_effective_px">
<xsl:value-of select="$height_effective_px div ($height * $scale_x)"/>
</xsl:when>
<xsl:otherwise>1</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="scale">
<xsl:choose>
<xsl:when test="$scale_y != 1">
<xsl:value-of select="$scale_x * $scale_y"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$scale_x"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="width_scale" select="round($width * $scale)"/>
<xsl:variable name="height_scale" select="round($height * $scale)"/>
<fo:table table-layout="fixed" width="100%">
<fo:table-column column-width="proportional-column-width(1)"/>
<fo:table-column column-width="{$width_scale}px"/>
<fo:table-column column-width="proportional-column-width(1)"/>
<fo:table-body>
<fo:table-row>
<fo:table-cell column-number="2">
<fo:block>
<fo:block-container width="{$width_scale}px" height="{$height_scale}px">
<xsl:if test="../*[local-name() = 'name']/*[local-name() = 'bookmark']">
<fo:block line-height="0" font-size="0">
<xsl:for-each select="../*[local-name() = 'name']/*[local-name() = 'bookmark']">
<xsl:call-template name="bookmark"/>
</xsl:for-each>
</fo:block>
</xsl:if>
<fo:block text-depth="0" line-height="0" font-size="0">
<fo:instream-foreign-object fox:alt-text="{$alt-text}">
<xsl:attribute name="width">100%</xsl:attribute>
<xsl:attribute name="content-height">100%</xsl:attribute>
<xsl:attribute name="content-width">scale-down-to-fit</xsl:attribute>
<xsl:attribute name="scaling">uniform</xsl:attribute>
<xsl:apply-templates select="xalan:nodeset($svg_content)" mode="svg_remove_a"/>
</fo:instream-foreign-object>
</fo:block>
<xsl:apply-templates select=".//*[local-name() = 'a'][*[local-name() = 'rect'] or *[local-name() = 'polygon'] or *[local-name() = 'circle'] or *[local-name() = 'ellipse']]" mode="svg_imagemap_links">
<xsl:with-param name="scale" select="$scale"/>
</xsl:apply-templates>
</fo:block-container>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:block>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="image_class" select="ancestor::*[local-name() = 'image']/@class"/>
<xsl:variable name="ancestor_table_cell" select="normalize-space(ancestor::*[local-name() = 'td'] or ancestor::*[local-name() = 'th'])"/>
<xsl:variable name="element">
<xsl:choose>
<xsl:when test="ancestor::*[local-name() = 'tr'] and $isGenerateTableIF = 'true'">
<fo:inline xsl:use-attribute-sets="image-style" text-align="left"/>
</xsl:when>
<xsl:when test="not(ancestor::*[local-name() = 'figure'])">
<fo:inline xsl:use-attribute-sets="image-style" text-align="left"/>
</xsl:when>
<xsl:otherwise>
<fo:block xsl:use-attribute-sets="image-style">
<xsl:if test="ancestor::*[local-name() = 'dt']">
<xsl:attribute name="text-align">left</xsl:attribute>
</xsl:if>
</fo:block>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:for-each select="xalan:nodeset($element)/*">
<xsl:copy>
<xsl:copy-of select="@*"/>
<!-- <fo:block xsl:use-attribute-sets="image-style"> -->
<fo:instream-foreign-object fox:alt-text="{$alt-text}">
<xsl:choose>
<xsl:when test="$image_class = 'corrigenda-tag'">
<xsl:attribute name="fox:alt-text">CorrigendaTag</xsl:attribute>
<xsl:attribute name="baseline-shift">-10%</xsl:attribute>
<xsl:if test="$ancestor_table_cell = 'true'">
<xsl:attribute name="baseline-shift">-25%</xsl:attribute>
</xsl:if>
<xsl:attribute name="height">3.5mm</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:if test="$isGenerateTableIF = 'false'">
<xsl:attribute name="width">100%</xsl:attribute>
</xsl:if>
<xsl:attribute name="content-height">100%</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
<xsl:attribute name="content-width">scale-down-to-fit</xsl:attribute>
<xsl:variable name="svg_width_" select="xalan:nodeset($svg_content)/*/@width"/>
<xsl:variable name="svg_width" select="number(translate($svg_width_, 'px', ''))"/>
<xsl:variable name="svg_height_" select="xalan:nodeset($svg_content)/*/@height"/>
<xsl:variable name="svg_height" select="number(translate($svg_height_, 'px', ''))"/>
<!-- Example: -->
<!-- effective height 297 - 27.4 - 13 = 256.6 -->
<!-- effective width 210 - 12.5 - 25 = 172.5 -->
<!-- effective height / width = 1.48, 1.4 - with title -->
<xsl:variable name="scale_x">
<xsl:choose>
<xsl:when test="$svg_width > $width_effective_px">
<xsl:value-of select="$width_effective_px div $svg_width"/>
</xsl:when>
<xsl:otherwise>1</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="scale_y">
<xsl:choose>
<xsl:when test="$svg_height * $scale_x > $height_effective_px">
<xsl:variable name="height_effective_px_">
<xsl:choose>
<!-- title is 'keep-with-next' with following figure -->
<xsl:when test="$isPrecedingTitle = 'true'"><xsl:value-of select="$height_effective_px - 80"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$height_effective_px"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:value-of select="$height_effective_px_ div ($svg_height * $scale_x)"/>
</xsl:when>
<xsl:otherwise>1</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- for images with big height -->
<!-- <xsl:if test="$svg_height > ($svg_width * 1.4)">
<xsl:variable name="width" select="(($svg_width * 1.4) div $svg_height) * 100"/>
<xsl:attribute name="width"><xsl:value-of select="$width"/>%</xsl:attribute>
</xsl:if> -->
<xsl:attribute name="scaling">uniform</xsl:attribute>
<xsl:if test="$scale_y != 1">
<xsl:attribute name="content-height"><xsl:value-of select="round($scale_x * $scale_y * 100)"/>%</xsl:attribute>
</xsl:if>
<xsl:copy-of select="$svg_content"/>
</fo:instream-foreign-object>
<!-- </fo:block> -->
</xsl:copy>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- ============== -->
<!-- svg_update -->
<!-- ============== -->
<xsl:template match="@*|node()" mode="svg_update">
<xsl:copy>
<xsl:apply-templates select="@*|node()" mode="svg_update"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[local-name() = 'image']/@href" mode="svg_update">
<xsl:attribute name="href" namespace="http://www.w3.org/1999/xlink">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:template>
<xsl:variable name="regex_starts_with_digit">^[0-9].*</xsl:variable>
<xsl:template match="*[local-name() = 'svg'][not(@width and @height)]" mode="svg_update">
<xsl:copy>
<xsl:apply-templates select="@*" mode="svg_update"/>
<xsl:variable name="viewbox_">
<xsl:call-template name="split">
<xsl:with-param name="pText" select="@viewBox"/>
<xsl:with-param name="sep" select="' '"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="viewbox" select="xalan:nodeset($viewbox_)"/>
<xsl:variable name="width" select="normalize-space($viewbox//item[3])"/>
<xsl:variable name="height" select="normalize-space($viewbox//item[4])"/>
<xsl:variable name="parent_image_width" select="normalize-space(ancestor::*[1][local-name() = 'image']/@width)"/>
<xsl:variable name="parent_image_height" select="normalize-space(ancestor::*[1][local-name() = 'image']/@height)"/>
<xsl:attribute name="width">
<xsl:choose>
<!-- width is non 'auto', 'text-width', 'full-page-width' or 'narrow' -->
<xsl:when test="$parent_image_width != '' and normalize-space(java:matches(java:java.lang.String.new($parent_image_width), $regex_starts_with_digit)) = 'true'"><xsl:value-of select="$parent_image_width"/></xsl:when>
<xsl:when test="$width != ''">
<xsl:value-of select="round($width)"/>
</xsl:when>
<xsl:otherwise>400</xsl:otherwise> <!-- default width -->
</xsl:choose>
</xsl:attribute>
<xsl:attribute name="height">
<xsl:choose>
<!-- height non 'auto', 'text-width', 'full-page-width' or 'narrow' -->
<xsl:when test="$parent_image_height != '' and normalize-space(java:matches(java:java.lang.String.new($parent_image_height), $regex_starts_with_digit)) = 'true'"><xsl:value-of select="$parent_image_height"/></xsl:when>
<xsl:when test="$height != ''">
<xsl:value-of select="round($height)"/>
</xsl:when>
<xsl:otherwise>400</xsl:otherwise> <!-- default height -->
</xsl:choose>
</xsl:attribute>
<xsl:apply-templates mode="svg_update"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[local-name() = 'svg']/@width" mode="svg_update">
<!-- image[@width]/svg -->
<xsl:variable name="parent_image_width" select="normalize-space(ancestor::*[2][local-name() = 'image']/@width)"/>
<xsl:attribute name="width">
<xsl:choose>
<xsl:when test="$parent_image_width != '' and normalize-space(java:matches(java:java.lang.String.new($parent_image_width), $regex_starts_with_digit)) = 'true'"><xsl:value-of select="$parent_image_width"/></xsl:when>
<xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:template>
<xsl:template match="*[local-name() = 'svg']/@height" mode="svg_update">
<!-- image[@height]/svg -->
<xsl:variable name="parent_image_height" select="normalize-space(ancestor::*[2][local-name() = 'image']/@height)"/>
<xsl:attribute name="height">
<xsl:choose>
<xsl:when test="$parent_image_height != '' and normalize-space(java:matches(java:java.lang.String.new($parent_image_height), $regex_starts_with_digit)) = 'true'"><xsl:value-of select="$parent_image_height"/></xsl:when>
<xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:template>
<!-- regex for 'display: inline-block;' -->
<xsl:variable name="regex_svg_style_notsupported">display(\s|\h)*:(\s|\h)*inline-block(\s|\h)*;</xsl:variable>
<xsl:template match="*[local-name() = 'svg']//*[local-name() = 'style']/text()" mode="svg_update">
<xsl:value-of select="java:replaceAll(java:java.lang.String.new(.), $regex_svg_style_notsupported, '')"/>
</xsl:template>
<!-- replace
stroke="rgba(r, g, b, alpha)" to
stroke="rgb(r,g,b)" stroke-opacity="alpha", and
fill="rgba(r, g, b, alpha)" to
fill="rgb(r,g,b)" fill-opacity="alpha" -->
<xsl:template match="@*[local-name() = 'stroke' or local-name() = 'fill'][starts-with(normalize-space(.), 'rgba')]" mode="svg_update">
<xsl:variable name="components_">
<xsl:call-template name="split">
<xsl:with-param name="pText" select="substring-before(substring-after(., '('), ')')"/>
<xsl:with-param name="sep" select="','"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="components" select="xalan:nodeset($components_)"/>
<xsl:variable name="att_name" select="local-name()"/>
<xsl:attribute name="{$att_name}"><xsl:value-of select="concat('rgb(', $components/item[1], ',', $components/item[2], ',', $components/item[3], ')')"/></xsl:attribute>
<xsl:attribute name="{$att_name}-opacity"><xsl:value-of select="$components/item[4]"/></xsl:attribute>
</xsl:template>
<!-- ============== -->
<!-- END: svg_update -->
<!-- ============== -->
<!-- image with svg and emf -->
<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>
<!-- For the structures like: <dt><image src="" mimetype="image/svg+xml" height="" width=""><svg xmlns="http://www.w3.org/2000/svg" ... -->
<xsl:template match="*[local-name() != 'figure']/*[local-name() = 'image'][*[local-name() = 'svg']]" priority="3">
<xsl:for-each select="*[local-name() = 'svg']">
<xsl:call-template name="image_svg"/>
</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">
<xsl:with-param name="name" select="$name"/>
</xsl:call-template>
</xsl:for-each>
</xsl:template>
<xsl:template match="@*|node()" mode="svg_remove_a">
<xsl:copy>
<xsl:apply-templates select="@*|node()" mode="svg_remove_a"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[local-name() = 'a']" mode="svg_remove_a">
<xsl:apply-templates mode="svg_remove_a"/>
</xsl:template>
<xsl:template match="*[local-name() = 'a']" mode="svg_imagemap_links">
<xsl:param name="scale"/>
<xsl:variable name="dest">
<xsl:choose>
<xsl:when test="starts-with(@href, '#')">
<xsl:value-of select="substring-after(@href, '#')"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="@href"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:for-each select="./*[local-name() = 'rect']">
<xsl:call-template name="insertSVGMapLink">
<xsl:with-param name="left" select="floor(@x * $scale)"/>
<xsl:with-param name="top" select="floor(@y * $scale)"/>
<xsl:with-param name="width" select="floor(@width * $scale)"/>
<xsl:with-param name="height" select="floor(@height * $scale)"/>
<xsl:with-param name="dest" select="$dest"/>
</xsl:call-template>
</xsl:for-each>
<xsl:for-each select="./*[local-name() = 'polygon']">
<xsl:variable name="points">
<xsl:call-template name="split">
<xsl:with-param name="pText" select="@points"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="x_coords">
<xsl:for-each select="xalan:nodeset($points)//item[position() mod 2 = 1]">
<xsl:sort select="." data-type="number"/>
<x><xsl:value-of select="."/></x>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="y_coords">
<xsl:for-each select="xalan:nodeset($points)//item[position() mod 2 = 0]">
<xsl:sort select="." data-type="number"/>
<y><xsl:value-of select="."/></y>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="x" select="xalan:nodeset($x_coords)//x[1]"/>
<xsl:variable name="y" select="xalan:nodeset($y_coords)//y[1]"/>
<xsl:variable name="width" select="xalan:nodeset($x_coords)//x[last()] - $x"/>
<xsl:variable name="height" select="xalan:nodeset($y_coords)//y[last()] - $y"/>
<xsl:call-template name="insertSVGMapLink">
<xsl:with-param name="left" select="floor($x * $scale)"/>
<xsl:with-param name="top" select="floor($y * $scale)"/>
<xsl:with-param name="width" select="floor($width * $scale)"/>
<xsl:with-param name="height" select="floor($height * $scale)"/>
<xsl:with-param name="dest" select="$dest"/>
</xsl:call-template>
</xsl:for-each>
<xsl:for-each select="./*[local-name() = 'circle']">
<xsl:call-template name="insertSVGMapLink">
<xsl:with-param name="left" select="floor((@cx - @r) * $scale)"/>
<xsl:with-param name="top" select="floor((@cy - @r) * $scale)"/>
<xsl:with-param name="width" select="floor(@r * 2 * $scale)"/>
<xsl:with-param name="height" select="floor(@r * 2 * $scale)"/>
<xsl:with-param name="dest" select="$dest"/>
</xsl:call-template>
</xsl:for-each>
<xsl:for-each select="./*[local-name() = 'ellipse']">
<xsl:call-template name="insertSVGMapLink">
<xsl:with-param name="left" select="floor((@cx - @rx) * $scale)"/>
<xsl:with-param name="top" select="floor((@cy - @ry) * $scale)"/>
<xsl:with-param name="width" select="floor(@rx * 2 * $scale)"/>
<xsl:with-param name="height" select="floor(@ry * 2 * $scale)"/>
<xsl:with-param name="dest" select="$dest"/>
</xsl:call-template>
</xsl:for-each>
</xsl:template>
<xsl:template name="insertSVGMapLink">
<xsl:param name="left"/>
<xsl:param name="top"/>
<xsl:param name="width"/>
<xsl:param name="height"/>
<xsl:param name="dest"/>
<fo:block-container position="absolute" left="{$left}px" top="{$top}px" width="{$width}px" height="{$height}px">
<fo:block font-size="1pt">
<xsl:call-template name="insert_basic_link">
<xsl:with-param name="element">
<fo:basic-link internal-destination="{$dest}" fox:alt-text="svg link">
<fo:inline-container inline-progression-dimension="100%">
<fo:block-container height="{$height - 1}px" width="100%">
<!-- DEBUG <xsl:if test="local-name()='polygon'">
<xsl:attribute name="background-color">magenta</xsl:attribute>
</xsl:if> -->
<fo:block> </fo:block></fo:block-container>
</fo:inline-container>
</fo:basic-link>
</xsl:with-param>
</xsl:call-template>
</fo:block>
</fo:block-container>
</xsl:template>
<!-- =================== -->
<!-- End SVG images processing -->
<!-- =================== -->
<!-- ignore emf processing (Apache FOP doesn't support EMF) -->
<xsl:template match="*[local-name() = 'emf']"/>
<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'] | *[local-name() = 'sourcecode']/*[local-name() = 'name']" mode="bookmarks">
<xsl:apply-templates mode="bookmarks"/>
<xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="*[local-name() = 'figure' or local-name() = 'table' or local-name() = 'permission' or local-name() = 'recommendation' or local-name() = 'requirement']/*[local-name() = 'name']/text()" mode="contents" priority="2">
<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="*[local-name() = 'add'][starts-with(., $ace_tag)]/text()" mode="bookmarks" priority="3"/>
<xsl:template match="node()" mode="contents">
<xsl:apply-templates mode="contents"/>
</xsl:template>
<!-- special case: ignore preface/section-title and sections/section-title without @displayorder -->
<xsl:template match="*[local-name() = 'preface' or local-name() = 'sections']/*[local-name() = 'p'][@type = 'section-title' and not(@displayorder)]" priority="3" mode="contents"/>
<!-- process them by demand (mode="contents_no_displayorder") -->
<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>
<!-- special case: ignore section-title if @depth different than @depth of parent clause, or @depth of parent clause = 1 -->
<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>
<xsl:variable name="section">
<xsl:choose>
<xsl:when test="@type = 'section-title'"/>
<xsl:otherwise>
<xsl:value-of select="*[local-name() = 'tab'][1]/preceding-sibling::node()"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="type"><xsl:value-of select="@type"/></xsl:variable>
<xsl:variable name="display">
<xsl:choose>
<xsl:when test="normalize-space(@id) = ''">false</xsl:when>
<xsl:when test="$level <= $toc_level">true</xsl:when>
<xsl:otherwise>false</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="skip">false</xsl:variable>
<xsl:if test="$skip = 'false'">
<xsl:variable name="title">
<xsl:choose>
<xsl:when test="*[local-name() = 'tab']">
<xsl:choose>
<xsl:when test="@type = 'section-title'">
<xsl:value-of select="*[local-name() = 'tab'][1]/preceding-sibling::node()"/>
<xsl:text>: </xsl:text>
<xsl:copy-of select="*[local-name() = 'tab'][1]/following-sibling::node()"/>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="*[local-name() = 'tab'][1]/following-sibling::node()"/>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="node()"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="root">
<xsl:if test="ancestor-or-self::*[local-name() = 'preface']">preface</xsl:if>
<xsl:if test="ancestor-or-self::*[local-name() = 'annex']">annex</xsl:if>
</xsl:variable>
<item id="{@id}" level="{$level}" section="{$section}" type="{$type}" root="{$root}" display="{$display}">
<title>
<xsl:apply-templates select="xalan:nodeset($title)" mode="contents_item"/>
</title>
</item>
</xsl:if>
</xsl:template>
<xsl:template match="node()" mode="bookmarks">
<xsl:apply-templates mode="bookmarks"/>
</xsl:template>
<xsl:template match="*[local-name() = 'title' or local-name() = 'name']//*[local-name() = 'stem']" mode="contents">
<xsl:apply-templates select="."/>
</xsl:template>
<xsl:template match="*[local-name() = 'references'][@hidden='true']" mode="contents" priority="3"/>
<xsl:template match="*[local-name() = 'references']/*[local-name() = 'bibitem']" mode="contents"/>
<!-- Note: to enable the addition of character span markup with semantic styling for DIS Word output -->
<xsl:template match="*[local-name() = 'span']" mode="contents">
<xsl:apply-templates mode="contents"/>
</xsl:template>
<xsl:template match="*[local-name() = 'stem']" mode="bookmarks">
<xsl:apply-templates mode="bookmarks"/>
</xsl:template>
<!-- Note: to enable the addition of character span markup with semantic styling for DIS Word output -->
<xsl:template match="*[local-name() = 'span']" mode="bookmarks">
<xsl:apply-templates mode="bookmarks"/>
</xsl:template>
<!-- Bookmarks -->
<xsl:template name="addBookmarks">
<xsl:param name="contents"/>
<xsl:variable name="contents_nodes" select="xalan:nodeset($contents)"/>
<xsl:if test="$contents_nodes//item">
<fo:bookmark-tree>
<xsl:choose>
<xsl:when test="$contents_nodes/doc">
<xsl:choose>
<xsl:when test="count($contents_nodes/doc) > 1">
<xsl:if test="$contents_nodes/collection">
<fo:bookmark internal-destination="{$contents/collection/@firstpage_id}">
<fo:bookmark-title>collection.pdf</fo:bookmark-title>
</fo:bookmark>
</xsl:if>
<xsl:for-each select="$contents_nodes/doc">
<fo:bookmark internal-destination="{contents/item[@display = 'true'][1]/@id}" starting-state="hide">
<xsl:if test="@bundle = 'true'">
<xsl:attribute name="internal-destination"><xsl:value-of select="@firstpage_id"/></xsl:attribute>
</xsl:if>
<fo:bookmark-title>
<xsl:choose>
<xsl:when test="not(normalize-space(@bundle) = 'true')"> <!-- 'bundle' means several different documents (not language versions) in one xml -->
<xsl:variable name="bookmark-title_">
<xsl:call-template name="getLangVersion">
<xsl:with-param name="lang" select="@lang"/>
<xsl:with-param name="doctype" select="@doctype"/>
<xsl:with-param name="title" select="@title-part"/>
</xsl:call-template>
</xsl:variable>
<xsl:choose>
<xsl:when test="normalize-space($bookmark-title_) != ''">
<xsl:value-of select="normalize-space($bookmark-title_)"/>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="@lang = 'en'">English</xsl:when>
<xsl:when test="@lang = 'fr'">Français</xsl:when>
<xsl:when test="@lang = 'de'">Deutsche</xsl:when>
<xsl:otherwise><xsl:value-of select="@lang"/> version</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="@title-part"/>
</xsl:otherwise>
</xsl:choose>
</fo:bookmark-title>
<xsl:apply-templates select="contents/item" mode="bookmark"/>
<xsl:call-template name="insertFigureBookmarks">
<xsl:with-param name="contents" select="contents"/>
</xsl:call-template>
<xsl:call-template name="insertTableBookmarks">
<xsl:with-param name="contents" select="contents"/>
<xsl:with-param name="lang" select="@lang"/>
</xsl:call-template>
</fo:bookmark>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<xsl:for-each select="$contents_nodes/doc">
<xsl:apply-templates select="contents/item" mode="bookmark"/>
<xsl:call-template name="insertFigureBookmarks">
<xsl:with-param name="contents" select="contents"/>
</xsl:call-template>
<xsl:call-template name="insertTableBookmarks">
<xsl:with-param name="contents" select="contents"/>
<xsl:with-param name="lang" select="@lang"/>
</xsl:call-template>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="$contents_nodes/contents/item" mode="bookmark"/>
<xsl:call-template name="insertFigureBookmarks">
<xsl:with-param name="contents" select="$contents_nodes/contents"/>
</xsl:call-template>
<xsl:call-template name="insertTableBookmarks">
<xsl:with-param name="contents" select="$contents_nodes/contents"/>
<xsl:with-param name="lang" select="@lang"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</fo:bookmark-tree>
</xsl:if>
</xsl:template>
<xsl:template name="insertFigureBookmarks">
<xsl:param name="contents"/>
<xsl:variable name="contents_nodes" select="xalan:nodeset($contents)"/>
<xsl:if test="$contents_nodes/figure">
<fo:bookmark internal-destination="{$contents_nodes/figure[1]/@id}" starting-state="hide">
<fo:bookmark-title>Figures</fo:bookmark-title>
<xsl:for-each select="$contents_nodes/figure">
<fo:bookmark internal-destination="{@id}">
<fo:bookmark-title>
<xsl:value-of select="normalize-space(title)"/>
</fo:bookmark-title>
</fo:bookmark>
</xsl:for-each>
</fo:bookmark>
</xsl:if>
<xsl:if test="$contents_nodes//figures/figure">
<fo:bookmark internal-destination="empty_bookmark" starting-state="hide">
<xsl:variable name="bookmark-title">
<xsl:value-of select="$title-list-figures"/>
</xsl:variable>
<fo:bookmark-title><xsl:value-of select="normalize-space($bookmark-title)"/></fo:bookmark-title>
<xsl:for-each select="$contents_nodes//figures/figure">
<fo:bookmark internal-destination="{@id}">
<fo:bookmark-title><xsl:value-of select="normalize-space(.)"/></fo:bookmark-title>
</fo:bookmark>
</xsl:for-each>
</fo:bookmark>
</xsl:if>
</xsl:template> <!-- insertFigureBookmarks -->
<xsl:template name="insertTableBookmarks">
<xsl:param name="contents"/>
<xsl:param name="lang"/>
<xsl:variable name="contents_nodes" select="xalan:nodeset($contents)"/>
<xsl:if test="$contents_nodes/table">
<fo:bookmark internal-destination="{$contents_nodes/table[1]/@id}" starting-state="hide">
<fo:bookmark-title>
<xsl:choose>
<xsl:when test="$lang = 'fr'">Tableaux</xsl:when>
<xsl:otherwise>Tables</xsl:otherwise>
</xsl:choose>
</fo:bookmark-title>
<xsl:for-each select="$contents_nodes/table">
<fo:bookmark internal-destination="{@id}">
<fo:bookmark-title>
<xsl:value-of select="normalize-space(title)"/>
</fo:bookmark-title>
</fo:bookmark>
</xsl:for-each>
</fo:bookmark>
</xsl:if>
<xsl:if test="$contents_nodes//tables/table">
<fo:bookmark internal-destination="empty_bookmark" starting-state="hide">
<xsl:variable name="bookmark-title">
<xsl:value-of select="$title-list-tables"/>
</xsl:variable>
<fo:bookmark-title><xsl:value-of select="$bookmark-title"/></fo:bookmark-title>
<xsl:for-each select="$contents_nodes//tables/table">
<fo:bookmark internal-destination="{@id}">
<fo:bookmark-title><xsl:value-of select="normalize-space(.)"/></fo:bookmark-title>
</fo:bookmark>
</xsl:for-each>
</fo:bookmark>
</xsl:if>
</xsl:template> <!-- insertTableBookmarks -->
<!-- End Bookmarks -->
<xsl:template name="getLangVersion">
<xsl:param name="lang"/>
<xsl:param name="doctype" select="''"/>
<xsl:param name="title" select="''"/>
<xsl:choose>
<xsl:when test="$lang = 'en'">
</xsl:when>
<xsl:when test="$lang = 'fr'">
</xsl:when>
<xsl:when test="$lang = 'de'">Deutsche</xsl:when>
<xsl:otherwise><xsl:value-of select="$lang"/> version</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="item" mode="bookmark">
<xsl:choose>
<xsl:when test="@id != ''">
<fo:bookmark internal-destination="{@id}" starting-state="hide">
<fo:bookmark-title>
<xsl:if test="@section != ''">
<xsl:value-of select="@section"/>
<xsl:text> </xsl:text>
</xsl:if>
<xsl:variable name="title">
<xsl:for-each select="title/node()">
<xsl:choose>
<xsl:when test="local-name() = 'add' and starts-with(., $ace_tag)"><!-- skip --></xsl:when>
<xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:variable>
<xsl:value-of select="normalize-space($title)"/>
</fo:bookmark-title>
<xsl:apply-templates mode="bookmark"/>
</fo:bookmark>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates mode="bookmark"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="title" mode="bookmark"/>
<xsl:template match="text()" mode="bookmark"/>
<xsl:template match="*[local-name() = 'figure']/*[local-name() = 'name'] | *[local-name() = 'image']/*[local-name() = 'name']">
<xsl:if test="normalize-space() != ''">
<fo:block xsl:use-attribute-sets="figure-name-style">
<xsl:call-template name="refine_figure-name-style"/>
<xsl:apply-templates/>
</fo:block>
</xsl:if>
</xsl:template>
<xsl:template match="*[local-name() = 'figure']/*[local-name() = 'fn']" priority="2"/>
<xsl:template match="*[local-name() = 'figure']/*[local-name() = 'note']"/>
<xsl:template match="*[local-name() = 'figure']/*[local-name() = 'note'][@type = 'units'] | *[local-name() = 'image']/*[local-name() = 'note'][@type = 'units']" priority="2">
<fo:block text-align="right" keep-with-next="always">
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<!-- ====== -->
<!-- ====== -->
<xsl:template match="*[local-name() = 'title']" mode="contents_item">
<xsl:param name="mode">bookmarks</xsl:param>
<xsl:apply-templates mode="contents_item">
<xsl:with-param name="mode" select="$mode"/>
</xsl:apply-templates>
<!-- <xsl:text> </xsl:text> -->
</xsl:template>
<xsl:template name="getSection">
<xsl:value-of select="*[local-name() = 'title']/*[local-name() = 'tab'][1]/preceding-sibling::node()"/>
</xsl:template>
<xsl:template name="getName">
<xsl:choose>
<xsl:when test="*[local-name() = 'title']/*[local-name() = 'tab']">
<xsl:copy-of select="*[local-name() = 'title']/*[local-name() = 'tab'][1]/following-sibling::node()"/>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="*[local-name() = 'title']/node()"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="insertTitleAsListItem">
<xsl:param name="provisional-distance-between-starts" select="'9.5mm'"/>
<xsl:variable name="section">
<xsl:for-each select="..">
<xsl:call-template name="getSection"/>
</xsl:for-each>
</xsl:variable>
<fo:list-block provisional-distance-between-starts="{$provisional-distance-between-starts}">
<fo:list-item>
<fo:list-item-label end-indent="label-end()">
<fo:block>
<xsl:value-of select="$section"/>
</fo:block>
</fo:list-item-label>
<fo:list-item-body start-indent="body-start()">
<fo:block>
<xsl:choose>
<xsl:when test="*[local-name() = 'tab']">
<xsl:apply-templates select="*[local-name() = 'tab'][1]/following-sibling::node()"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
<xsl:apply-templates select="following-sibling::*[1][local-name() = 'variant-title'][@type = 'sub']" mode="subtitle"/>
</xsl:otherwise>
</xsl:choose>
</fo:block>
</fo:list-item-body>
</fo:list-item>
</fo:list-block>
</xsl:template>
<xsl:template name="extractSection">
<xsl:value-of select="*[local-name() = 'tab'][1]/preceding-sibling::node()"/>
</xsl:template>
<xsl:template name="extractTitle">
<xsl:choose>
<xsl:when test="*[local-name() = 'tab']">
<xsl:apply-templates select="*[local-name() = 'tab'][1]/following-sibling::node()"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="*[local-name() = 'fn']" mode="contents"/>
<xsl:template match="*[local-name() = 'fn']" mode="bookmarks"/>
<xsl:template match="*[local-name() = 'fn']" mode="contents_item"/>
<xsl:template match="*[local-name() = 'xref'] | *[local-name() = 'eref']" mode="contents">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="*[local-name() = 'review']" mode="contents_item"/>
<xsl:template match="*[local-name() = 'tab']" mode="contents_item">
<xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="*[local-name() = 'strong']" mode="contents_item">
<xsl:param name="element"/>
<xsl:copy>
<xsl:apply-templates mode="contents_item">
<xsl:with-param name="element" select="$element"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="*[local-name() = 'em']" mode="contents_item">
<xsl:copy>
<xsl:apply-templates mode="contents_item"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[local-name() = 'sub']" mode="contents_item">
<xsl:copy>
<xsl:apply-templates mode="contents_item"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[local-name() = 'sup']" mode="contents_item">
<xsl:copy>
<xsl:apply-templates mode="contents_item"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[local-name() = 'stem']" mode="contents_item">
<xsl:copy-of select="."/>
</xsl:template>
<xsl:template match="*[local-name() = 'br']" mode="contents_item">
<xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="*[local-name() = 'name']" mode="contents_item">
<xsl:param name="mode">bookmarks</xsl:param>
<xsl:apply-templates mode="contents_item">
<xsl:with-param name="mode" select="$mode"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="*[local-name() = 'add']" mode="contents_item">
<xsl:param name="mode">bookmarks</xsl:param>
<xsl:choose>
<xsl:when test="starts-with(text(), $ace_tag)">
<xsl:if test="$mode = 'contents'">
<xsl:copy>
<xsl:apply-templates mode="contents_item"/>
</xsl:copy>
</xsl:if>
</xsl:when>
<xsl:otherwise><xsl:apply-templates mode="contents_item"/></xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="text()" mode="contents_item">
<xsl:variable name="text">
<!-- to split by '_' and other chars -->
<text><xsl:call-template name="add-zero-spaces-java"/></text>
</xsl:variable>
<xsl:for-each select="xalan:nodeset($text)/text/text()">
<xsl:call-template name="keep_together_standard_number"/>
</xsl:for-each>
</xsl:template>
<xsl:template match="*[local-name() = 'add'][starts-with(., $ace_tag)]/text()" mode="contents_item" priority="2">
<xsl:value-of select="."/>
</xsl:template>
<!-- Note: to enable the addition of character span markup with semantic styling for DIS Word output -->
<xsl:template match="*[local-name() = 'span']" mode="contents_item">
<xsl:param name="element"/>
<xsl:apply-templates mode="contents_item">
<xsl:with-param name="element" select="$element"/>
</xsl:apply-templates>
</xsl:template>
<!-- =============== -->
<!-- sourcecode -->
<!-- =============== -->
<xsl:variable name="source-highlighter-css_" select="//*[contains(local-name(), '-standard')]/*[local-name() = 'metanorma-extension']/*[local-name() = 'source-highlighter-css']"/>
<xsl:variable name="sourcecode_css_" select="java:org.metanorma.fop.Util.parseCSS($source-highlighter-css_)"/>
<xsl:variable name="sourcecode_css" select="xalan:nodeset($sourcecode_css_)"/>
<xsl:template match="*[local-name() = 'property']" mode="css">
<xsl:attribute name="{@name}">
<xsl:value-of select="@value"/>
</xsl:attribute>
</xsl:template>
<xsl:template name="get_sourcecode_attributes">
<xsl:element name="sourcecode_attributes" use-attribute-sets="sourcecode-style">
<xsl:variable name="_font-size">
9<!-- inherit -->
<!-- <xsl:if test="$namespace = 'ieee'">
<xsl:if test="$current_template = 'standard'">8</xsl:if>
</xsl:if> -->
</xsl:variable>
<xsl:variable name="font-size" select="normalize-space($_font-size)"/>
<xsl:if test="$font-size != ''">
<xsl:attribute name="font-size">
<xsl:choose>
<xsl:when test="$font-size = 'inherit'"><xsl:value-of select="$font-size"/></xsl:when>
<xsl:when test="contains($font-size, '%')"><xsl:value-of select="$font-size"/></xsl:when>
<xsl:when test="ancestor::*[local-name()='note']"><xsl:value-of select="$font-size * 0.91"/>pt</xsl:when>
<xsl:otherwise><xsl:value-of select="$font-size"/>pt</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:if>
<xsl:apply-templates select="$sourcecode_css//class[@name = 'sourcecode']" mode="css"/>
</xsl:element>
</xsl:template>
<xsl:template match="*[local-name()='sourcecode']" name="sourcecode">
<xsl:variable name="sourcecode_attributes">
<xsl:call-template name="get_sourcecode_attributes"/>
</xsl:variable>
<!-- <xsl:copy-of select="$sourcecode_css"/> -->
<xsl:choose>
<xsl:when test="$isGenerateTableIF = 'true' and (ancestor::*[local-name() = 'td'] or ancestor::*[local-name() = 'th'])">
<xsl:for-each select="xalan:nodeset($sourcecode_attributes)/sourcecode_attributes/@*">
<xsl:attribute name="{local-name()}">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:for-each>
<xsl:apply-templates select="node()[not(local-name() = 'name')]"/>
</xsl:when>
<xsl:otherwise>
<fo:block-container xsl:use-attribute-sets="sourcecode-container-style" role="SKIP">
<xsl:if test="not(ancestor::*[local-name() = 'li']) or ancestor::*[local-name() = 'example']">
<xsl:attribute name="margin-left">0mm</xsl:attribute>
</xsl:if>
<xsl:if test="ancestor::*[local-name() = 'example']">
<xsl:attribute name="margin-right">0mm</xsl:attribute>
</xsl:if>
<xsl:copy-of select="@id"/>
<xsl:if test="parent::*[local-name() = 'note']">
<xsl:attribute name="margin-left">
<xsl:choose>
<xsl:when test="not(ancestor::*[local-name() = 'table'])"><xsl:value-of select="$note-body-indent"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$note-body-indent-table"/></xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:if>
<fo:block-container margin-left="0mm" role="SKIP">
<fo:block xsl:use-attribute-sets="sourcecode-style">
<xsl:for-each select="xalan:nodeset($sourcecode_attributes)/sourcecode_attributes/@*">
<xsl:attribute name="{local-name()}">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:for-each>
<xsl:call-template name="refine_sourcecode-style"/>
<!-- remove margin between rows in the table with sourcecode line numbers -->
<xsl:if test="ancestor::*[local-name() = 'sourcecode'][@linenums = 'true'] and ancestor::*[local-name() = 'tr'][1]/following-sibling::*[local-name() = 'tr']">
<xsl:attribute name="margin-top">0pt</xsl:attribute>
<xsl:attribute name="margin-bottom">0pt</xsl:attribute>
</xsl:if>
<xsl:apply-templates select="node()[not(local-name() = 'name' or local-name() = 'dl')]"/>
</fo:block>
<xsl:apply-templates select="*[local-name() = 'dl']"/> <!-- Key table -->
<xsl:apply-templates select="*[local-name()='name']"/> <!-- show sourcecode's name AFTER content -->
</fo:block-container>
</fo:block-container>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="*[local-name()='sourcecode']/text() | *[local-name()='sourcecode']//*[local-name()='span']/text()" priority="2">
<xsl:choose>
<!-- disabled -->
<xsl:when test="1 = 2 and normalize-space($syntax-highlight) = 'true' and normalize-space(../@lang) != ''"> <!-- condition for turn on of highlighting -->
<xsl:variable name="syntax" select="java:org.metanorma.fop.Util.syntaxHighlight(., ../@lang)"/>
<xsl:choose>
<xsl:when test="normalize-space($syntax) != ''"><!-- if there is highlighted result -->
<xsl:apply-templates select="xalan:nodeset($syntax)" mode="syntax_highlight"/> <!-- process span tags -->
</xsl:when>
<xsl:otherwise> <!-- if case of non-succesfull syntax highlight (for instance, unknown lang), process without highlighting -->
<xsl:call-template name="add_spaces_to_sourcecode"/>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="add_spaces_to_sourcecode"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- add sourcecode highlighting -->
<xsl:template match="*[local-name()='sourcecode']//*[local-name()='span'][@class]" priority="2">
<xsl:variable name="class" select="@class"/>
<!-- Example: <1> -->
<xsl:variable name="is_callout">
<xsl:if test="parent::*[local-name() = 'dt']">
<xsl:variable name="dt_id" select="../@id"/>
<xsl:if test="ancestor::*[local-name() = 'sourcecode']//*[local-name() = 'callout'][@target = $dt_id]">true</xsl:if>
</xsl:if>
</xsl:variable>
<xsl:choose>
<xsl:when test="$sourcecode_css//class[@name = $class]">
<fo:inline>
<xsl:apply-templates select="$sourcecode_css//class[@name = $class]" mode="css"/>
<xsl:if test="$is_callout = 'true'"><</xsl:if>
<xsl:apply-templates/>
<xsl:if test="$is_callout = 'true'">></xsl:if>
</fo:inline>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- outer table with line numbers for sourcecode -->
<xsl:template match="*[local-name() = 'sourcecode'][@linenums = 'true']/*[local-name()='table']" priority="2"> <!-- *[local-name()='table'][@type = 'sourcecode'] | -->
<fo:block>
<fo:table width="100%" table-layout="fixed">
<xsl:copy-of select="@id"/>
<fo:table-column column-width="8%"/>
<fo:table-column column-width="92%"/>
<fo:table-body>
<xsl:apply-templates/>
</fo:table-body>
</fo:table>
</fo:block>
</xsl:template>
<xsl:template match="*[local-name() = 'sourcecode'][@linenums = 'true']/*[local-name()='table']/*[local-name() = 'tbody']" priority="2"> <!-- *[local-name()='table'][@type = 'sourcecode']/*[local-name() = 'tbody'] | -->
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="*[local-name() = 'sourcecode'][@linenums = 'true']/*[local-name()='table']//*[local-name()='tr']" priority="2"> <!-- *[local-name()='table'][@type = 'sourcecode']//*[local-name()='tr'] | -->
<fo:table-row>
<xsl:apply-templates/>
</fo:table-row>
</xsl:template>
<!-- first td with line numbers -->
<xsl:template match="*[local-name() = 'sourcecode'][@linenums = 'true']/*[local-name()='table']//*[local-name()='tr']/*[local-name()='td'][not(preceding-sibling::*)]" priority="2"> <!-- *[local-name()='table'][@type = 'sourcecode'] -->
<fo:table-cell>
<fo:block>
<!-- set attibutes for line numbers - same as sourcecode -->
<xsl:variable name="sourcecode_attributes">
<xsl:for-each select="following-sibling::*[local-name() = 'td']/*[local-name() = 'sourcecode']">
<xsl:call-template name="get_sourcecode_attributes"/>
</xsl:for-each>
</xsl:variable>
<xsl:for-each select="xalan:nodeset($sourcecode_attributes)/sourcecode_attributes/@*[not(starts-with(local-name(), 'margin-') or starts-with(local-name(), 'space-'))]">
<xsl:attribute name="{local-name()}">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:for-each>
<xsl:apply-templates/>
</fo:block>
</fo:table-cell>
</xsl:template>
<!-- second td with sourcecode -->
<xsl:template match="*[local-name() = 'sourcecode'][@linenums = 'true']/*[local-name()='table']//*[local-name()='tr']/*[local-name()='td'][preceding-sibling::*]" priority="2"> <!-- *[local-name()='table'][@type = 'sourcecode'] -->
<fo:table-cell>
<fo:block role="SKIP">
<xsl:apply-templates/>
</fo:block>
</fo:table-cell>
</xsl:template>
<!-- END outer table with line numbers for sourcecode -->
<xsl:template name="add_spaces_to_sourcecode">
<xsl:variable name="text_step1">
<xsl:call-template name="add-zero-spaces-equal"/>
</xsl:variable>
<xsl:variable name="text_step2">
<xsl:call-template name="add-zero-spaces-java">
<xsl:with-param name="text" select="$text_step1"/>
</xsl:call-template>
</xsl:variable>
<!-- <xsl:value-of select="$text_step2"/> -->
<!-- add zero-width space after space -->
<xsl:variable name="text_step3" select="java:replaceAll(java:java.lang.String.new($text_step2),' ',' ')"/>
<!-- split text by zero-width space -->
<xsl:variable name="text_step4">
<xsl:call-template name="split_for_interspers">
<xsl:with-param name="pText" select="$text_step3"/>
<xsl:with-param name="sep" select="$zero_width_space"/>
</xsl:call-template>
</xsl:variable>
<xsl:for-each select="xalan:nodeset($text_step4)/node()">
<xsl:choose>
<xsl:when test="local-name() = 'interspers'"> <!-- word with length more than 30 will be interspersed with zero-width space -->
<xsl:call-template name="interspers-java">
<xsl:with-param name="str" select="."/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:template> <!-- add_spaces_to_sourcecode -->
<xsl:variable name="interspers_tag_open">###interspers123###</xsl:variable>
<xsl:variable name="interspers_tag_close">###/interspers123###</xsl:variable>
<!-- split string by separator for interspers -->
<xsl:template name="split_for_interspers">
<xsl:param name="pText" select="."/>
<xsl:param name="sep" select="','"/>
<!-- word with length more than 30 will be interspersed with zero-width space -->
<xsl:variable name="regex" select="concat('([^', $zero_width_space, ']{31,})')"/> <!-- sequence of characters (more 31), that doesn't contains zero-width space -->
<xsl:variable name="text" select="java:replaceAll(java:java.lang.String.new($pText),$regex,concat($interspers_tag_open,'$1',$interspers_tag_close))"/>
<xsl:call-template name="replace_tag_interspers">
<xsl:with-param name="text" select="$text"/>
</xsl:call-template>
</xsl:template> <!-- end: split string by separator for interspers -->
<xsl:template name="replace_tag_interspers">
<xsl:param name="text"/>
<xsl:choose>
<xsl:when test="contains($text, $interspers_tag_open)">
<xsl:value-of select="substring-before($text, $interspers_tag_open)"/>
<xsl:variable name="text_after" select="substring-after($text, $interspers_tag_open)"/>
<interspers>
<xsl:value-of select="substring-before($text_after, $interspers_tag_close)"/>
</interspers>
<xsl:call-template name="replace_tag_interspers">
<xsl:with-param name="text" select="substring-after($text_after, $interspers_tag_close)"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise><xsl:value-of select="$text"/></xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- insert 'char' between each character in the string -->
<xsl:template name="interspers">
<xsl:param name="str"/>
<xsl:param name="char" select="$zero_width_space"/>
<xsl:if test="$str != ''">
<xsl:value-of select="substring($str, 1, 1)"/>
<xsl:variable name="next_char" select="substring($str, 2, 1)"/>
<xsl:if test="not(contains(concat(' -.:=_— ', $char), $next_char))">
<xsl:value-of select="$char"/>
</xsl:if>
<xsl:call-template name="interspers">
<xsl:with-param name="str" select="substring($str, 2)"/>
<xsl:with-param name="char" select="$char"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
<xsl:template name="interspers-java">
<xsl:param name="str"/>
<xsl:param name="char" select="$zero_width_space"/>
<xsl:value-of select="java:replaceAll(java:java.lang.String.new($str),'([^ -.:=_—])',concat('$1', $char))"/> <!-- insert $char after each char excep space, - . : = _ etc. -->
</xsl:template>
<xsl:template match="*" mode="syntax_highlight">
<xsl:apply-templates mode="syntax_highlight"/>
</xsl:template>
<xsl:variable name="syntax_highlight_styles_">
<style class="hljs-addition" xsl:use-attribute-sets="hljs-addition"/>
<style class="hljs-attr" xsl:use-attribute-sets="hljs-attr"/>
<style class="hljs-attribute" xsl:use-attribute-sets="hljs-attribute"/>
<style class="hljs-built_in" xsl:use-attribute-sets="hljs-built_in"/>
<style class="hljs-bullet" xsl:use-attribute-sets="hljs-bullet"/>
<style class="hljs-char_and_escape_" xsl:use-attribute-sets="hljs-char_and_escape_"/>
<style class="hljs-code" xsl:use-attribute-sets="hljs-code"/>
<style class="hljs-comment" xsl:use-attribute-sets="hljs-comment"/>
<style class="hljs-deletion" xsl:use-attribute-sets="hljs-deletion"/>
<style class="hljs-doctag" xsl:use-attribute-sets="hljs-doctag"/>
<style class="hljs-emphasis" xsl:use-attribute-sets="hljs-emphasis"/>
<style class="hljs-formula" xsl:use-attribute-sets="hljs-formula"/>
<style class="hljs-keyword" xsl:use-attribute-sets="hljs-keyword"/>
<style class="hljs-link" xsl:use-attribute-sets="hljs-link"/>
<style class="hljs-literal" xsl:use-attribute-sets="hljs-literal"/>
<style class="hljs-meta" xsl:use-attribute-sets="hljs-meta"/>
<style class="hljs-meta_hljs-string" xsl:use-attribute-sets="hljs-meta_hljs-string"/>
<style class="hljs-meta_hljs-keyword" xsl:use-attribute-sets="hljs-meta_hljs-keyword"/>
<style class="hljs-name" xsl:use-attribute-sets="hljs-name"/>
<style class="hljs-number" xsl:use-attribute-sets="hljs-number"/>
<style class="hljs-operator" xsl:use-attribute-sets="hljs-operator"/>
<style class="hljs-params" xsl:use-attribute-sets="hljs-params"/>
<style class="hljs-property" xsl:use-attribute-sets="hljs-property"/>
<style class="hljs-punctuation" xsl:use-attribute-sets="hljs-punctuation"/>
<style class="hljs-quote" xsl:use-attribute-sets="hljs-quote"/>
<style class="hljs-regexp" xsl:use-attribute-sets="hljs-regexp"/>
<style class="hljs-section" xsl:use-attribute-sets="hljs-section"/>
<style class="hljs-selector-attr" xsl:use-attribute-sets="hljs-selector-attr"/>
<style class="hljs-selector-class" xsl:use-attribute-sets="hljs-selector-class"/>
<style class="hljs-selector-id" xsl:use-attribute-sets="hljs-selector-id"/>
<style class="hljs-selector-pseudo" xsl:use-attribute-sets="hljs-selector-pseudo"/>
<style class="hljs-selector-tag" xsl:use-attribute-sets="hljs-selector-tag"/>
<style class="hljs-string" xsl:use-attribute-sets="hljs-string"/>
<style class="hljs-strong" xsl:use-attribute-sets="hljs-strong"/>
<style class="hljs-subst" xsl:use-attribute-sets="hljs-subst"/>
<style class="hljs-symbol" xsl:use-attribute-sets="hljs-symbol"/>
<style class="hljs-tag" xsl:use-attribute-sets="hljs-tag"/>
<!-- <style class="hljs-tag_hljs-attr" xsl:use-attribute-sets="hljs-tag_hljs-attr"></style> -->
<!-- <style class="hljs-tag_hljs-name" xsl:use-attribute-sets="hljs-tag_hljs-name"></style> -->
<style class="hljs-template-tag" xsl:use-attribute-sets="hljs-template-tag"/>
<style class="hljs-template-variable" xsl:use-attribute-sets="hljs-template-variable"/>
<style class="hljs-title" xsl:use-attribute-sets="hljs-title"/>
<style class="hljs-title_and_class_" xsl:use-attribute-sets="hljs-title_and_class_"/>
<style class="hljs-title_and_class__and_inherited__" xsl:use-attribute-sets="hljs-title_and_class__and_inherited__"/>
<style class="hljs-title_and_function_" xsl:use-attribute-sets="hljs-title_and_function_"/>
<style class="hljs-type" xsl:use-attribute-sets="hljs-type"/>
<style class="hljs-variable" xsl:use-attribute-sets="hljs-variable"/>
<style class="hljs-variable_and_language_" xsl:use-attribute-sets="hljs-variable_and_language_"/>
</xsl:variable>
<xsl:variable name="syntax_highlight_styles" select="xalan:nodeset($syntax_highlight_styles_)"/>
<xsl:template match="span" mode="syntax_highlight" priority="2">
<!-- <fo:inline color="green" font-style="italic"><xsl:apply-templates mode="syntax_highlight"/></fo:inline> -->
<fo:inline>
<xsl:variable name="classes_">
<xsl:call-template name="split">
<xsl:with-param name="pText" select="@class"/>
<xsl:with-param name="sep" select="' '"/>
</xsl:call-template>
<!-- a few classes together (_and_ suffix) -->
<xsl:if test="contains(@class, 'hljs-char') and contains(@class, 'escape_')">
<item>hljs-char_and_escape_</item>
</xsl:if>
<xsl:if test="contains(@class, 'hljs-title') and contains(@class, 'class_')">
<item>hljs-title_and_class_</item>
</xsl:if>
<xsl:if test="contains(@class, 'hljs-title') and contains(@class, 'class_') and contains(@class, 'inherited__')">
<item>hljs-title_and_class__and_inherited__</item>
</xsl:if>
<xsl:if test="contains(@class, 'hljs-title') and contains(@class, 'function_')">
<item>hljs-title_and_function_</item>
</xsl:if>
<xsl:if test="contains(@class, 'hljs-variable') and contains(@class, 'language_')">
<item>hljs-variable_and_language_</item>
</xsl:if>
<!-- with parent classes (_ suffix) -->
<xsl:if test="contains(@class, 'hljs-keyword') and contains(ancestor::*/@class, 'hljs-meta')">
<item>hljs-meta_hljs-keyword</item>
</xsl:if>
<xsl:if test="contains(@class, 'hljs-string') and contains(ancestor::*/@class, 'hljs-meta')">
<item>hljs-meta_hljs-string</item>
</xsl:if>
</xsl:variable>
<xsl:variable name="classes" select="xalan:nodeset($classes_)"/>
<xsl:for-each select="$classes/item">
<xsl:variable name="class_name" select="."/>
<xsl:for-each select="$syntax_highlight_styles/style[@class = $class_name]/@*[not(local-name() = 'class')]">
<xsl:attribute name="{local-name()}"><xsl:value-of select="."/></xsl:attribute>
</xsl:for-each>
</xsl:for-each>
<!-- <xsl:variable name="class_name">
<xsl:choose>
<xsl:when test="@class = 'hljs-attr' and ancestor::*/@class = 'hljs-tag'">hljs-tag_hljs-attr</xsl:when>
<xsl:when test="@class = 'hljs-name' and ancestor::*/@class = 'hljs-tag'">hljs-tag_hljs-name</xsl:when>
<xsl:when test="@class = 'hljs-string' and ancestor::*/@class = 'hljs-meta'">hljs-meta_hljs-string</xsl:when>
<xsl:otherwise><xsl:value-of select="@class"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:for-each select="$syntax_highlight_styles/style[@class = $class_name]/@*[not(local-name() = 'class')]">
<xsl:attribute name="{local-name()}"><xsl:value-of select="."/></xsl:attribute>
</xsl:for-each> -->
<xsl:apply-templates mode="syntax_highlight"/></fo:inline>
</xsl:template>
<xsl:template match="text()" mode="syntax_highlight" priority="2">
<xsl:call-template name="add_spaces_to_sourcecode"/>
</xsl:template>
<!-- end mode="syntax_highlight" -->
<xsl:template match="*[local-name() = 'sourcecode']/*[local-name() = 'name']">
<xsl:if test="normalize-space() != ''">
<fo:block xsl:use-attribute-sets="sourcecode-name-style">
<xsl:apply-templates/>
</fo:block>
</xsl:if>
</xsl:template>
<!-- =============== -->
<!-- END sourcecode -->
<!-- =============== -->
<!-- =============== -->
<!-- pre -->
<!-- =============== -->
<xsl:template match="*[local-name()='pre']" name="pre">
<fo:block xsl:use-attribute-sets="pre-style">
<xsl:copy-of select="@id"/>
<xsl:choose>
<xsl:when test="ancestor::*[local-name() = 'sourcecode'][@linenums = 'true'] and ancestor::*[local-name()='td'][1][not(preceding-sibling::*)]"> <!-- pre in the first td in the table with @linenums = 'true' -->
<xsl:if test="ancestor::*[local-name() = 'tr'][1]/following-sibling::*[local-name() = 'tr']"> <!-- is current tr isn't last -->
<xsl:attribute name="margin-top">0pt</xsl:attribute>
<xsl:attribute name="margin-bottom">0pt</xsl:attribute>
</xsl:if>
<fo:instream-foreign-object fox:alt-text="{.}" content-width="95%">
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mtext><xsl:value-of select="."/></mtext>
</math>
</fo:instream-foreign-object>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</fo:block>
</xsl:template>
<!-- =============== -->
<!-- pre -->
<!-- =============== -->
<!-- ========== -->
<!-- permission -->
<!-- ========== -->
<xsl:template match="*[local-name() = 'permission']">
<fo:block id="{@id}" xsl:use-attribute-sets="permission-style">
<xsl:apply-templates select="*[local-name()='name']"/>
<xsl:apply-templates select="node()[not(local-name() = 'name')]"/>
</fo:block>
</xsl:template>
<xsl:template match="*[local-name() = 'permission']/*[local-name() = 'name']">
<xsl:if test="normalize-space() != ''">
<fo:block xsl:use-attribute-sets="permission-name-style">
<xsl:apply-templates/>
</fo:block>
</xsl:if>
</xsl:template>
<xsl:template match="*[local-name() = 'permission']/*[local-name() = 'label']">
<fo:block xsl:use-attribute-sets="permission-label-style">
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<!-- ========== -->
<!-- ========== -->
<!-- ========== -->
<!-- requirement -->
<!-- ========== -->
<xsl:template match="*[local-name() = 'requirement']">
<fo:block id="{@id}" xsl:use-attribute-sets="requirement-style">
<xsl:apply-templates select="*[local-name()='name']"/>
<xsl:apply-templates select="*[local-name()='label']"/>
<xsl:apply-templates select="@obligation"/>
<xsl:apply-templates select="*[local-name()='subject']"/>
<xsl:apply-templates select="node()[not(local-name() = 'name') and not(local-name() = 'label') and not(local-name() = 'subject')]"/>
</fo:block>
</xsl:template>
<xsl:template match="*[local-name() = 'requirement']/*[local-name() = 'name']">
<xsl:if test="normalize-space() != ''">
<fo:block xsl:use-attribute-sets="requirement-name-style">
<xsl:apply-templates/>
<xsl:text>:</xsl:text>
</fo:block>
</xsl:if>
</xsl:template>
<xsl:template match="*[local-name() = 'requirement']/*[local-name() = 'label']">
<fo:block xsl:use-attribute-sets="requirement-label-style">
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="*[local-name() = 'requirement']/@obligation">
<fo:block>
<fo:inline padding-right="3mm">Obligation</fo:inline><xsl:value-of select="."/>
</fo:block>
</xsl:template>
<xsl:template match="*[local-name() = 'requirement']/*[local-name() = 'subject']" priority="2">
<fo:block xsl:use-attribute-sets="subject-style">
<xsl:text>Target Type </xsl:text><xsl:apply-templates/>
</fo:block>
</xsl:template>
<!-- ========== -->
<!-- ========== -->
<!-- ========== -->
<!-- recommendation -->
<!-- ========== -->
<xsl:template match="*[local-name() = 'recommendation']">
<fo:block id="{@id}" xsl:use-attribute-sets="recommendation-style">
<xsl:apply-templates select="*[local-name()='name']"/>
<xsl:apply-templates select="node()[not(local-name() = 'name')]"/>
</fo:block>
</xsl:template>
<xsl:template match="*[local-name() = 'recommendation']/*[local-name() = 'name']">
<xsl:if test="normalize-space() != ''">
<fo:block xsl:use-attribute-sets="recommendation-name-style">
<xsl:apply-templates/>
</fo:block>
</xsl:if>
</xsl:template>
<xsl:template match="*[local-name() = 'recommendation']/*[local-name() = 'label']">
<fo:block xsl:use-attribute-sets="recommendation-label-style">
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<!-- ========== -->
<!-- END recommendation -->
<!-- ========== -->
<!-- ========== -->
<!-- ========== -->
<xsl:template match="*[local-name() = 'subject']">
<fo:block xsl:use-attribute-sets="subject-style">
<xsl:text>Target Type </xsl:text><xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="*[local-name() = 'div']">
<fo:block><xsl:apply-templates/></fo:block>
</xsl:template>
<xsl:template match="*[local-name() = 'inherit'] | *[local-name() = 'component'][@class = 'inherit'] | *[local-name() = 'div'][@type = 'requirement-inherit'] | *[local-name() = 'div'][@type = 'recommendation-inherit'] | *[local-name() = 'div'][@type = 'permission-inherit']">
<fo:block xsl:use-attribute-sets="inherit-style">
<xsl:text>Dependency </xsl:text><xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="*[local-name() = 'description'] | *[local-name() = 'component'][@class = 'description'] | *[local-name() = 'div'][@type = 'requirement-description'] | *[local-name() = 'div'][@type = 'recommendation-description'] | *[local-name() = 'div'][@type = 'permission-description']">
<fo:block xsl:use-attribute-sets="description-style">
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="*[local-name() = 'specification'] | *[local-name() = 'component'][@class = 'specification'] | *[local-name() = 'div'][@type = 'requirement-specification'] | *[local-name() = 'div'][@type = 'recommendation-specification'] | *[local-name() = 'div'][@type = 'permission-specification']">
<fo:block xsl:use-attribute-sets="specification-style">
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="*[local-name() = 'measurement-target'] | *[local-name() = 'component'][@class = 'measurement-target'] | *[local-name() = 'div'][@type = 'requirement-measurement-target'] | *[local-name() = 'div'][@type = 'recommendation-measurement-target'] | *[local-name() = 'div'][@type = 'permission-measurement-target']">
<fo:block xsl:use-attribute-sets="measurement-target-style">
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="*[local-name() = 'verification'] | *[local-name() = 'component'][@class = 'verification'] | *[local-name() = 'div'][@type = 'requirement-verification'] | *[local-name() = 'div'][@type = 'recommendation-verification'] | *[local-name() = 'div'][@type = 'permission-verification']">
<fo:block xsl:use-attribute-sets="verification-style">
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="*[local-name() = 'import'] | *[local-name() = 'component'][@class = 'import'] | *[local-name() = 'div'][@type = 'requirement-import'] | *[local-name() = 'div'][@type = 'recommendation-import'] | *[local-name() = 'div'][@type = 'permission-import']">
<fo:block xsl:use-attribute-sets="import-style">
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="*[local-name() = 'div'][starts-with(@type, 'requirement-component')] | *[local-name() = 'div'][starts-with(@type, 'recommendation-component')] | *[local-name() = 'div'][starts-with(@type, 'permission-component')]">
<fo:block xsl:use-attribute-sets="component-style">
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<!-- ========== -->
<!-- END -->
<!-- ========== -->
<!-- ========== -->
<!-- requirement, recommendation, permission table -->
<!-- ========== -->
<xsl:template match="*[local-name() = 'table'][@class = 'recommendation' or @class='requirement' or @class='permission']">
<fo:block-container margin-left="0mm" margin-right="0mm" margin-bottom="12pt" role="SKIP">
<xsl:if test="ancestor::*[local-name() = 'table'][@class = 'recommendation' or @class='requirement' or @class='permission']">
<xsl:attribute name="margin-bottom">0pt</xsl:attribute>
</xsl:if>
<fo:block-container margin-left="0mm" margin-right="0mm" role="SKIP">
<fo:table id="{@id}" table-layout="fixed" width="100%"> <!-- border="1pt solid black" -->
<xsl:if test="ancestor::*[local-name() = 'table'][@class = 'recommendation' or @class='requirement' or @class='permission']">
<!-- <xsl:attribute name="border">0.5pt solid black</xsl:attribute> -->
</xsl:if>
<xsl:variable name="simple-table">
<xsl:call-template name="getSimpleTable">
<xsl:with-param name="id" select="@id"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="cols-count" select="count(xalan:nodeset($simple-table)//tr[1]/td)"/>
<xsl:if test="$cols-count = 2 and not(ancestor::*[local-name()='table'])">
<fo:table-column column-width="30%"/>
<fo:table-column column-width="70%"/>
</xsl:if>
<xsl:apply-templates mode="requirement"/>
</fo:table>
<!-- fn processing -->
<xsl:if test=".//*[local-name() = 'fn']">
<xsl:for-each select="*[local-name() = 'tbody']">
<fo:block font-size="90%" border-bottom="1pt solid black">
<xsl:call-template name="table_fn_display"/>
</fo:block>
</xsl:for-each>
</xsl:if>
</fo:block-container>
</fo:block-container>
</xsl:template>
<xsl:template match="*[local-name()='thead']" mode="requirement">
<fo:table-header>
<xsl:apply-templates mode="requirement"/>
</fo:table-header>
</xsl:template>
<xsl:template match="*[local-name()='tbody']" mode="requirement">
<fo:table-body>
<xsl:apply-templates mode="requirement"/>
</fo:table-body>
</xsl:template>
<xsl:template match="*[local-name()='tr']" mode="requirement">
<fo:table-row height="7mm" border-bottom="0.5pt solid grey">
<xsl:if test="parent::*[local-name()='thead'] or starts-with(*[local-name()='td' or local-name()='th'][1], 'Requirement ') or starts-with(*[local-name()='td' or local-name()='th'][1], 'Recommendation ')">
<xsl:attribute name="font-weight">bold</xsl:attribute>
</xsl:if>
<xsl:apply-templates mode="requirement"/>
</fo:table-row>
</xsl:template>
<xsl:template match="*[local-name()='th']" mode="requirement">
<fo:table-cell text-align="{@align}" display-align="center" padding="1mm" padding-left="2mm"> <!-- border="0.5pt solid black" -->
<xsl:call-template name="setTextAlignment">
<xsl:with-param name="default">left</xsl:with-param>
</xsl:call-template>
<xsl:call-template name="setTableCellAttributes"/>
<fo:block role="SKIP">
<xsl:apply-templates/>
</fo:block>
</fo:table-cell>
</xsl:template>
<xsl:template match="*[local-name()='td']" mode="requirement">
<fo:table-cell text-align="{@align}" display-align="center" padding="1mm" padding-left="2mm"> <!-- border="0.5pt solid black" -->
<xsl:if test="*[local-name() = 'table'][@class = 'recommendation' or @class='requirement' or @class='permission']">
<xsl:attribute name="padding">0mm</xsl:attribute>
<xsl:attribute name="padding-left">0mm</xsl:attribute>
</xsl:if>
<xsl:call-template name="setTextAlignment">
<xsl:with-param name="default">left</xsl:with-param>
</xsl:call-template>
<xsl:if test="following-sibling::*[local-name()='td'] and not(preceding-sibling::*[local-name()='td'])">
<xsl:attribute name="font-weight">bold</xsl:attribute>
</xsl:if>
<xsl:call-template name="setTableCellAttributes"/>
<fo:block role="SKIP">
<xsl:apply-templates/>
</fo:block>
</fo:table-cell>
</xsl:template>
<xsl:template match="*[local-name() = 'p'][@class='RecommendationTitle' or @class = 'RecommendationTestTitle']" priority="2">
<fo:block font-size="11pt">
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="*[local-name() = 'p2'][ancestor::*[local-name() = 'table'][@class = 'recommendation' or @class='requirement' or @class='permission']]">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<!-- ========== -->
<!-- END requirement, recommendation, permission table -->
<!-- ========== -->
<!-- ====== -->
<!-- termexample -->
<!-- ====== -->
<xsl:template match="*[local-name() = 'termexample']">
<fo:block id="{@id}" xsl:use-attribute-sets="termexample-style">
<xsl:call-template name="refine_termexample-style"/>
<xsl:call-template name="setBlockSpanAll"/>
<xsl:apply-templates select="*[local-name()='name']"/>
<xsl:apply-templates select="node()[not(local-name() = 'name')]"/>
</fo:block>
</xsl:template>
<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/> <!-- 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']">
<xsl:variable name="element">inline
</xsl:variable>
<xsl:choose>
<xsl:when test="contains($element, 'block')">
<fo:block xsl:use-attribute-sets="example-p-style">
<xsl:apply-templates/>
</fo:block>
</xsl:when>
<xsl:otherwise>
<fo:inline><xsl:apply-templates/></fo:inline>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- ====== -->
<!-- ====== -->
<!-- ====== -->
<!-- example -->
<!-- ====== -->
<!-- There are a few cases:
1. EXAMPLE text
2. EXAMPLE
text
3. EXAMPLE text line 1
text line 2
4. EXAMPLE
text line 1
text line 2
-->
<xsl:template match="*[local-name() = 'example']">
<fo:block-container id="{@id}" xsl:use-attribute-sets="example-style" role="SKIP">
<xsl:call-template name="setBlockSpanAll"/>
<xsl:call-template name="refine_example-style"/>
<xsl:variable name="fo_element">
<xsl:if test=".//*[local-name() = 'table'] or .//*[local-name() = 'dl'] or *[not(local-name() = 'name')][1][local-name() = 'sourcecode']">block</xsl:if>
<xsl:choose>
<xsl:when test="$layoutVersion = '1951' and $revision_date_num < 19610101">list</xsl:when>
<xsl:otherwise>inline</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<fo:block-container margin-left="0mm" role="SKIP">
<xsl:choose>
<xsl:when test="contains(normalize-space($fo_element), 'block')">
<!-- display name 'EXAMPLE' in a separate block -->
<fo:block>
<xsl:apply-templates select="*[local-name()='name']">
<xsl:with-param name="fo_element" select="$fo_element"/>
</xsl:apply-templates>
</fo:block>
<fo:block-container xsl:use-attribute-sets="example-body-style" role="SKIP">
<fo:block-container margin-left="0mm" margin-right="0mm" role="SKIP">
<xsl:variable name="example_body">
<xsl:apply-templates select="node()[not(local-name() = 'name')]">
<xsl:with-param name="fo_element" select="$fo_element"/>
</xsl:apply-templates>
</xsl:variable>
<xsl:choose>
<xsl:when test="xalan:nodeset($example_body)/*">
<xsl:copy-of select="$example_body"/>
</xsl:when>
<xsl:otherwise><fo:block/><!-- prevent empty block-container --></xsl:otherwise>
</xsl:choose>
</fo:block-container>
</fo:block-container>
</xsl:when> <!-- end block -->
<xsl:when test="contains(normalize-space($fo_element), 'list')">
<xsl:variable name="provisional_distance_between_starts_">
45
</xsl:variable>
<xsl:variable name="provisional_distance_between_starts" select="normalize-space($provisional_distance_between_starts_)"/>
<xsl:variable name="indent_">
28
</xsl:variable>
<xsl:variable name="indent" select="normalize-space($indent_)"/>
<fo:list-block provisional-distance-between-starts="{$provisional_distance_between_starts}mm">
<fo:list-item>
<fo:list-item-label start-indent="{$indent}mm" end-indent="label-end()">
<fo:block>
<xsl:apply-templates select="*[local-name()='name']">
<xsl:with-param name="fo_element">block</xsl:with-param>
</xsl:apply-templates>
</fo:block>
</fo:list-item-label>
<fo:list-item-body start-indent="body-start()">
<fo:block>
<xsl:apply-templates select="node()[not(local-name() = 'name')]">
<xsl:with-param name="fo_element" select="$fo_element"/>
</xsl:apply-templates>
</fo:block>
</fo:list-item-body>
</fo:list-item>
</fo:list-block>
</xsl:when> <!-- end list -->
<xsl:otherwise> <!-- inline -->
<!-- display 'EXAMPLE' and first element in the same line -->
<fo:block>
<xsl:apply-templates select="*[local-name()='name']">
<xsl:with-param name="fo_element" select="$fo_element"/>
</xsl:apply-templates>
<fo:inline>
<xsl:apply-templates select="*[not(local-name() = 'name')][1]">
<xsl:with-param name="fo_element" select="$fo_element"/>
</xsl:apply-templates>
</fo:inline>
</fo:block>
<xsl:if test="*[not(local-name() = 'name')][position() > 1]">
<!-- display further elements in blocks -->
<fo:block-container xsl:use-attribute-sets="example-body-style" role="SKIP">
<fo:block-container margin-left="0mm" margin-right="0mm" role="SKIP">
<xsl:apply-templates select="*[not(local-name() = 'name')][position() > 1]">
<xsl:with-param name="fo_element" select="'block'"/>
</xsl:apply-templates>
</fo:block-container>
</fo:block-container>
</xsl:if>
</xsl:otherwise> <!-- end inline -->
</xsl:choose>
</fo:block-container>
</fo:block-container>
</xsl:template>
<xsl:template match="*[local-name() = 'example']/*[local-name() = 'name']">
<xsl:param name="fo_element">block</xsl:param>
<xsl:choose>
<xsl:when test="ancestor::*[local-name() = 'appendix']">
<fo:inline>
<xsl:apply-templates/>
</fo:inline>
</xsl:when>
<xsl:when test="contains(normalize-space($fo_element), 'block')">
<fo:block xsl:use-attribute-sets="example-name-style">
<xsl:apply-templates/>
</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/> <!-- $namespace = 'ieee', see https://github.com/metanorma/isodoc/issues/614 -->
</fo:inline>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="*[local-name() = 'table']/*[local-name() = 'example']/*[local-name() = 'name']">
<fo:inline xsl:use-attribute-sets="example-name-style">
<xsl:apply-templates/>
</fo:inline>
</xsl:template>
<xsl:template match="*[local-name() = 'example']/*[local-name() = 'p']">
<xsl:param name="fo_element">block</xsl:param>
<xsl:variable name="num"><xsl:number/></xsl:variable>
<xsl:variable name="element">
<xsl:choose>
<xsl:when test="$num = 1 and not(contains($fo_element, 'block'))">inline</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="$layoutVersion = '1951' and $revision_date_num < 19610101">list</xsl:when>
<xsl:otherwise>block</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
<xsl:value-of select="$fo_element"/>
</xsl:variable>
<xsl:choose>
<xsl:when test="starts-with(normalize-space($element), 'block')">
<fo:block-container role="SKIP">
<xsl:if test="ancestor::*[local-name() = 'li'] and contains(normalize-space($fo_element), 'block')">
<xsl:attribute name="margin-left">0mm</xsl:attribute>
<xsl:attribute name="margin-right">0mm</xsl:attribute>
</xsl:if>
<fo:block xsl:use-attribute-sets="example-p-style">
<xsl:call-template name="refine_example-p-style"/>
<xsl:apply-templates/>
</fo:block>
</fo:block-container>
</xsl:when>
<xsl:when test="starts-with(normalize-space($element), 'list')">
<fo:block xsl:use-attribute-sets="example-p-style">
<xsl:apply-templates/>
</fo:block>
</xsl:when>
<xsl:otherwise>
<fo:inline xsl:use-attribute-sets="example-p-style">
<xsl:apply-templates/>
</fo:inline>
</xsl:otherwise>
</xsl:choose>
</xsl:template> <!-- example/p -->
<!-- ====== -->
<!-- ====== -->
<!-- ====== -->
<!-- termsource -->
<!-- origin -->
<!-- modification -->
<!-- ====== -->
<xsl:template match="*[local-name() = 'termsource']" name="termsource">
<fo:block xsl:use-attribute-sets="termsource-style">
<xsl:call-template name="refine_termsource-style"/>
<!-- Example: [SOURCE: ISO 5127:2017, 3.1.6.02] -->
<xsl:variable name="termsource_text">
<xsl:apply-templates/>
</xsl:variable>
<xsl:copy-of select="$termsource_text"/>
<!-- <xsl:choose>
<xsl:when test="starts-with(normalize-space($termsource_text), '[')">
<xsl:copy-of select="$termsource_text"/>
</xsl:when>
<xsl:otherwise>
<xsl:if test="$namespace = 'bsi'">
<xsl:choose>
<xsl:when test="$document_type = 'PAS' and starts-with(*[local-name() = 'origin']/@citeas, '[')"><xsl:text>{</xsl:text></xsl:when>
<xsl:otherwise><xsl:text>[</xsl:text></xsl:otherwise>
</xsl:choose>
</xsl:if>
<xsl:if test="$namespace = 'gb' or $namespace = 'iso' or $namespace = 'iec' or $namespace = 'itu' or $namespace = 'unece' or $namespace = 'unece-rec' or $namespace = 'nist-cswp' or $namespace = 'nist-sp' or $namespace = 'ogc-white-paper' or $namespace = 'csa' or $namespace = 'csd' or $namespace = 'm3d' or $namespace = 'iho' or $namespace = 'bipm' or $namespace = 'jcgm'">
<xsl:text>[</xsl:text>
</xsl:if>
<xsl:copy-of select="$termsource_text"/>
<xsl:if test="$namespace = 'bsi'">
<xsl:choose>
<xsl:when test="$document_type = 'PAS' and starts-with(*[local-name() = 'origin']/@citeas, '[')"><xsl:text>}</xsl:text></xsl:when>
<xsl:otherwise><xsl:text>]</xsl:text></xsl:otherwise>
</xsl:choose>
</xsl:if>
<xsl:if test="$namespace = 'gb' or $namespace = 'iso' or $namespace = 'iec' or $namespace = 'itu' or $namespace = 'unece' or $namespace = 'unece-rec' or $namespace = 'nist-cswp' or $namespace = 'nist-sp' or $namespace = 'ogc-white-paper' or $namespace = 'csa' or $namespace = 'csd' or $namespace = 'm3d' or $namespace = 'iho' or $namespace = 'bipm' or $namespace = 'jcgm'">
<xsl:text>]</xsl:text>
</xsl:if>
</xsl:otherwise>
</xsl:choose> -->
</fo:block>
</xsl:template>
<xsl:template match="*[local-name() = 'termsource']/text()[starts-with(., '[SOURCE: Adapted from: ') or starts-with(., '[SOURCE: Quoted from: ') or starts-with(., '[SOURCE: Modified from: ')]" priority="2">
<xsl:text>[</xsl:text><xsl:value-of select="substring-after(., '[SOURCE: ')"/>
</xsl:template>
<xsl:template match="*[local-name() = 'termsource']/text()">
<xsl:if test="normalize-space() != ''">
<xsl:value-of select="."/>
</xsl:if>
</xsl:template>
<!-- text SOURCE: -->
<xsl:template match="*[local-name() = 'termsource']/*[local-name() = 'strong'][1][following-sibling::*[1][local-name() = 'origin']]/text()">
<fo:inline xsl:use-attribute-sets="termsource-text-style">
<xsl:value-of select="."/>
</fo:inline>
</xsl:template>
<xsl:template match="*[local-name() = 'origin']">
<xsl:call-template name="insert_basic_link">
<xsl:with-param name="element">
<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:use-attribute-sets="origin-style">
<xsl:apply-templates/>
</fo:inline>
</fo:basic-link>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<!-- not using, see https://github.com/glossarist/iev-document/issues/23 -->
<xsl:template match="*[local-name() = 'modification']">
<xsl:variable name="title-modified">
<xsl:call-template name="getLocalizedString">
<xsl:with-param name="key">modified</xsl:with-param>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="text"><xsl:apply-templates/></xsl:variable>
<xsl:choose>
<xsl:when test="$lang = 'zh'"><xsl:text>、</xsl:text><xsl:value-of select="$title-modified"/><xsl:if test="normalize-space($text) != ''"><xsl:text>—</xsl:text></xsl:if></xsl:when>
<xsl:otherwise><xsl:text>, </xsl:text><xsl:value-of select="$title-modified"/><xsl:if test="normalize-space($text) != ''"><xsl:text> — </xsl:text></xsl:if></xsl:otherwise>
</xsl:choose>
<xsl:apply-templates/>
</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() != ''">
<!-- <xsl:value-of select="."/> -->
<xsl:call-template name="text"/>
</xsl:if>
</xsl:template>
<!-- ====== -->
<!-- ====== -->
<!-- ====== -->
<!-- qoute -->
<!-- source -->
<!-- author -->
<!-- ====== -->
<xsl:template match="*[local-name() = 'quote']">
<fo:block-container margin-left="0mm" role="SKIP">
<xsl:call-template name="setBlockSpanAll"/>
<xsl:if test="parent::*[local-name() = 'note']">
<xsl:if test="not(ancestor::*[local-name() = 'table'])">
<xsl:attribute name="margin-left">5mm</xsl:attribute>
</xsl:if>
</xsl:if>
<fo:block-container margin-left="0mm" role="SKIP">
<fo:block-container xsl:use-attribute-sets="quote-style" role="SKIP">
<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') 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'] 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>
</xsl:template>
<xsl:template match="*[local-name() = 'source']">
<xsl:if test="../*[local-name() = 'author']">
<xsl:text>, </xsl:text>
</xsl:if>
<xsl:call-template name="insert_basic_link">
<xsl:with-param name="element">
<fo:basic-link internal-destination="{@bibitemid}" fox:alt-text="{@citeas}">
<xsl:apply-templates/>
</fo:basic-link>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template match="*[local-name() = 'author']">
<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']">
<xsl:copy-of select="."/>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="bibitems" select="xalan:nodeset($bibitems_)"/>
<!-- get all hidden bibitems to exclude them from eref/origin processing -->
<xsl:variable name="bibitems_hidden_">
<xsl:for-each select="//*[local-name() = 'bibitem'][@hidden='true']">
<xsl:copy-of select="."/>
</xsl:for-each>
<xsl:for-each select="//*[local-name() = 'references'][@hidden='true']//*[local-name() = 'bibitem']">
<xsl:copy-of select="."/>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="bibitems_hidden" select="xalan:nodeset($bibitems_hidden_)"/>
<!-- ====== -->
<!-- eref -->
<!-- ====== -->
<xsl:template match="*[local-name() = 'eref']" name="eref">
<xsl:variable name="current_bibitemid" select="@bibitemid"/>
<!-- <xsl:variable name="external-destination" select="normalize-space(key('bibitems', $current_bibitemid)/*[local-name() = 'uri'][@type = 'citation'])"/> -->
<xsl:variable name="external-destination" select="normalize-space($bibitems/*[local-name() ='bibitem'][@id = $current_bibitemid]/*[local-name() = 'uri'][@type = 'citation'])"/>
<xsl:choose>
<!-- <xsl:when test="$external-destination != '' or not(key('bibitems_hidden', $current_bibitemid))"> --> <!-- if in the bibliography there is the item with @bibitemid (and not hidden), then create link (internal to the bibitem or external) -->
<xsl:when test="$external-destination != '' or not($bibitems_hidden/*[local-name() ='bibitem'][@id = $current_bibitemid])"> <!-- if in the bibliography there is the item with @bibitemid (and not hidden), then create link (internal to the bibitem or external) -->
<fo:inline xsl:use-attribute-sets="eref-style">
<xsl:if test="@type = 'footnote'">
<xsl:attribute name="keep-together.within-line">always</xsl:attribute>
<xsl:attribute name="keep-with-previous.within-line">always</xsl:attribute>
<xsl:attribute name="vertical-align">super</xsl:attribute>
<xsl:attribute name="font-size">80%</xsl:attribute>
</xsl:if>
<xsl:call-template name="refine_eref-style"/>
<xsl:call-template name="insert_basic_link">
<xsl:with-param name="element">
<fo:basic-link fox:alt-text="{@citeas}">
<xsl:if test="normalize-space(@citeas) = ''">
<xsl:attribute name="fox:alt-text"><xsl:value-of select="."/></xsl:attribute>
</xsl:if>
<xsl:if test="@type = 'inline'">
<xsl:call-template name="refine_basic_link_style"/>
</xsl:if>
<xsl:choose>
<xsl:when test="$external-destination != ''"> <!-- external hyperlink -->
<xsl:attribute name="external-destination"><xsl:value-of select="$external-destination"/></xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="internal-destination"><xsl:value-of select="@bibitemid"/></xsl:attribute>
</xsl:otherwise>
</xsl:choose>
<xsl:apply-templates/>
</fo:basic-link>
</xsl:with-param>
</xsl:call-template>
</fo:inline>
</xsl:when>
<xsl:otherwise> <!-- if there is key('bibitems_hidden', $current_bibitemid) -->
<!-- if in bibitem[@hidden='true'] there is url[@type='src'], then create hyperlink -->
<xsl:variable name="uri_src" select="normalize-space($bibitems_hidden/*[local-name() ='bibitem'][@id = $current_bibitemid]/*[local-name() = 'uri'][@type = 'src'])"/>
<xsl:choose>
<xsl:when test="$uri_src != ''">
<fo:basic-link external-destination="{$uri_src}" fox:alt-text="{$uri_src}"><xsl:apply-templates/></fo:basic-link>
</xsl:when>
<xsl:otherwise><fo:inline><xsl:apply-templates/></fo:inline></xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="refine_basic_link_style">
</xsl:template> <!-- refine_basic_link_style -->
<!-- ====== -->
<!-- END eref -->
<!-- ====== -->
<!-- Tabulation processing -->
<xsl:template match="*[local-name() = 'tab']">
<!-- zero-space char -->
<xsl:variable name="depth">
<xsl:call-template name="getLevel">
<xsl:with-param name="depth" select="../@depth"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="padding">
<xsl:choose>
<xsl:when test="$layoutVersion = '1951'">2</xsl:when>
<xsl:when test="$depth = 2">3</xsl:when>
<xsl:otherwise>4</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="padding-right">
<xsl:choose>
<xsl:when test="normalize-space($padding) = ''">0</xsl:when>
<xsl:otherwise>
<xsl:value-of select="normalize-space($padding)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:if test="$layoutVersion = '1951' and $depth = 1">.</xsl:if>
<xsl:choose>
<xsl:when test="$lang = 'zh'">
<fo:inline role="SKIP"><xsl:value-of select="$tab_zh"/></fo:inline>
</xsl:when>
<xsl:when test="../../@inline-header = 'true'">
<fo:inline font-size="90%" role="SKIP">
<xsl:call-template name="insertNonBreakSpaces">
<xsl:with-param name="count" select="$padding-right"/>
</xsl:call-template>
</fo:inline>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="direction"><xsl:if test="$lang = 'ar'"><xsl:value-of select="$RLM"/></xsl:if></xsl:variable>
<fo:inline padding-right="{$padding-right}mm" role="SKIP"><xsl:value-of select="$direction"/></fo:inline>
</xsl:otherwise>
</xsl:choose>
</xsl:template> <!-- tab -->
<xsl:template name="insertNonBreakSpaces">
<xsl:param name="count"/>
<xsl:if test="$count > 0">
<xsl:text> </xsl:text>
<xsl:call-template name="insertNonBreakSpaces">
<xsl:with-param name="count" select="$count - 1"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
<!-- Preferred, admitted, deprecated -->
<xsl:template match="*[local-name() = 'preferred']">
<xsl:variable name="level">
<xsl:call-template name="getLevel"/>
</xsl:variable>
<xsl:variable name="font-size">
inherit
</xsl:variable>
<xsl:variable name="levelTerm">
<xsl:call-template name="getLevelTermName"/>
</xsl:variable>
<fo:block font-size="{normalize-space($font-size)}" role="H{$levelTerm}" xsl:use-attribute-sets="preferred-block-style">
<xsl:if test="parent::*[local-name() = 'term'] and not(preceding-sibling::*[local-name() = 'preferred'])"> <!-- if first preffered in term, then display term's name -->
<fo:block xsl:use-attribute-sets="term-name-style" role="SKIP">
<xsl:apply-templates select="ancestor::*[local-name() = 'term'][1]/*[local-name() = 'name']"/>
</fo:block>
</xsl:if>
<fo:block xsl:use-attribute-sets="preferred-term-style" role="SKIP">
<xsl:call-template name="setStyle_preferred"/>
<xsl:apply-templates/>
</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: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/>
</fo:block>
</xsl:template>
<xsl:template match="*[local-name() = 'deprecates']">
<fo:block xsl:use-attribute-sets="deprecates-style">
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template name="setStyle_preferred">
<xsl:if test="*[local-name() = 'strong']">
<xsl:attribute name="font-weight">normal</xsl:attribute>
</xsl:if>
</xsl:template>
<!-- regarding ISO 10241-1:2011, If there is more than one preferred term, each preferred term follows the previous one on a new line. -->
<!-- in metanorma xml preferred terms delimited by semicolons -->
<xsl:template match="*[local-name() = 'preferred']/text()[contains(., ';')] | *[local-name() = 'preferred']/*[local-name() = 'strong']/text()[contains(., ';')]">
<xsl:value-of select="java:replaceAll(java:java.lang.String.new(.), ';', $linebreak)"/>
</xsl:template>
<!-- End Preferred, admitted, deprecated -->
<!-- ========== -->
<!-- definition -->
<!-- ========== -->
<xsl:template match="*[local-name() = 'definition']">
<fo:block xsl:use-attribute-sets="definition-style" role="SKIP">
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="*[local-name() = 'definition'][preceding-sibling::*[local-name() = 'domain']]">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="*[local-name() = 'definition'][preceding-sibling::*[local-name() = 'domain']]/*[local-name() = 'p'][1]">
<fo:inline> <xsl:apply-templates/></fo:inline>
<fo:block/>
</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>
<!-- note: @top-level added in mode=" update_xml_step_move_pagebreak" -->
<xsl:template match="*[local-name() = 'sections']/*[local-name() = 'page_sequence']/*[not(@top-level)]" priority="2">
<xsl:choose>
<xsl:when test="local-name() = 'clause' and normalize-space() = '' and count(*) = 0"/>
<xsl:otherwise>
<xsl:call-template name="sections_node"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- page_sequence/sections/clause -->
<xsl:template match="*[local-name() = 'page_sequence']/*[local-name() = 'sections']/*[not(@top-level)]" priority="2">
<xsl:choose>
<xsl:when test="local-name() = 'clause' and normalize-space() = '' and count(*) = 0"/>
<xsl:otherwise>
<xsl:call-template name="sections_node"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="sections_element_style">
<xsl:variable name="pos"><xsl:number count="*"/></xsl:variable>
<xsl:if test="$pos >= 2">
<xsl:attribute name="space-before">18pt</xsl:attribute>
</xsl:if>
</xsl:template> <!-- sections_element_style -->
<xsl:template match="//*[contains(local-name(), '-standard')]/*[local-name() = 'preface']/*" priority="2" name="preface_node"> <!-- /*/*[local-name() = 'preface']/* -->
<xsl:choose>
<xsl:when test="$layoutVersion = '1951' and (local-name() = 'clause' or local-name() = 'introduction')"/>
<xsl:when test="$layoutVersion = '1987' and $doctype = 'technical-report'"/>
<xsl:otherwise>
<fo:block break-after="page"/>
</xsl:otherwise>
</xsl:choose>
<fo:block>
<xsl:call-template name="setId"/>
<xsl:call-template name="addReviewHelper"/>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<!-- preface/ page_sequence/clause -->
<xsl:template match="*[local-name() = 'preface']/*[local-name() = 'page_sequence']/*[not(@top-level)]" priority="2"> <!-- /*/*[local-name() = 'preface']/* -->
<xsl:choose>
<xsl:when test="local-name() = 'clause' and normalize-space() = '' and count(*) = 0"/>
<xsl:otherwise>
<xsl:call-template name="preface_node"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- page_sequence/preface/clause -->
<xsl:template match="*[local-name() = 'page_sequence']/*[local-name() = 'preface']/*[not(@top-level)]" priority="2"> <!-- /*/*[local-name() = 'preface']/* -->
<xsl:choose>
<xsl:when test="local-name() = 'clause' and normalize-space() = '' and count(*) = 0"/>
<xsl:otherwise>
<xsl:call-template name="preface_node"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="*[local-name() = 'clause'][normalize-space() != '' or *[local-name() = 'figure'] or @id]" name="template_clause"> <!-- if clause isn't empty -->
<fo:block>
<xsl:if test="parent::*[local-name() = 'copyright-statement']">
<xsl:attribute name="role">SKIP</xsl:attribute>
</xsl:if>
<xsl:call-template name="setId"/>
<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">
</xsl:template> <!-- refine_clause_style -->
<xsl:template match="*[local-name() = 'definitions']">
<fo:block id="{@id}">
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="*[local-name() = 'annex'][normalize-space() != '']">
<xsl:choose>
<xsl:when test="@continue = 'true'"> <!-- it's using for figure/table on top level for block span -->
<fo:block>
<xsl:apply-templates/>
</fo:block>
</xsl:when>
<xsl:otherwise>
<fo:block break-after="page"/>
<fo:block id="{@id}">
<xsl:call-template name="setBlockSpanAll"/>
<xsl:call-template name="refine_annex_style"/>
</fo:block>
<xsl:apply-templates select="*[local-name() = 'title'][@columns = 1]"/>
<fo:block>
<xsl:apply-templates select="node()[not(local-name() = 'title' and @columns = 1)]"/>
</fo:block>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="refine_annex_style">
</xsl:template>
<xsl:template match="*[local-name() = 'review']"> <!-- 'review' will be processed in mn2pdf/review.xsl -->
<!-- comment 2019-11-29 -->
<!-- <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']"/>
<xsl:template match="*[local-name() = 'name']/text()">
<!-- 0xA0 to space replacement -->
<xsl:value-of select="java:replaceAll(java:java.lang.String.new(.),' ',' ')"/>
</xsl:template>
<!-- ===================================== -->
<!-- Lists processing -->
<!-- ===================================== -->
<xsl:variable name="ul_labels_">
<xsl:choose>
<xsl:when test="$layoutVersion = '1951'">
<label>–</label> <!-- en dash -->
</xsl:when>
<xsl:otherwise>
<label>—</label> <!-- em dash -->
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="ul_labels" select="xalan:nodeset($ul_labels_)"/>
<xsl:template name="setULLabel">
<xsl:variable name="list_level__">
<xsl:value-of select="count(ancestor::*[local-name() = 'ul']) + count(ancestor::*[local-name() = 'ol'])"/>
</xsl:variable>
<xsl:variable name="list_level_" select="number($list_level__)"/>
<xsl:variable name="list_level">
<xsl:choose>
<xsl:when test="$list_level_ <= 3"><xsl:value-of select="$list_level_"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$list_level_ mod 3"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:choose>
<xsl:when test="$ul_labels/label[not(@level)]"> <!-- one label for all levels -->
<xsl:apply-templates select="$ul_labels/label[not(@level)]" mode="ul_labels"/>
</xsl:when>
<xsl:when test="$list_level mod 3 = 0">
<xsl:apply-templates select="$ul_labels/label[@level = 3]" mode="ul_labels"/>
</xsl:when>
<xsl:when test="$list_level mod 2 = 0">
<xsl:apply-templates select="$ul_labels/label[@level = 2]" mode="ul_labels"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="$ul_labels/label[@level = 1]" mode="ul_labels"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="label" mode="ul_labels">
<xsl:copy-of select="@*[not(local-name() = 'level')]"/>
<xsl:value-of select="."/>
</xsl:template>
<xsl:template name="getListItemFormat">
<!-- Example: for BSI <?list-type loweralpha?> -->
<xsl:variable name="processing_instruction_type" select="normalize-space(../preceding-sibling::*[1]/processing-instruction('list-type'))"/>
<xsl:choose>
<xsl:when test="local-name(..) = 'ul'">
<xsl:choose>
<xsl:when test="normalize-space($processing_instruction_type) = 'simple'"/>
<xsl:otherwise><xsl:call-template name="setULLabel"/></xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="local-name(..) = 'ol' and @label"> <!-- for ordered lists 'ol', and if there is @label, for instance label="1.1.2" -->
<xsl:variable name="type" select="../@type"/>
<xsl:variable name="label">
<xsl:variable name="style_prefix_">
<xsl:if test="$type = 'roman'">
<!-- Example: (i) -->
</xsl:if>
<xsl:if test="$type = 'alphabet'">
<xsl:if test="$layoutVersion = '1951'">(</xsl:if> <!-- Example: (a) -->
</xsl:if>
</xsl:variable>
<xsl:variable name="style_prefix" select="normalize-space($style_prefix_)"/>
<xsl:variable name="style_suffix_">
<xsl:choose>
<xsl:when test="$type = 'arabic'">
)
</xsl:when>
<xsl:when test="$type = 'alphabet' or $type = 'alphabetic'">
)
</xsl:when>
<xsl:when test="$type = 'alphabet_upper' or $type = 'alphabetic_upper'">
.
</xsl:when>
<xsl:when test="$type = 'roman'">
)
</xsl:when>
<xsl:when test="$type = 'roman_upper'">.</xsl:when> <!-- Example: I. -->
</xsl:choose>
</xsl:variable>
<xsl:variable name="style_suffix" select="normalize-space($style_suffix_)"/>
<xsl:if test="$style_prefix != '' and not(starts-with(@label, $style_prefix))">
<xsl:value-of select="$style_prefix"/>
</xsl:if>
<xsl:value-of select="@label"/>
<xsl:if test="not(java:endsWith(java:java.lang.String.new(@label),$style_suffix))">
<xsl:value-of select="$style_suffix"/>
</xsl:if>
</xsl:variable>
<xsl:choose>
<xsl:when test="$layoutVersion = '1951' and $type = 'alphabet'">(<fo:inline font-style="italic"><xsl:value-of select="@label"/></fo:inline>)</xsl:when>
<xsl:otherwise>
<xsl:value-of select="normalize-space($label)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise> <!-- for ordered lists 'ol' -->
<!-- Example: for BSI <?list-start 2?> -->
<xsl:variable name="processing_instruction_start" select="normalize-space(../preceding-sibling::*[1]/processing-instruction('list-start'))"/>
<xsl:variable name="start_value">
<xsl:choose>
<xsl:when test="normalize-space($processing_instruction_start) != ''">
<xsl:value-of select="number($processing_instruction_start) - 1"/><!-- if start="3" then start_value=2 + xsl:number(1) = 3 -->
</xsl:when>
<xsl:when test="normalize-space(../@start) != ''">
<xsl:value-of select="number(../@start) - 1"/><!-- if start="3" then start_value=2 + xsl:number(1) = 3 -->
</xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="curr_value"><xsl:number/></xsl:variable>
<xsl:variable name="type">
<xsl:choose>
<xsl:when test="normalize-space($processing_instruction_type) != ''"><xsl:value-of select="$processing_instruction_type"/></xsl:when>
<xsl:when test="normalize-space(../@type) != ''"><xsl:value-of select="../@type"/></xsl:when>
<xsl:otherwise> <!-- if no @type or @class = 'steps' -->
<xsl:variable name="list_level_" select="count(ancestor::*[local-name() = 'ul']) + count(ancestor::*[local-name() = 'ol'])"/>
<xsl:variable name="list_level">
<xsl:choose>
<xsl:when test="$list_level_ <= 5"><xsl:value-of select="$list_level_"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$list_level_ mod 5"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:choose>
<xsl:when test="$list_level mod 5 = 0">roman_upper</xsl:when> <!-- level 5 -->
<xsl:when test="$list_level mod 4 = 0">alphabet_upper</xsl:when> <!-- level 4 -->
<xsl:when test="$list_level mod 3 = 0">roman</xsl:when> <!-- level 3 -->
<xsl:when test="$list_level mod 2 = 0 and ancestor::*/@class = 'steps'">alphabet</xsl:when> <!-- level 2 and @class = 'steps'-->
<xsl:when test="$list_level mod 2 = 0">arabic</xsl:when> <!-- level 2 -->
<xsl:otherwise> <!-- level 1 -->
<xsl:choose>
<xsl:when test="ancestor::*/@class = 'steps'">arabic</xsl:when>
<xsl:otherwise>alphabet</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="format">
<xsl:choose>
<xsl:when test="$type = 'arabic'">
1)
</xsl:when>
<xsl:when test="$type = 'alphabet' or $type = 'alphabetic'">
a)
</xsl:when>
<xsl:when test="$type = 'alphabet_upper' or $type = 'alphabetic_upper'">
A.
</xsl:when>
<xsl:when test="$type = 'roman'">
i)
</xsl:when>
<xsl:when test="$type = 'roman_upper'">I.</xsl:when>
<xsl:otherwise>1.</xsl:otherwise> <!-- for any case, if $type has non-determined value, not using -->
</xsl:choose>
</xsl:variable>
<xsl:number value="$start_value + $curr_value" format="{normalize-space($format)}" lang="en"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="*[local-name() = 'ul'] | *[local-name() = 'ol']">
<xsl:param name="indent">0</xsl:param>
<xsl:choose>
<xsl:when test="parent::*[local-name() = 'note'] or parent::*[local-name() = 'termnote']">
<fo:block-container role="SKIP">
<xsl:attribute name="margin-left">
<xsl:choose>
<xsl:when test="not(ancestor::*[local-name() = 'table'])"><xsl:value-of select="$note-body-indent"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$note-body-indent-table"/></xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:call-template name="refine_list_container_style"/>
<fo:block-container margin-left="0mm" role="SKIP">
<fo:block>
<xsl:apply-templates select="." mode="list">
<xsl:with-param name="indent" select="$indent"/>
</xsl:apply-templates>
</fo:block>
</fo:block-container>
</fo:block-container>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="$layoutVersion = '1951' and local-name() = 'ul'">
<fo:block-container margin-left="8mm">
<xsl:if test="ancestor::*[local-name() = 'sections' or local-name() = 'annex']">
<xsl:variable name="level">
<xsl:for-each select="ancestor::*[1]">
<xsl:call-template name="getLevel"/>
</xsl:for-each>
</xsl:variable>
<!-- 5 + 6 (from list-block provisional-distance-between-starts) mm -->
<xsl:attribute name="margin-left">
<xsl:value-of select="5 + (($level - 1) * 6)"/>mm
</xsl:attribute>
</xsl:if>
<fo:block-container margin-left="0">
<fo:block role="SKIP">
<xsl:apply-templates select="." mode="list">
<xsl:with-param name="indent" select="$indent"/>
</xsl:apply-templates>
</fo:block>
</fo:block-container>
</fo:block-container>
</xsl:when>
<xsl:otherwise>
<fo:block role="SKIP">
<xsl:apply-templates select="." mode="list">
<xsl:with-param name="indent" select="$indent"/>
</xsl:apply-templates>
</fo:block>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="refine_list_container_style">
</xsl:template> <!-- refine_list_container_style -->
<xsl:template match="*[local-name()='ul'] | *[local-name()='ol']" mode="list" name="list">
<xsl:apply-templates select="*[local-name() = 'name']">
<xsl:with-param name="process">true</xsl:with-param>
</xsl:apply-templates>
<fo:list-block xsl:use-attribute-sets="list-style">
<xsl:variable name="provisional_distance_between_starts_">
<attributes xsl:use-attribute-sets="list-style">
<xsl:call-template name="refine_list-style_provisional-distance-between-starts"/>
</attributes>
</xsl:variable>
<xsl:variable name="provisional_distance_between_starts" select="normalize-space(xalan:nodeset($provisional_distance_between_starts_)/attributes/@provisional-distance-between-starts)"/>
<xsl:if test="$provisional_distance_between_starts != ''">
<xsl:attribute name="provisional-distance-between-starts"><xsl:value-of select="$provisional_distance_between_starts"/></xsl:attribute>
</xsl:if>
<xsl:variable name="provisional_distance_between_starts_value" select="substring-before($provisional_distance_between_starts, 'mm')"/>
<!-- increase provisional-distance-between-starts for long lists -->
<xsl:if test="local-name() = 'ol'">
<!-- Examples: xiii), xviii), xxviii) -->
<xsl:variable name="item_numbers">
<xsl:for-each select="*[local-name() = 'li']">
<item><xsl:call-template name="getListItemFormat"/></item>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="max_length">
<xsl:for-each select="xalan:nodeset($item_numbers)/item">
<xsl:sort select="string-length(.)" data-type="number" order="descending"/>
<xsl:if test="position() = 1"><xsl:value-of select="string-length(.)"/></xsl:if>
</xsl:for-each>
</xsl:variable>
<!-- base width (provisional-distance-between-starts) for 4 chars -->
<xsl:variable name="addon" select="$max_length - 4"/>
<xsl:if test="$addon > 0">
<xsl:attribute name="provisional-distance-between-starts"><xsl:value-of select="$provisional_distance_between_starts_value + $addon * 2"/>mm</xsl:attribute>
</xsl:if>
<!-- DEBUG -->
<!-- <xsl:copy-of select="$item_numbers"/>
<max_length><xsl:value-of select="$max_length"/></max_length>
<addon><xsl:value-of select="$addon"/></addon> -->
</xsl:if>
<xsl:call-template name="refine_list-style"/>
<xsl:if test="*[local-name() = 'name']">
<xsl:attribute name="margin-top">0pt</xsl:attribute>
</xsl:if>
<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> -->
<xsl:apply-templates select="./*[local-name() = 'note']"/>
</xsl:template>
<xsl:template name="refine_list-style_provisional-distance-between-starts">
<xsl:if test="$layoutVersion = '1951' and local-name() = 'ul'">
<xsl:attribute name="provisional-distance-between-starts">5mm</xsl:attribute>
</xsl:if>
</xsl:template> <!-- refine_list-style_provisional-distance-between-starts -->
<xsl:template match="*[local-name() = 'ol' or local-name() = 'ul']/*[local-name() = 'name']">
<xsl:param name="process">false</xsl:param>
<xsl:if test="$process = 'true'">
<fo:block xsl:use-attribute-sets="list-name-style">
<xsl:apply-templates/>
</fo:block>
</xsl:if>
</xsl:template>
<xsl:template match="*[local-name()='li']">
<xsl:param name="indent">0</xsl:param>
<!-- <fo:list-item xsl:use-attribute-sets="list-item-style">
<fo:list-item-label end-indent="label-end()"><fo:block>x</fo:block></fo:list-item-label>
<fo:list-item-body start-indent="body-start()" xsl:use-attribute-sets="list-item-body-style">
<fo:block>debug li indent=<xsl:value-of select="$indent"/></fo:block>
</fo:list-item-body>
</fo:list-item> -->
<fo:list-item xsl:use-attribute-sets="list-item-style">
<xsl:copy-of select="@id"/>
<xsl:call-template name="refine_list-item-style"/>
<fo:list-item-label end-indent="label-end()">
<fo:block xsl:use-attribute-sets="list-item-label-style" role="SKIP">
<xsl:call-template name="refine_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 role="SKIP">
<xsl:call-template name="refine_list-item-body-style"/>
<xsl:apply-templates>
<xsl:with-param name="indent" select="$indent"/>
</xsl:apply-templates>
<!-- <xsl:apply-templates select="node()[not(local-name() = 'note')]" />
<xsl:for-each select="./bsi:note">
<xsl:call-template name="note"/>
</xsl:for-each> -->
</fo:block>
</fo:list-item-body>
</fo:list-item>
</xsl:template>
<!-- ===================================== -->
<!-- END Lists processing -->
<!-- ===================================== -->
<!-- =================== -->
<!-- Index section processing -->
<!-- =================== -->
<xsl:variable name="index" select="document($external_index)"/>
<xsl:variable name="bookmark_in_fn">
<xsl:for-each select="//*[local-name() = 'bookmark'][ancestor::*[local-name() = 'fn']]">
<bookmark><xsl:value-of select="@id"/></bookmark>
</xsl:for-each>
</xsl:variable>
<xsl:template match="@*|node()" mode="index_add_id">
<xsl:param name="docid"/>
<xsl:copy>
<xsl:apply-templates select="@*|node()" mode="index_add_id">
<xsl:with-param name="docid" select="$docid"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="*[local-name() = 'xref']" mode="index_add_id">
<xsl:param name="docid"/>
<xsl:variable name="id">
<xsl:call-template name="generateIndexXrefId">
<xsl:with-param name="docid" select="$docid"/>
</xsl:call-template>
</xsl:variable>
<xsl:copy> <!-- add id to xref -->
<xsl:apply-templates select="@*" mode="index_add_id"/>
<xsl:attribute name="id">
<xsl:value-of select="$id"/>
</xsl:attribute>
<xsl:apply-templates mode="index_add_id">
<xsl:with-param name="docid" select="$docid"/>
</xsl:apply-templates>
</xsl:copy>
<!-- split <xref target="bm1" to="End" pagenumber="true"> to two xref:
<xref target="bm1" pagenumber="true"> and <xref target="End" pagenumber="true"> -->
<xsl:if test="@to">
<xsl:value-of select="$en_dash"/>
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:attribute name="target"><xsl:value-of select="@to"/></xsl:attribute>
<xsl:attribute name="id">
<xsl:value-of select="$id"/><xsl:text>_to</xsl:text>
</xsl:attribute>
<xsl:apply-templates mode="index_add_id">
<xsl:with-param name="docid" select="$docid"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:if>
</xsl:template>
<xsl:template match="@*|node()" mode="index_update">
<xsl:copy>
<xsl:apply-templates select="@*|node()" mode="index_update"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[local-name() = 'indexsect']//*[local-name() = 'li']" mode="index_update">
<xsl:copy>
<xsl:apply-templates select="@*" mode="index_update"/>
<xsl:apply-templates select="node()[1]" mode="process_li_element"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[local-name() = 'indexsect']//*[local-name() = 'li']/node()" mode="process_li_element" priority="2">
<xsl:param name="element"/>
<xsl:param name="remove" select="'false'"/>
<xsl:param name="target"/>
<!-- <node></node> -->
<xsl:choose>
<xsl:when test="self::text() and (normalize-space(.) = ',' or normalize-space(.) = $en_dash) and $remove = 'true'">
<!-- skip text (i.e. remove it) and process next element -->
<!-- [removed_<xsl:value-of select="."/>] -->
<xsl:apply-templates select="following-sibling::node()[1]" mode="process_li_element">
<xsl:with-param name="target"><xsl:value-of select="$target"/></xsl:with-param>
</xsl:apply-templates>
</xsl:when>
<xsl:when test="self::text()">
<xsl:value-of select="."/>
<xsl:apply-templates select="following-sibling::node()[1]" mode="process_li_element"/>
</xsl:when>
<xsl:when test="self::* and local-name(.) = 'xref'">
<xsl:variable name="id" select="@id"/>
<xsl:variable name="id_next" select="following-sibling::*[local-name() = 'xref'][1]/@id"/>
<xsl:variable name="id_prev" select="preceding-sibling::*[local-name() = 'xref'][1]/@id"/>
<xsl:variable name="pages_">
<xsl:for-each select="$index/index/item[@id = $id or @id = $id_next or @id = $id_prev]">
<xsl:choose>
<xsl:when test="@id = $id">
<page><xsl:value-of select="."/></page>
</xsl:when>
<xsl:when test="@id = $id_next">
<page_next><xsl:value-of select="."/></page_next>
</xsl:when>
<xsl:when test="@id = $id_prev">
<page_prev><xsl:value-of select="."/></page_prev>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="pages" select="xalan:nodeset($pages_)"/>
<!-- <xsl:variable name="page" select="$index/index/item[@id = $id]"/> -->
<xsl:variable name="page" select="$pages/page"/>
<!-- <xsl:variable name="page_next" select="$index/index/item[@id = $id_next]"/> -->
<xsl:variable name="page_next" select="$pages/page_next"/>
<!-- <xsl:variable name="page_prev" select="$index/index/item[@id = $id_prev]"/> -->
<xsl:variable name="page_prev" select="$pages/page_prev"/>
<xsl:choose>
<!-- 2nd pass -->
<!-- if page is equal to page for next and page is not the end of range -->
<xsl:when test="$page != '' and $page_next != '' and $page = $page_next and not(contains($page, '_to'))"> <!-- case: 12, 12-14 -->
<!-- skip element (i.e. remove it) and remove next text ',' -->
<!-- [removed_xref] -->
<xsl:apply-templates select="following-sibling::node()[1]" mode="process_li_element">
<xsl:with-param name="remove">true</xsl:with-param>
<xsl:with-param name="target">
<xsl:choose>
<xsl:when test="$target != ''"><xsl:value-of select="$target"/></xsl:when>
<xsl:otherwise><xsl:value-of select="@target"/></xsl:otherwise>
</xsl:choose>
</xsl:with-param>
</xsl:apply-templates>
</xsl:when>
<xsl:when test="$page != '' and $page_prev != '' and $page = $page_prev and contains($page_prev, '_to')"> <!-- case: 12-14, 14, ... -->
<!-- remove xref -->
<xsl:apply-templates select="following-sibling::node()[1]" mode="process_li_element">
<xsl:with-param name="remove">true</xsl:with-param>
</xsl:apply-templates>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="." mode="xref_copy">
<xsl:with-param name="target" select="$target"/>
</xsl:apply-templates>
<xsl:apply-templates select="following-sibling::node()[1]" mode="process_li_element"/>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="self::* and local-name(.) = 'ul'">
<!-- ul -->
<xsl:apply-templates select="." mode="index_update"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="." mode="xref_copy">
<xsl:with-param name="target" select="$target"/>
</xsl:apply-templates>
<xsl:apply-templates select="following-sibling::node()[1]" mode="process_li_element"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="@*|node()" mode="xref_copy">
<xsl:param name="target"/>
<xsl:copy>
<xsl:apply-templates select="@*" mode="xref_copy"/>
<xsl:if test="$target != '' and not(xalan:nodeset($bookmark_in_fn)//bookmark[. = $target])">
<xsl:attribute name="target"><xsl:value-of select="$target"/></xsl:attribute>
</xsl:if>
<xsl:apply-templates select="node()" mode="xref_copy"/>
</xsl:copy>
</xsl:template>
<xsl:template name="generateIndexXrefId">
<xsl:param name="docid"/>
<xsl:variable name="level" select="count(ancestor::*[local-name() = 'ul'])"/>
<xsl:variable name="docid_curr">
<xsl:value-of select="$docid"/>
<xsl:if test="normalize-space($docid) = ''"><xsl:call-template name="getDocumentId"/></xsl:if>
</xsl:variable>
<xsl:variable name="item_number">
<xsl:number count="*[local-name() = 'li'][ancestor::*[local-name() = 'indexsect']]" level="any"/>
</xsl:variable>
<xsl:variable name="xref_number"><xsl:number count="*[local-name() = 'xref']"/></xsl:variable>
<xsl:value-of select="concat($docid_curr, '_', $item_number, '_', $xref_number)"/> <!-- $level, '_', -->
</xsl:template>
<xsl:template match="*[local-name() = 'indexsect']/*[local-name() = 'title']" priority="4">
<fo:block xsl:use-attribute-sets="indexsect-title-style">
<!-- Index -->
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="*[local-name() = 'indexsect']/*[local-name() = 'clause']/*[local-name() = 'title']" priority="4">
<!-- Letter A, B, C, ... -->
<fo:block xsl:use-attribute-sets="indexsect-clause-title-style">
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="*[local-name() = 'indexsect']/*[local-name() = 'clause']" priority="4">
<xsl:apply-templates/>
<fo:block>
<xsl:if test="following-sibling::*[local-name() = 'clause']">
<fo:block> </fo:block>
</xsl:if>
</fo:block>
</xsl:template>
<xsl:template match="*[local-name() = 'indexsect']//*[local-name() = 'ul']" priority="4">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="*[local-name() = 'indexsect']//*[local-name() = 'li']" priority="4">
<xsl:variable name="level" select="count(ancestor::*[local-name() = 'ul'])"/>
<fo:block start-indent="{5 * $level}mm" text-indent="-5mm">
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="*[local-name() = 'indexsect']//*[local-name() = 'li']/text()">
<!-- to split by '_' and other chars -->
<xsl:call-template name="add-zero-spaces-java"/>
</xsl:template>
<xsl:template match="*[local-name() = 'table']/*[local-name() = 'bookmark']" priority="2"/>
<xsl:template match="*[local-name() = 'bookmark']" name="bookmark">
<!-- <fo:inline id="{@id}" font-size="1pt"/> -->
<fo:inline id="{@id}" font-size="1pt"><xsl:value-of select="$hair_space"/></fo:inline>
<!-- we need to add zero-width space, otherwise this fo:inline is missing in IF xml -->
<xsl:if test="not(following-sibling::node()[normalize-space() != ''])"><fo:inline font-size="1pt"> </fo:inline></xsl:if>
</xsl:template>
<!-- =================== -->
<!-- End of Index processing -->
<!-- =================== -->
<!-- ============ -->
<!-- errata -->
<!-- ============ -->
<xsl:template match="*[local-name() = 'errata']">
<!-- <row>
<date>05-07-2013</date>
<type>Editorial</type>
<change>Changed CA-9 Priority Code from P1 to P2 in <xref target="tabled2"/>.</change>
<pages>D-3</pages>
</row>
-->
<fo:table table-layout="fixed" width="100%" font-size="10pt" border="1pt solid black">
<fo:table-column column-width="20mm"/>
<fo:table-column column-width="23mm"/>
<fo:table-column column-width="107mm"/>
<fo:table-column column-width="15mm"/>
<fo:table-body>
<fo:table-row text-align="center" font-weight="bold" background-color="black" color="white">
<fo:table-cell border="1pt solid black"><fo:block role="SKIP">Date</fo:block></fo:table-cell>
<fo:table-cell border="1pt solid black"><fo:block role="SKIP">Type</fo:block></fo:table-cell>
<fo:table-cell border="1pt solid black"><fo:block role="SKIP">Change</fo:block></fo:table-cell>
<fo:table-cell border="1pt solid black"><fo:block role="SKIP">Pages</fo:block></fo:table-cell>
</fo:table-row>
<xsl:apply-templates/>
</fo:table-body>
</fo:table>
</xsl:template>
<xsl:template match="*[local-name() = 'errata']/*[local-name() = 'row']">
<fo:table-row>
<xsl:apply-templates/>
</fo:table-row>
</xsl:template>
<xsl:template match="*[local-name() = 'errata']/*[local-name() = 'row']/*">
<fo:table-cell border="1pt solid black" padding-left="1mm" padding-top="0.5mm">
<fo:block role="SKIP"><xsl:apply-templates/></fo:block>
</fo:table-cell>
</xsl:template>
<!-- ============ -->
<!-- END errata -->
<!-- ============ -->
<!-- ======================= -->
<!-- Bibliography rendering -->
<!-- ======================= -->
<!-- ========================================================== -->
<!-- Reference sections (Normative References and Bibliography) -->
<!-- ========================================================== -->
<xsl:template match="*[local-name() = 'references'][@hidden='true']" priority="3"/>
<xsl:template match="*[local-name() = 'bibitem'][@hidden='true']" priority="3">
<xsl:param name="skip" select="normalize-space(preceding-sibling::*[1][local-name() = 'bibitem'] and 1 = 1)"/>
<xsl:if test="ancestor::*[local-name() = 'references'][not(@normative='true')] or preceding-sibling::*[local-name() = 'references'][1][not(@normative='true')]">
<xsl:apply-templates select="following-sibling::*[1][local-name() = 'bibitem']">
<xsl:with-param name="skip" select="$skip"/>
</xsl:apply-templates>
</xsl:if>
</xsl:template>
<!-- don't display bibitem with @id starts with '_hidden', that was introduced for references integrity -->
<xsl:template match="*[local-name() = 'bibitem'][starts-with(@id, 'hidden_bibitem_')]" priority="3"/>
<!-- Normative references -->
<xsl:template match="*[local-name() = 'references'][@normative='true']" priority="2">
<fo:block id="{@id}">
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<!-- Bibliography (non-normative references) -->
<xsl:template match="*[local-name() = 'references']">
<xsl:if test="not(ancestor::*[local-name() = 'annex'])">
<fo:block break-after="page"/>
</xsl:if>
<!-- <xsl:if test="ancestor::*[local-name() = 'annex']">
<xsl:if test="$namespace = 'csa' or $namespace = 'csd' or $namespace = 'gb' or $namespace = 'iec' or $namespace = 'iso' or $namespace = 'itu'">
<fo:block break-after="page"/>
</xsl:if>
</xsl:if> -->
<fo:block id="{@id}"/>
<xsl:apply-templates select="*[local-name() = 'title'][@columns = 1]"/>
<fo:block xsl:use-attribute-sets="references-non-normative-style">
<xsl:apply-templates select="node()[not(local-name() = 'title' and @columns = 1)]"/>
</fo:block>
</xsl:template> <!-- references -->
<xsl:template match="*[local-name() = 'bibitem']">
<xsl:call-template name="bibitem"/>
</xsl:template>
<!-- Normative references -->
<xsl:template match="*[local-name() = 'references'][@normative='true']/*[local-name() = 'bibitem']" name="bibitem" priority="2">
<fo:block id="{@id}" xsl:use-attribute-sets="bibitem-normative-style">
<xsl:if test="$layoutVersion = '2024'">
<xsl:attribute name="margin-bottom">8pt</xsl:attribute>
</xsl:if>
<xsl:call-template name="processBibitem"/>
</fo:block>
</xsl:template> <!-- bibitem -->
<!-- start list for bibitem sequence -->
<xsl:template match="*[local-name() = 'references'][not(@normative='true')]/*[local-name() = 'bibitem'][1]" priority="4">
<xsl:variable name="list_items">
<xsl:call-template name="insertListItem_Bibitem"/>
</xsl:variable>
<xsl:if test="normalize-space($list_items) != ''">
<fo:list-block xsl:use-attribute-sets="bibitem-non-normative-list-style">
<xsl:copy-of select="$list_items"/>
</fo:list-block>
</xsl:if>
</xsl:template>
<!-- Bibliography (non-normative references) -->
<xsl:template match="*[local-name() = 'references'][not(@normative='true')]/*[local-name() = 'bibitem']" name="bibitem_non_normative" priority="2">
<xsl:param name="skip" select="normalize-space(preceding-sibling::*[1][local-name() = 'bibitem'] and 1 = 1)"/> <!-- current bibiitem is non-first -->
<xsl:choose>
<xsl:when test="$skip = 'true'"><!-- skip bibitem --></xsl:when>
<xsl:otherwise>
<xsl:call-template name="insertListItem_Bibitem"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template> <!-- references[not(@normative='true')]/bibitem -->
<xsl:template name="insertListItem_Bibitem">
<xsl:choose>
<xsl:when test="@hidden = 'true'"><!-- skip --></xsl:when>
<xsl:otherwise>
<fo:list-item id="{@id}" xsl:use-attribute-sets="bibitem-non-normative-list-item-style">
<xsl:if test="$layoutVersion = '2024'">
<xsl:attribute name="margin-bottom">8pt</xsl:attribute>
</xsl:if>
<fo:list-item-label end-indent="label-end()">
<fo:block role="SKIP">
<fo:inline role="SKIP">
<xsl:apply-templates select="*[local-name() = 'biblio-tag']">
<xsl:with-param name="biblio_tag_part">first</xsl:with-param>
</xsl:apply-templates>
</fo:inline>
</fo:block>
</fo:list-item-label>
<fo:list-item-body start-indent="body-start()">
<fo:block xsl:use-attribute-sets="bibitem-non-normative-list-body-style" role="SKIP">
<xsl:call-template name="processBibitem">
<xsl:with-param name="biblio_tag_part">last</xsl:with-param>
</xsl:call-template>
</fo:block>
</fo:list-item-body>
</fo:list-item>
</xsl:otherwise>
</xsl:choose>
<xsl:apply-templates select="following-sibling::*[1][local-name() = 'bibitem']">
<xsl:with-param name="skip">false</xsl:with-param>
</xsl:apply-templates>
</xsl:template>
<xsl:template name="processBibitem">
<xsl:param name="biblio_tag_part">both</xsl:param>
<!-- start bibitem processing -->
<xsl:if test=".//*[local-name() = 'fn']">
<xsl:attribute name="line-height-shift-adjustment">disregard-shifts</xsl:attribute>
</xsl:if>
<xsl:apply-templates select="*[local-name() = 'biblio-tag']">
<xsl:with-param name="biblio_tag_part" select="$biblio_tag_part"/>
</xsl:apply-templates>
<xsl:apply-templates select="*[local-name() = 'formattedref']"/>
<!-- end bibitem processing -->
</xsl:template> <!-- processBibitem (bibitem) -->
<xsl:template match="*[local-name() = 'title']" mode="title">
<fo:inline><xsl:apply-templates/></fo:inline>
</xsl:template>
<xsl:template match="*[local-name() = 'bibitem']/*[local-name() = 'docidentifier']"/>
<xsl:template match="*[local-name() = 'formattedref']">
<!-- <xsl:if test="$namespace = 'unece' or $namespace = 'unece-rec'">
<xsl:text>, </xsl:text>
</xsl:if> -->
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="*[local-name() = 'biblio-tag']">
<xsl:param name="biblio_tag_part">both</xsl:param>
<xsl:choose>
<xsl:when test="$biblio_tag_part = 'first' and *[local-name() = 'tab']">
<xsl:apply-templates select="./*[local-name() = 'tab'][1]/preceding-sibling::node()"/>
</xsl:when>
<xsl:when test="$biblio_tag_part = 'last'">
<xsl:apply-templates select="./*[local-name() = 'tab'][1]/following-sibling::node()"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="*[local-name() = 'biblio-tag']/*[local-name() = 'tab']" priority="2">
<xsl:text> </xsl:text>
</xsl:template>
<!-- ======================= -->
<!-- END Bibliography rendering -->
<!-- ======================= -->
<!-- ========================================================== -->
<!-- END Reference sections (Normative References and Bibliography) -->
<!-- ========================================================== -->
<!-- =================== -->
<!-- Form's elements processing -->
<!-- =================== -->
<xsl:template match="*[local-name() = 'form']">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="*[local-name() = 'form']//*[local-name() = 'label']">
<fo:inline><xsl:apply-templates/></fo:inline>
</xsl:template>
<xsl:template match="*[local-name() = 'form']//*[local-name() = 'input'][@type = 'text' or @type = 'date' or @type = 'file' or @type = 'password']">
<fo:inline>
<xsl:call-template name="text_input"/>
</fo:inline>
</xsl:template>
<xsl:template name="text_input">
<xsl:variable name="count">
<xsl:choose>
<xsl:when test="normalize-space(@maxlength) != ''"><xsl:value-of select="@maxlength"/></xsl:when>
<xsl:when test="normalize-space(@size) != ''"><xsl:value-of select="@size"/></xsl:when>
<xsl:otherwise>10</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:call-template name="repeat">
<xsl:with-param name="char" select="'_'"/>
<xsl:with-param name="count" select="$count"/>
</xsl:call-template>
<xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="*[local-name() = 'form']//*[local-name() = 'input'][@type = 'button']">
<xsl:variable name="caption">
<xsl:choose>
<xsl:when test="normalize-space(@value) != ''"><xsl:value-of select="@value"/></xsl:when>
<xsl:otherwise>BUTTON</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<fo:inline>[<xsl:value-of select="$caption"/>]</fo:inline>
</xsl:template>
<xsl:template match="*[local-name() = 'form']//*[local-name() = 'input'][@type = 'checkbox']">
<fo:inline padding-right="1mm">
<fo:instream-foreign-object fox:alt-text="Box" baseline-shift="-10%">
<xsl:attribute name="height">3.5mm</xsl:attribute>
<xsl:attribute name="content-width">100%</xsl:attribute>
<xsl:attribute name="content-width">scale-down-to-fit</xsl:attribute>
<xsl:attribute name="scaling">uniform</xsl:attribute>
<svg xmlns="http://www.w3.org/2000/svg" width="80" height="80">
<polyline points="0,0 80,0 80,80 0,80 0,0" stroke="black" stroke-width="5" fill="white"/>
</svg>
</fo:instream-foreign-object>
</fo:inline>
</xsl:template>
<xsl:template match="*[local-name() = 'form']//*[local-name() = 'input'][@type = 'radio']">
<fo:inline padding-right="1mm">
<fo:instream-foreign-object fox:alt-text="Box" baseline-shift="-10%">
<xsl:attribute name="height">3.5mm</xsl:attribute>
<xsl:attribute name="content-width">100%</xsl:attribute>
<xsl:attribute name="content-width">scale-down-to-fit</xsl:attribute>
<xsl:attribute name="scaling">uniform</xsl:attribute>
<svg xmlns="http://www.w3.org/2000/svg" width="80" height="80">
<circle cx="40" cy="40" r="30" stroke="black" stroke-width="5" fill="white"/>
<circle cx="40" cy="40" r="15" stroke="black" stroke-width="5" fill="white"/>
</svg>
</fo:instream-foreign-object>
</fo:inline>
</xsl:template>
<xsl:template match="*[local-name() = 'form']//*[local-name() = 'select']">
<fo:inline>
<xsl:call-template name="text_input"/>
</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>
<!-- =================== -->
<!-- End Form's elements processing -->
<!-- =================== -->
<!-- =================== -->
<!-- Table of Contents (ToC) processing -->
<!-- =================== -->
<xsl:variable name="toc_level">
<!-- https://www.metanorma.org/author/ref/document-attributes/ -->
<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:-->
<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 -->
<xsl:choose>
<xsl:when test="$pdftoclevels != ''"><xsl:value-of select="number($pdftoclevels)"/></xsl:when> <!-- if there is value in xml -->
<xsl:when test="$toclevels != ''"><xsl:value-of select="number($toclevels)"/></xsl:when> <!-- if there is value in xml -->
<xsl:otherwise><!-- default value -->
3
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<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-proportional">
<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']" priority="2">
<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/>“9th CGPM, 1948:<tab/>decision to establish the SI”</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 line-height-shift-adjustment="disregard-shifts" role="SKIP">
<xsl:call-template name="insert_basic_link">
<xsl:with-param name="element">
<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>
</xsl:with-param>
</xsl:call-template>
</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 role="SKIP">
<xsl:call-template name="insert_basic_link">
<xsl:with-param name="element">
<fo:basic-link internal-destination="{$target}" fox:alt-text="{.}">
<fo:page-number-citation ref-id="{$target}"/>
</fo:basic-link>
</xsl:with-param>
</xsl:call-template>
</fo:block>
</fo:table-cell>
</xsl:template>
<!-- ================================== -->
<!-- calculate ToC table columns widths -->
<!-- ================================== -->
<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/>“9th CGPM, 1948:<tab/>decision to establish the SI”</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>
<!-- ================================== -->
<!-- END: calculate ToC table columns widths -->
<!-- ================================== -->
<!-- =================== -->
<!-- End Table of Contents (ToC) processing -->
<!-- =================== -->
<!-- insert fo:basic-link, if external-destination or internal-destination is non-empty, otherwise insert fo:inline -->
<xsl:template name="insert_basic_link">
<xsl:param name="element"/>
<xsl:variable name="element_node" select="xalan:nodeset($element)"/>
<xsl:variable name="external-destination" select="normalize-space(count($element_node/fo:basic-link/@external-destination[. != '']) = 1)"/>
<xsl:variable name="internal-destination" select="normalize-space(count($element_node/fo:basic-link/@internal-destination[. != '']) = 1)"/>
<xsl:choose>
<xsl:when test="$external-destination = 'true' or $internal-destination = 'true'">
<xsl:copy-of select="$element_node"/>
</xsl:when>
<xsl:otherwise>
<fo:inline>
<xsl:for-each select="$element_node/fo:basic-link/@*[local-name() != 'external-destination' and local-name() != 'internal-destination' and local-name() != 'alt-text']">
<xsl:attribute name="{local-name()}"><xsl:value-of select="."/></xsl:attribute>
</xsl:for-each>
<xsl:copy-of select="$element_node/fo:basic-link/node()"/>
</fo:inline>
</xsl:otherwise>
</xsl:choose>
</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" 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 match="@language">
<xsl:copy-of select="."/>
</xsl:template>
<xsl:template match="*[local-name() = 'p'][@type = 'floating-title' or @type = 'section-title']" priority="4">
<xsl:call-template name="title"/>
</xsl:template>
<!-- ================ -->
<!-- Admonition -->
<!-- ================ -->
<xsl:template match="*[local-name() = 'admonition']">
<fo:block xsl:use-attribute-sets="admonition-style">
<xsl:call-template name="setBlockSpanAll"/>
<xsl:if test="@type = 'editorial'">
<xsl:attribute name="color">green</xsl:attribute>
<xsl:attribute name="font-weight">normal</xsl:attribute>
<!-- <xsl:variable name="note-style">
<style xsl:use-attribute-sets="note-style"></style>
</xsl:variable>
<xsl:for-each select="xalan:nodeset($note-style)//style/@*">
<xsl:attribute name="{local-name()}"><xsl:value-of select="."/></xsl:attribute>
</xsl:for-each> -->
</xsl:if>
<xsl:if test="@type != 'editorial'">
<xsl:call-template name="displayAdmonitionName"/>
<!-- https://github.com/metanorma/isodoc/issues/614 -->
<!-- <xsl:with-param name="sep"> — </xsl:with-param> -->
</xsl:if>
<xsl:apply-templates select="node()[not(local-name() = 'name')]"/>
</fo:block>
</xsl:template>
<xsl:template name="displayAdmonitionName">
<xsl:param name="sep"/> <!-- Example: ' - ' -->
<!-- <xsl:choose>
<xsl:when test="$namespace = 'nist-cswp' or $namespace = 'nist-sp'">
<xsl:choose>
<xsl:when test="@type='important'"><xsl:apply-templates select="@type"/></xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="*[local-name() = 'name']"/>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="*[local-name() = 'name']"/>
<xsl:if test="not(*[local-name() = 'name'])">
<xsl:apply-templates select="@type"/>
</xsl:if>
</xsl:otherwise>
</xsl:choose> -->
<xsl:variable name="name">
<xsl:apply-templates select="*[local-name() = 'name']"/>
</xsl:variable>
<xsl:copy-of select="$name"/>
<xsl:if test="normalize-space($name) != ''">
<xsl:value-of select="$sep"/>
</xsl:if>
</xsl:template>
<xsl:template match="*[local-name() = 'admonition']/*[local-name() = 'name']">
<xsl:apply-templates/>
</xsl:template>
<!-- <xsl:template match="*[local-name() = 'admonition']/@type">
<xsl:variable name="admonition_type_">
<xsl:call-template name="getLocalizedString">
<xsl:with-param name="key">admonition.<xsl:value-of select="."/></xsl:with-param>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="admonition_type" select="normalize-space(java:toUpperCase(java:java.lang.String.new($admonition_type_)))"/>
<xsl:value-of select="$admonition_type"/>
<xsl:if test="$admonition_type = ''">
<xsl:value-of select="java:toUpperCase(java:java.lang.String.new(.))"/>
</xsl:if>
</xsl:template> -->
<xsl:template match="*[local-name() = 'admonition']/*[local-name() = 'p']">
<!-- processing for admonition/p found in the template for 'p' -->
<xsl:call-template name="paragraph"/>
</xsl:template>
<!-- ================ -->
<!-- END Admonition -->
<!-- ================ -->
<!-- ===================================== -->
<!-- Update xml -->
<!-- ===================================== -->
<xsl:template name="updateXML">
<xsl:if test="$debug = 'true'"><xsl:message>START updated_xml_step1</xsl:message></xsl:if>
<xsl:variable name="startTime1" select="java:getTime(java:java.util.Date.new())"/>
<!-- STEP1: Re-order elements in 'preface', 'sections' based on @displayorder -->
<xsl:variable name="updated_xml_step1">
<xsl:if test="$table_if = 'false'">
<xsl:apply-templates mode="update_xml_step1"/>
</xsl:if>
</xsl:variable>
<xsl:variable name="endTime1" select="java:getTime(java:java.util.Date.new())"/>
<xsl:if test="$debug = 'true'">
<xsl:message>DEBUG: processing time <xsl:value-of select="$endTime1 - $startTime1"/> msec.</xsl:message>
<xsl:message>END updated_xml_step1</xsl:message>
<!-- <redirect:write file="updated_xml_step1_{java:getTime(java:java.util.Date.new())}.xml">
<xsl:copy-of select="$updated_xml_step1"/>
</redirect:write> -->
</xsl:if>
<xsl:if test="$debug = 'true'"><xsl:message>START updated_xml_step2</xsl:message></xsl:if>
<xsl:variable name="startTime2" select="java:getTime(java:java.util.Date.new())"/>
<!-- STEP2: add 'fn' after 'eref' and 'origin', if referenced to bibitem with 'note' = Withdrawn.' or 'Cancelled and replaced...' -->
<xsl:variable name="updated_xml_step2">
<xsl:if test="$table_if = 'false'">
<xsl:apply-templates select="xalan:nodeset($updated_xml_step1)" mode="update_xml_step2"/>
</xsl:if>
</xsl:variable>
<xsl:variable name="endTime2" select="java:getTime(java:java.util.Date.new())"/>
<xsl:if test="$debug = 'true'">
<xsl:message>DEBUG: processing time <xsl:value-of select="$endTime2 - $startTime2"/> msec.</xsl:message>
<xsl:message>END updated_xml_step2</xsl:message>
<!-- <redirect:write file="updated_xml_step2_{java:getTime(java:java.util.Date.new())}.xml">
<xsl:copy-of select="$updated_xml_step2"/>
</redirect:write> -->
</xsl:if>
<xsl:if test="$debug = 'true'"><xsl:message>START updated_xml_step3</xsl:message></xsl:if>
<xsl:variable name="startTime3" select="java:getTime(java:java.util.Date.new())"/>
<xsl:variable name="updated_xml_step3">
<xsl:choose>
<xsl:when test="$table_if = 'false'">
<xsl:apply-templates select="xalan:nodeset($updated_xml_step2)" mode="update_xml_enclose_keep-together_within-line"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="." mode="update_xml_enclose_keep-together_within-line"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="endTime3" select="java:getTime(java:java.util.Date.new())"/>
<xsl:if test="$debug = 'true'">
<xsl:message>DEBUG: processing time <xsl:value-of select="$endTime3 - $startTime3"/> msec.</xsl:message>
<xsl:message>END updated_xml_step3</xsl:message>
<!-- <redirect:write file="updated_xml_step3_{java:getTime(java:java.util.Date.new())}.xml">
<xsl:copy-of select="$updated_xml_step3"/>
</redirect:write> -->
</xsl:if>
<!-- <xsl:if test="$debug = 'true'"><xsl:message>START copying updated_xml_step3</xsl:message></xsl:if>
<xsl:variable name="startTime4" select="java:getTime(java:java.util.Date.new())"/> -->
<xsl:copy-of select="$updated_xml_step3"/>
<!-- <xsl:variable name="endTime4" select="java:getTime(java:java.util.Date.new())"/>
<xsl:if test="$debug = 'true'">
<xsl:message>DEBUG: processing time <xsl:value-of select="$endTime4 - $startTime4"/> msec.</xsl:message>
<xsl:message>END copying updated_xml_step3</xsl:message>
</xsl:if> -->
</xsl:template>
<!-- =========================================================================== -->
<!-- STEP1: -->
<!-- - Re-order elements in 'preface', 'sections' based on @displayorder -->
<!-- - Put Section title in the correct position -->
<!-- - Ignore 'span' without style -->
<!-- - Remove semantic xml part -->
<!-- - Remove image/emf (EMF vector image for Word) -->
<!-- - add @id, redundant for table auto-layout algorithm -->
<!-- =========================================================================== -->
<xsl:template match="@*|node()" mode="update_xml_step1">
<xsl:copy>
<xsl:apply-templates select="@*|node()" mode="update_xml_step1"/>
</xsl:copy>
</xsl:template>
<!-- change section's order based on @displayorder value -->
<xsl:template match="*[local-name() = 'preface']" mode="update_xml_step1">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:variable name="nodes_preface_">
<xsl:for-each select="*">
<node id="{@id}"/>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="nodes_preface" select="xalan:nodeset($nodes_preface_)"/>
<xsl:for-each select="*">
<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="update_xml_step1"/>
</xsl:if>
<xsl:choose>
<xsl:when test="@type = 'section-title' and not(@displayorder)"><!-- skip, don't copy, because copied in above 'apply-templates' --></xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="." mode="update_xml_step1"/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:copy>
</xsl:template>
<xsl:template match="*[local-name() = 'sections']" mode="update_xml_step1">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:variable name="nodes_sections_">
<xsl:for-each select="*">
<node id="{@id}"/>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="nodes_sections" select="xalan:nodeset($nodes_sections_)"/>
<!-- move section 'Normative references' inside 'sections' -->
<xsl:for-each select="* | ancestor::*[contains(local-name(), '-standard')]/*[local-name()='bibliography']/*[local-name()='references'][@normative='true'] | ancestor::*[contains(local-name(), '-standard')]/*[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="update_xml_step1"/>
</xsl:if>
<xsl:choose>
<xsl:when test="@type = 'section-title' and not(@displayorder)"><!-- skip, don't copy, because copied in above 'apply-templates' --></xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="." mode="update_xml_step1"/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:copy>
</xsl:template>
<xsl:template match="*[local-name() = 'bibliography']" mode="update_xml_step1">
<xsl:copy>
<xsl:copy-of select="@*"/>
<!-- copy all elements from bibliography except 'Normative references' (moved to 'sections') -->
<xsl:for-each select="*[not(@normative='true') and not(*[@normative='true'])]">
<xsl:sort select="@displayorder" data-type="number"/>
<xsl:apply-templates select="." mode="update_xml_step1"/>
</xsl:for-each>
</xsl:copy>
</xsl:template>
<!-- Example with 'class': <span class="stdpublisher">ISO</span> <span class="stddocNumber">10303</span>-<span class="stddocPartNumber">1</span>:<span class="stdyear">1994</span> -->
<xsl:template match="*[local-name() = 'span'][@style or @class = 'stdpublisher' or @class = 'stddocNumber' or @class = 'stddocPartNumber' or @class = 'stdyear']" mode="update_xml_step1" priority="2">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates mode="update_xml_step1"/>
</xsl:copy>
</xsl:template>
<!-- Note: to enable the addition of character span markup with semantic styling for DIS Word output -->
<xsl:template match="*[local-name() = 'span']" mode="update_xml_step1">
<xsl:apply-templates mode="update_xml_step1"/>
</xsl:template>
<xsl:template match="*[local-name() = 'sections']/*[local-name() = 'p'][starts-with(@class, 'zzSTDTitle')]/*[local-name() = 'span'][@class] | *[local-name() = 'sourcecode']//*[local-name() = 'span'][@class]" mode="update_xml_step1" priority="2">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates mode="update_xml_step1"/>
</xsl:copy>
</xsl:template>
<!-- remove semantic xml -->
<xsl:template match="*[local-name() = 'metanorma-extension']/*[local-name() = 'metanorma']/*[local-name() = 'source']" mode="update_xml_step1"/>
<!-- remove image/emf -->
<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'][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>
<xsl:copy-of select="@*"/>
<xsl:if test="1 = 2"> <!-- remove attachment/text(), because attachments added in the template 'addPDFUAmeta' before applying 'update_xml_step1' -->
<xsl:variable name="name_filepath" select="concat($inputxml_basepath, @name)"/>
<xsl:variable name="file_exists" select="normalize-space(java:exists(java:java.io.File.new($name_filepath)))"/>
<xsl:if test="$file_exists = 'false'"> <!-- copy attachment content only if file on disk doesnt exist -->
<xsl:value-of select="normalize-space(.)"/>
</xsl:if>
</xsl:if>
</xsl:copy>
</xsl:template>
<!-- add @id, mandatory for table auto-layout algorithm -->
<xsl:template match="*[local-name() = 'dl' or local-name() = 'table'][not(@id)]" mode="update_xml_step1">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:call-template name="add_id"/>
<xsl:apply-templates mode="update_xml_step1"/>
</xsl:copy>
</xsl:template>
<!-- prevent empty thead processing in XSL-FO, remove it -->
<xsl:template match="*[local-name() = 'table']/*[local-name() = 'thead'][count(*) = 0]" mode="update_xml_step1"/>
<xsl:template name="add_id">
<xsl:if test="not(@id)">
<!-- add @id - first element with @id plus '_element_name' -->
<xsl:attribute name="id"><xsl:value-of select="(.//*[@id])[1]/@id"/>_<xsl:value-of select="local-name()"/></xsl:attribute>
</xsl:if>
</xsl:template>
<!-- optimization: remove clause if table_only_with_id isn't empty and clause doesn't contain table or dl with table_only_with_id -->
<xsl:template match="*[local-name() = 'clause' or local-name() = 'p' or local-name() = 'definitions' or local-name() = 'annex']" mode="update_xml_step1">
<xsl:choose>
<xsl:when test="($table_only_with_id != '' or $table_only_with_ids != '') and local-name() = 'p' and (ancestor::*[local-name() = 'table' or local-name() = 'dl' or local-name() = 'toc'])">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates mode="update_xml_step1"/>
</xsl:copy>
</xsl:when>
<!-- for table auto-layout algorithm -->
<xsl:when test="$table_only_with_id != '' and not(.//*[local-name() = 'table' or local-name() = 'dl'][@id = $table_only_with_id])">
<xsl:copy>
<xsl:copy-of select="@*"/>
</xsl:copy>
</xsl:when>
<!-- for table auto-layout algorithm -->
<xsl:when test="$table_only_with_ids != '' and not(.//*[local-name() = 'table' or local-name() = 'dl'][contains($table_only_with_ids, concat(@id, ' '))])">
<xsl:copy>
<xsl:copy-of select="@*"/>
</xsl:copy>
</xsl:when>
<xsl:otherwise>
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates mode="update_xml_step1"/>
</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 -->
<!-- =========================================================================== -->
<!-- =========================================================================== -->
<!-- STEP MOVE PAGEBREAK: move <pagebreak/> at top level under 'preface' and 'sections' -->
<!-- =========================================================================== -->
<xsl:template match="@*|node()" mode="update_xml_step_move_pagebreak">
<xsl:param name="page_sequence_at_top">false</xsl:param>
<xsl:copy>
<xsl:apply-templates select="@*|node()" mode="update_xml_step_move_pagebreak">
<xsl:with-param name="page_sequence_at_top" select="$page_sequence_at_top"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<!-- replace 'pagebreak' by closing tags + page_sequence and opening page_sequence + tags -->
<xsl:template match="*[local-name() = 'pagebreak'][not(following-sibling::*[1][local-name() = 'pagebreak'])]" mode="update_xml_step_move_pagebreak">
<xsl:param name="page_sequence_at_top"/>
<!-- <xsl:choose>
<xsl:when test="ancestor::*[local-name() = 'sections']">
</xsl:when>
<xsl:when test="ancestor::*[local-name() = 'annex']">
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="."/>
</xsl:otherwise>
</xsl:choose> -->
<!-- determine pagebreak is last element before </fo:flow> or not -->
<xsl:variable name="isLast">
<xsl:for-each select="ancestor-or-self::*[ancestor::*[local-name() = 'preface'] or ancestor::*[local-name() = 'sections'] or ancestor-or-self::*[local-name() = 'annex']]">
<xsl:if test="following-sibling::*">false</xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:if test="contains($isLast, 'false')">
<xsl:variable name="orientation" select="normalize-space(@orientation)"/>
<xsl:variable name="tree_">
<xsl:call-template name="makeAncestorsElementsTree">
<xsl:with-param name="page_sequence_at_top" select="$page_sequence_at_top"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="tree" select="xalan:nodeset($tree_)"/>
<!-- close fo:page-sequence (closing preceding fo elements) -->
<xsl:call-template name="insertClosingElements">
<xsl:with-param name="tree" select="$tree"/>
</xsl:call-template>
<xsl:text disable-output-escaping="yes"></page_sequence></xsl:text>
<!-- create a new page_sequence (opening elements) -->
<xsl:text disable-output-escaping="yes"><page_sequence xmlns="</xsl:text><xsl:value-of select="$namespace_full"/>"<xsl:if test="$orientation != ''"> orientation="<xsl:value-of select="$orientation"/>"</xsl:if><xsl:text disable-output-escaping="yes">></xsl:text>
<xsl:call-template name="insertOpeningElements">
<xsl:with-param name="tree" select="$tree"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
<xsl:template name="makeAncestorsElementsTree">
<xsl:param name="page_sequence_at_top"/>
<xsl:choose>
<xsl:when test="$page_sequence_at_top = 'true'">
<xsl:for-each select="ancestor::*[ancestor::*[contains(local-name(), '-standard')]]">
<element pos="{position()}">
<xsl:copy-of select="@*[local-name() != 'id']"/>
<xsl:value-of select="name()"/>
</element>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<xsl:for-each select="ancestor::*[ancestor::*[local-name() = 'preface'] or ancestor::*[local-name() = 'sections'] or ancestor-or-self::*[local-name() = 'annex']]">
<element pos="{position()}">
<xsl:copy-of select="@*[local-name() != 'id']"/>
<xsl:value-of select="name()"/>
</element>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="insertClosingElements">
<xsl:param name="tree"/>
<xsl:for-each select="$tree//element">
<xsl:sort data-type="number" order="descending" select="@pos"/>
<xsl:text disable-output-escaping="yes"></</xsl:text>
<xsl:value-of select="."/>
<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>
</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 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>
</xsl:template>
<!-- move full page width figures, tables at top level -->
<xsl:template match="*[local-name() = 'figure' or local-name() = 'table'][normalize-space(@width) != 'text-width']" mode="update_xml_step_move_pagebreak">
<xsl:param name="page_sequence_at_top">false</xsl:param>
<xsl:choose>
<xsl:when test="$layout_columns != 1">
<xsl:variable name="tree_">
<xsl:call-template name="makeAncestorsElementsTree">
<xsl:with-param name="page_sequence_at_top" select="$page_sequence_at_top"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="tree" select="xalan:nodeset($tree_)"/>
<xsl:call-template name="insertClosingElements">
<xsl:with-param name="tree" select="$tree"/>
</xsl:call-template>
<!-- <xsl:copy-of select="."/> -->
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:attribute name="top-level">true</xsl:attribute>
<xsl:copy-of select="node()"/>
</xsl:copy>
<xsl:call-template name="insertOpeningElements">
<xsl:with-param name="tree" select="$tree"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- =========================================================================== -->
<!-- END STEP MOVE PAGEBREAK: move <pagebreak/> at top level under 'preface' and 'sections' -->
<!-- =========================================================================== -->
<!-- =========================================================================== -->
<!-- STEP2: add 'fn' after 'eref' and 'origin', if referenced to bibitem with 'note' = Withdrawn.' or 'Cancelled and replaced...' -->
<!-- =========================================================================== -->
<xsl:template match="@*|node()" mode="update_xml_step2">
<xsl:copy>
<xsl:apply-templates select="@*|node()" mode="update_xml_step2"/>
</xsl:copy>
</xsl:template>
<xsl:variable name="localized_string_withdrawn">
<xsl:call-template name="getLocalizedString">
<xsl:with-param name="key">withdrawn</xsl:with-param>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="localized_string_cancelled_and_replaced">
<xsl:variable name="str">
<xsl:call-template name="getLocalizedString">
<xsl:with-param name="key">cancelled_and_replaced</xsl:with-param>
</xsl:call-template>
</xsl:variable>
<xsl:choose>
<xsl:when test="contains($str, '%')"><xsl:value-of select="substring-before($str, '%')"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$str"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- add 'fn' after eref and origin, to reference bibitem with note = 'Withdrawn.' or 'Cancelled and replaced...' -->
<xsl:template match="*[local-name() = 'eref'] | *[local-name() = 'origin']" mode="update_xml_step2">
<xsl:copy-of select="."/>
<xsl:variable name="bibitemid" select="@bibitemid"/>
<xsl:variable name="local_name" select="local-name()"/>
<xsl:variable name="position"><xsl:number count="*[local-name() = $local_name][@bibitemid = $bibitemid]" level="any"/></xsl:variable>
<xsl:if test="normalize-space($position) = '1'">
<xsl:variable name="fn_text">
<!-- <xsl:copy-of select="key('bibitems', $bibitemid)[1]/*[local-name() = 'note'][not(@type='Unpublished-Status')][normalize-space() = $localized_string_withdrawn or starts-with(normalize-space(), $localized_string_cancelled_and_replaced)]/node()" /> -->
<xsl:copy-of select="$bibitems/*[local-name() ='bibitem'][@id = $bibitemid][1]/*[local-name() = 'note'][not(@type='Unpublished-Status')][normalize-space() = $localized_string_withdrawn or starts-with(normalize-space(), $localized_string_cancelled_and_replaced)]/node()"/>
</xsl:variable>
<xsl:if test="normalize-space($fn_text) != ''">
<xsl:element name="fn" namespace="{$namespace_full}">
<xsl:attribute name="reference">bibitem_<xsl:value-of select="$bibitemid"/></xsl:attribute>
<xsl:element name="p" namespace="{$namespace_full}">
<xsl:copy-of select="$fn_text"/>
</xsl:element>
</xsl:element>
</xsl:if>
</xsl:if>
</xsl:template>
<!-- add id for table without id (for autolayout algorithm) -->
<!-- <xsl:template match="*[local-name() = 'table'][not(@id)]" mode="update_xml_step2">
<xsl:copy>
<xsl:apply-templates select="@*" mode="update_xml_step2"/>
<xsl:attribute name="id">_abc<xsl:value-of select="generate-id()"/></xsl:attribute>
<xsl:apply-templates select="node()" mode="update_xml_step2"/>
</xsl:copy>
</xsl:template> -->
<!-- add @reference for fn -->
<xsl:template match="*[local-name() = 'fn'][not(@reference)]" mode="update_xml_step2">
<xsl:copy>
<xsl:apply-templates select="@*" mode="update_xml_step2"/>
<xsl:attribute name="reference"><xsl:value-of select="generate-id(.)"/></xsl:attribute>
<xsl:apply-templates select="node()" mode="update_xml_step2"/>
</xsl:copy>
</xsl:template>
<!-- add @reference for bibitem/note, similar to fn/reference -->
<!-- <xsl:template match="*[local-name() = 'bibitem']/*[local-name() = 'note']" mode="update_xml_step2">
<xsl:copy>
<xsl:apply-templates select="@*" mode="update_xml_step2"/>
<xsl:attribute name="reference">
<xsl:value-of select="concat('bibitem_', ../@id, '_', count(preceding-sibling::*[local-name() = 'note']))"/>
</xsl:attribute>
<xsl:apply-templates select="node()" mode="update_xml_step2"/>
</xsl:copy>
</xsl:template> -->
<!-- enclose sequence of 'char x' + 'combining char y' to <lang_none>xy</lang_none> -->
<xsl:variable name="regex_combining_chars">(.[̀-ͯ])</xsl:variable>
<xsl:variable name="element_name_lang_none">lang_none</xsl:variable>
<xsl:variable name="tag_element_name_lang_none_open">###<xsl:value-of select="$element_name_lang_none"/>###</xsl:variable>
<xsl:variable name="tag_element_name_lang_none_close">###/<xsl:value-of select="$element_name_lang_none"/>###</xsl:variable>
<xsl:template match="text()" mode="update_xml_step2">
<xsl:variable name="text_" select="java:replaceAll(java:java.lang.String.new(.), $regex_combining_chars, concat($tag_element_name_lang_none_open,'$1',$tag_element_name_lang_none_close))"/>
<xsl:call-template name="replace_text_tags">
<xsl:with-param name="tag_open" select="$tag_element_name_lang_none_open"/>
<xsl:with-param name="tag_close" select="$tag_element_name_lang_none_close"/>
<xsl:with-param name="text" select="$text_"/>
</xsl:call-template>
</xsl:template>
<xsl:template match="*[local-name() = 'stem'] | *[local-name() = 'image']" mode="update_xml_step2">
<xsl:copy-of select="."/>
</xsl:template>
<!-- =========================================================================== -->
<!-- END STEP2: add 'fn' after 'eref' and 'origin', if referenced to bibitem with 'note' = Withdrawn.' or 'Cancelled and replaced...' -->
<!-- =========================================================================== -->
<!-- =========================================================================== -->
<!-- XML UPDATE STEP: enclose standard's name into tag 'keep-together_within-line' -->
<!-- keep-together_within-line for: a/b, aaa/b, a/bbb, /b -->
<!-- keep-together_within-line for: a.b, aaa.b, a.bbb, .b in table's cell ONLY -->
<!-- =========================================================================== -->
<!-- Example: <keep-together_within-line>ISO 10303-51</keep-together_within-line> -->
<xsl:template match="@*|node()" mode="update_xml_enclose_keep-together_within-line">
<xsl:copy>
<xsl:apply-templates select="@*|node()" mode="update_xml_enclose_keep-together_within-line"/>
</xsl:copy>
</xsl:template>
<xsl:variable name="express_reference_separators">_.\</xsl:variable>
<xsl:variable name="express_reference_characters" select="concat($upper,$lower,'1234567890',$express_reference_separators)"/>
<xsl:variable name="regex_express_reference">(^([A-Za-z0-9_.\\]+)$)</xsl:variable>
<xsl:variable name="element_name_keep-together_within-line">keep-together_within-line</xsl:variable>
<xsl:variable name="tag_keep-together_within-line_open">###<xsl:value-of select="$element_name_keep-together_within-line"/>###</xsl:variable>
<xsl:variable name="tag_keep-together_within-line_close">###/<xsl:value-of select="$element_name_keep-together_within-line"/>###</xsl:variable>
<!-- \S matches any non-whitespace character (equivalent to [^\r\n\t\f\v ]) -->
<!-- <xsl:variable name="regex_solidus_units">((\b((\S{1,3}\/\S+)|(\S+\/\S{1,3}))\b)|(\/\S{1,3})\b)</xsl:variable> -->
<!-- add < and > to \S -->
<xsl:variable name="regex_S">[^\r\n\t\f\v \<>\u3000-\u9FFF]</xsl:variable>
<xsl:variable name="regex_solidus_units">((\b((<xsl:value-of select="$regex_S"/>{1,3}\/<xsl:value-of select="$regex_S"/>+)|(<xsl:value-of select="$regex_S"/>+\/<xsl:value-of select="$regex_S"/>{1,3}))\b)|(\/<xsl:value-of select="$regex_S"/>{1,3})\b)</xsl:variable>
<xsl:variable name="non_white_space">[^\s\u3000-\u9FFF]</xsl:variable>
<xsl:variable name="regex_dots_units">((\b((<xsl:value-of select="$non_white_space"/>{1,3}\.<xsl:value-of select="$non_white_space"/>+)|(<xsl:value-of select="$non_white_space"/>+\.<xsl:value-of select="$non_white_space"/>{1,3}))\b)|(\.<xsl:value-of select="$non_white_space"/>{1,3})\b)</xsl:variable>
<xsl:template match="text()[not(ancestor::*[local-name() = 'bibdata'] or ancestor::*[local-name() = 'link'][not(contains(.,' '))] or ancestor::*[local-name() = 'sourcecode'] or ancestor::*[local-name() = 'math'] or ancestor::*[local-name() = 'svg'] or starts-with(., 'http://') or starts-with(., 'https://') or starts-with(., 'www.') or normalize-space() = '' )]" name="keep_together_standard_number" mode="update_xml_enclose_keep-together_within-line">
<xsl:variable name="parent" select="local-name(..)"/>
<xsl:if test="1 = 2"> <!-- alternative variant -->
<xsl:variable name="regexs">
<!-- enclose standard's number into tag 'keep-together_within-line' -->
<xsl:if test="not(ancestor::*[local-name() = 'table'])"><regex><xsl:value-of select="$regex_standard_reference"/></regex></xsl:if>
<!-- if EXPRESS reference -->
<xsl:if test="$parent = 'strong'"><regex><xsl:value-of select="$regex_express_reference"/></regex></xsl:if>
<!-- keep-together_within-line for: a/b, aaa/b, a/bbb, /b -->
<regex><xsl:value-of select="$regex_solidus_units"/></regex>
<!-- keep-together_within-line for: a.b, aaa.b, a.bbb, .b in table's cell ONLY -->
<xsl:if test="ancestor::*[local-name() = 'td' or local-name() = 'th']">
<regex><xsl:value-of select="$regex_dots_units"/></regex>
</xsl:if>
</xsl:variable>
<xsl:variable name="regex_replacement"><xsl:text>(</xsl:text>
<xsl:for-each select="xalan:nodeset($regexs)/regex">
<xsl:value-of select="."/>
<xsl:if test="position() != last()">|</xsl:if>
</xsl:for-each>
<xsl:text>)</xsl:text>
</xsl:variable>
<!-- regex_replacement='<xsl:value-of select="$regex_replacement"/>' -->
<xsl:variable name="text_replaced" select="java:replaceAll(java:java.lang.String.new(.), $regex_replacement, concat($tag_keep-together_within-line_open,'$1',$tag_keep-together_within-line_close))"/>
<!-- text_replaced='<xsl:value-of select="$text_replaced"/>' -->
<xsl:call-template name="replace_text_tags">
<xsl:with-param name="tag_open" select="$tag_keep-together_within-line_open"/>
<xsl:with-param name="tag_close" select="$tag_keep-together_within-line_close"/>
<xsl:with-param name="text" select="$text_replaced"/>
</xsl:call-template>
</xsl:if>
<xsl:if test="1 = 1">
<!-- enclose standard's number into tag 'keep-together_within-line' -->
<xsl:variable name="text">
<xsl:element name="text" namespace="{$namespace_full}">
<xsl:choose>
<xsl:when test="ancestor::*[local-name() = 'table']"><xsl:value-of select="."/></xsl:when> <!-- no need enclose standard's number into tag 'keep-together_within-line' in table cells -->
<xsl:otherwise>
<xsl:variable name="text_" select="java:replaceAll(java:java.lang.String.new(.), $regex_standard_reference, concat($tag_keep-together_within-line_open,'$1',$tag_keep-together_within-line_close))"/>
<!-- <xsl:value-of select="$text__"/> -->
<xsl:call-template name="replace_text_tags">
<xsl:with-param name="tag_open" select="$tag_keep-together_within-line_open"/>
<xsl:with-param name="tag_close" select="$tag_keep-together_within-line_close"/>
<xsl:with-param name="text" select="$text_"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:element>
</xsl:variable>
<xsl:variable name="text2">
<xsl:element name="text" namespace="{$namespace_full}">
<xsl:for-each select="xalan:nodeset($text)/*[local-name() = 'text']/node()">
<xsl:choose>
<!-- if EXPRESS reference -->
<xsl:when test="self::text() and $parent = 'strong' and translate(., $express_reference_characters, '') = ''">
<xsl:variable name="text_express" select="java:replaceAll(java:java.lang.String.new(.),$regex_express_reference,concat($tag_keep-together_within-line_open,'$1',$tag_keep-together_within-line_close))"/>
<!-- <xsl:element name="{$element_name_keep-together_within-line}"><xsl:value-of select="."/></xsl:element> -->
<xsl:call-template name="replace_text_tags">
<xsl:with-param name="tag_open" select="$tag_keep-together_within-line_open"/>
<xsl:with-param name="tag_close" select="$tag_keep-together_within-line_close"/>
<xsl:with-param name="text" select="$text_express"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise><xsl:copy-of select="."/></xsl:otherwise> <!-- copy 'as-is' for <fo:inline keep-together.within-line="always" ... -->
</xsl:choose>
</xsl:for-each>
</xsl:element>
</xsl:variable>
<!-- keep-together_within-line for: a/b, aaa/b, a/bbb, /b -->
<xsl:variable name="text3">
<xsl:element name="text" namespace="{$namespace_full}">
<xsl:for-each select="xalan:nodeset($text2)/*[local-name() = 'text']/node()">
<xsl:choose>
<xsl:when test="self::text()">
<xsl:variable name="text_units" select="java:replaceAll(java:java.lang.String.new(.),$regex_solidus_units,concat($tag_keep-together_within-line_open,'$1',$tag_keep-together_within-line_close))"/>
<!-- <xsl:variable name="text_units">
<xsl:element name="text" namespace="{$namespace_full}"> -->
<xsl:call-template name="replace_text_tags">
<xsl:with-param name="tag_open" select="$tag_keep-together_within-line_open"/>
<xsl:with-param name="tag_close" select="$tag_keep-together_within-line_close"/>
<xsl:with-param name="text" select="$text_units"/>
</xsl:call-template>
<!-- </xsl:element>
</xsl:variable>
<xsl:copy-of select="xalan:nodeset($text_units)/*[local-name() = 'text']/node()"/> -->
</xsl:when>
<xsl:otherwise><xsl:copy-of select="."/></xsl:otherwise> <!-- copy 'as-is' for <fo:inline keep-together.within-line="always" ... -->
</xsl:choose>
</xsl:for-each>
</xsl:element>
</xsl:variable>
<xsl:choose>
<xsl:when test="ancestor::*[local-name() = 'td' or local-name() = 'th']">
<!-- keep-together_within-line for: a.b, aaa.b, a.bbb, .b in table's cell ONLY -->
<xsl:for-each select="xalan:nodeset($text3)/*[local-name() = 'text']/node()">
<xsl:choose>
<xsl:when test="self::text()">
<xsl:variable name="text_dots" select="java:replaceAll(java:java.lang.String.new(.),$regex_dots_units,concat($tag_keep-together_within-line_open,'$1',$tag_keep-together_within-line_close))"/>
<!-- <xsl:variable name="text_dots">
<xsl:element name="text" namespace="{$namespace_full}"> -->
<xsl:call-template name="replace_text_tags">
<xsl:with-param name="tag_open" select="$tag_keep-together_within-line_open"/>
<xsl:with-param name="tag_close" select="$tag_keep-together_within-line_close"/>
<xsl:with-param name="text" select="$text_dots"/>
</xsl:call-template>
<!-- </xsl:element>
</xsl:variable>
<xsl:copy-of select="xalan:nodeset($text_dots)/*[local-name() = 'text']/node()"/> -->
</xsl:when>
<xsl:otherwise><xsl:copy-of select="."/></xsl:otherwise> <!-- copy 'as-is' for <fo:inline keep-together.within-line="always" ... -->
</xsl:choose>
</xsl:for-each>
</xsl:when>
<xsl:otherwise><xsl:copy-of select="xalan:nodeset($text3)/*[local-name() = 'text']/node()"/></xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:template>
<xsl:template match="*[local-name() = 'stem'] | *[local-name() = 'image']" mode="update_xml_enclose_keep-together_within-line">
<xsl:copy-of select="."/>
</xsl:template>
<xsl:template name="replace_text_tags">
<xsl:param name="tag_open"/>
<xsl:param name="tag_close"/>
<xsl:param name="text"/>
<xsl:choose>
<xsl:when test="contains($text, $tag_open)">
<xsl:value-of select="substring-before($text, $tag_open)"/>
<xsl:variable name="text_after" select="substring-after($text, $tag_open)"/>
<xsl:element name="{substring-before(substring-after($tag_open, '###'),'###')}" namespace="{$namespace_full}">
<xsl:value-of select="substring-before($text_after, $tag_close)"/>
</xsl:element>
<xsl:call-template name="replace_text_tags">
<xsl:with-param name="tag_open" select="$tag_open"/>
<xsl:with-param name="tag_close" select="$tag_close"/>
<xsl:with-param name="text" select="substring-after($text_after, $tag_close)"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise><xsl:value-of select="$text"/></xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- ===================================== -->
<!-- END XML UPDATE STEP: enclose standard's name into tag 'keep-together_within-line' -->
<!-- ===================================== -->
<!-- ===================================== -->
<!-- ===================================== -->
<!-- Make linear XML (need for landscape orientation) -->
<!-- ===================================== -->
<!-- ===================================== -->
<xsl:template match="@*|node()" mode="linear_xml">
<xsl:copy>
<xsl:apply-templates select="@*|node()" mode="linear_xml"/>
</xsl:copy>
</xsl:template>
<xsl:template match="processing-instruction()" mode="linear_xml">
<xsl:copy-of select="."/>
</xsl:template>
<!-- From:
<clause>
<title>...</title>
<p>...</p>
</clause>
To:
<clause/>
<title>...</title>
<p>...</p>
-->
<xsl:template match="*[local-name() = 'foreword'] | *[local-name() = 'foreword']//*[local-name() = 'clause'] | *[local-name() = 'preface']//*[local-name() = 'clause'][not(@type = 'corrigenda') and not(@type = 'policy') and not(@type = 'related-refs')] | *[local-name() = 'introduction'] | *[local-name() = 'introduction']//*[local-name() = 'clause'] | *[local-name() = 'sections']//*[local-name() = 'clause'] | *[local-name() = 'annex'] | *[local-name() = 'annex']//*[local-name() = 'clause'] | *[local-name() = 'references'][not(@hidden = 'true')] | *[local-name() = 'bibliography']/*[local-name() = 'clause'] | *[local-name() = 'colophon'] | *[local-name() = 'colophon']//*[local-name() = 'clause'] | *[local-name()='sections']//*[local-name()='terms'] | *[local-name()='sections']//*[local-name()='definitions'] | *[local-name()='annex']//*[local-name()='definitions']" mode="linear_xml" name="clause_linear">
<xsl:copy>
<xsl:apply-templates select="@*" mode="linear_xml"/>
<xsl:attribute name="keep-with-next">always</xsl:attribute>
<xsl:if test="local-name() = 'foreword' or local-name() = 'introduction' or local-name(..) = 'preface' or local-name(..) = 'sections' or (local-name() = 'references' and parent::*[local-name() = 'bibliography']) or (local-name() = 'clause' and parent::*[local-name() = 'bibliography']) or local-name() = 'annex' or local-name(..) = 'annex' or local-name(..) = 'colophon'">
<xsl:attribute name="mainsection">true</xsl:attribute>
</xsl:if>
</xsl:copy>
<xsl:apply-templates mode="linear_xml"/>
</xsl:template>
<xsl:template match="*[local-name() = 'term']" mode="linear_xml" priority="2">
<xsl:copy>
<xsl:apply-templates select="@*" mode="linear_xml"/>
<xsl:attribute name="keep-with-next">always</xsl:attribute>
<xsl:variable name="level">
<xsl:call-template name="getLevel"/>
</xsl:variable>
<xsl:attribute name="depth"><xsl:value-of select="$level"/></xsl:attribute>
<xsl:attribute name="ancestor">sections</xsl:attribute>
<xsl:apply-templates select="node()[not(local-name() = 'term')]" mode="linear_xml"/>
</xsl:copy>
<xsl:apply-templates select="*[local-name() = 'term']" mode="linear_xml"/>
</xsl:template>
<xsl:template match="*[local-name() = 'introduction']//*[local-name() = 'title'] | *[local-name() = 'foreword']//*[local-name() = 'title'] | *[local-name() = 'preface']//*[local-name() = 'title'] | *[local-name() = 'sections']//*[local-name() = 'title'] | *[local-name() = 'annex']//*[local-name() = 'title'] | *[local-name() = 'bibliography']/*[local-name() = 'clause']/*[local-name() = 'title'] | *[local-name() = 'references']/*[local-name() = 'title'] | *[local-name() = 'colophon']//*[local-name() = 'title']" mode="linear_xml" priority="2">
<xsl:copy>
<xsl:apply-templates select="@*" mode="linear_xml"/>
<xsl:attribute name="keep-with-next">always</xsl:attribute>
<xsl:variable name="level">
<xsl:call-template name="getLevel"/>
</xsl:variable>
<xsl:attribute name="depth"><xsl:value-of select="$level"/></xsl:attribute>
<xsl:if test="parent::*[local-name() = 'annex']">
<xsl:attribute name="depth">1</xsl:attribute>
</xsl:if>
<xsl:if test="../@inline-header = 'true' and following-sibling::*[1][local-name() = 'p']">
<xsl:copy-of select="../@inline-header"/>
</xsl:if>
<xsl:variable name="ancestor">
<xsl:choose>
<xsl:when test="ancestor::*[local-name() = 'foreword']">foreword</xsl:when>
<xsl:when test="ancestor::*[local-name() = 'introduction']">introduction</xsl:when>
<xsl:when test="ancestor::*[local-name() = 'sections']">sections</xsl:when>
<xsl:when test="ancestor::*[local-name() = 'annex']">annex</xsl:when>
<xsl:when test="ancestor::*[local-name() = 'bibliography']">bibliography</xsl:when>
</xsl:choose>
</xsl:variable>
<xsl:attribute name="ancestor">
<xsl:value-of select="$ancestor"/>
</xsl:attribute>
<xsl:attribute name="parent">
<xsl:choose>
<xsl:when test="ancestor::*[local-name() = 'preface']">preface</xsl:when>
<xsl:otherwise><xsl:value-of select="$ancestor"/></xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:apply-templates mode="linear_xml"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[local-name() = 'li']" mode="linear_xml" priority="2">
<xsl:copy>
<xsl:apply-templates select="@*" mode="linear_xml"/>
<xsl:variable name="ancestor">
<xsl:choose>
<xsl:when test="ancestor::*[local-name() = 'preface']">preface</xsl:when>
<xsl:when test="ancestor::*[local-name() = 'sections']">sections</xsl:when>
<xsl:when test="ancestor::*[local-name() = 'annex']">annex</xsl:when>
</xsl:choose>
</xsl:variable>
<xsl:attribute name="ancestor">
<xsl:value-of select="$ancestor"/>
</xsl:attribute>
<xsl:apply-templates mode="linear_xml"/>
</xsl:copy>
</xsl:template>
<!-- add @to = figure, table, clause -->
<!-- add @depth = from -->
<xsl:template match="*[local-name() = 'xref']" mode="linear_xml">
<xsl:copy>
<xsl:apply-templates select="@*" mode="linear_xml"/>
<xsl:variable name="target" select="@target"/>
<xsl:attribute name="to">
<xsl:value-of select="local-name(//*[@id = current()/@target][1])"/>
</xsl:attribute>
<xsl:attribute name="depth">
<xsl:value-of select="//*[@id = current()/@target][1]/*[local-name() = 'title']/@depth"/>
</xsl:attribute>
<xsl:apply-templates select="node()" mode="linear_xml"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[not(ancestor::*[local-name() = 'sourcecode'])]/*[local-name() = 'p' or local-name() = 'strong' or local-name() = 'em']/text()" mode="linear_xml">
<xsl:choose>
<xsl:when test="contains(., $non_breaking_hyphen)">
<xsl:call-template name="replaceChar">
<xsl:with-param name="text" select="."/>
<xsl:with-param name="replace" select="$non_breaking_hyphen"/>
<xsl:with-param name="by" select="'-'"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="replaceChar">
<xsl:param name="text"/>
<xsl:param name="replace"/>
<xsl:param name="by"/>
<xsl:choose>
<xsl:when test="$text = '' or $replace = '' or not($replace)">
<xsl:value-of select="$text"/>
</xsl:when>
<xsl:when test="contains($text, $replace)">
<xsl:value-of select="substring-before($text,$replace)"/>
<xsl:element name="inlineChar" namespace="https://www.metanorma.org/ns/jis"><xsl:value-of select="$by"/></xsl:element>
<xsl:call-template name="replaceChar">
<xsl:with-param name="text" select="substring-after($text,$replace)"/>
<xsl:with-param name="replace" select="$replace"/>
<xsl:with-param name="by" select="$by"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$text"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="*[local-name() = 'inlineChar']">
<fo:inline><xsl:value-of select="."/></fo:inline>
</xsl:template>
<!-- change @reference to actual value, and add skip_footnote_body="true" for repeatable (2nd, 3rd, ...) -->
<!--
<fn reference="1">
<p id="_8e5cf917-f75a-4a49-b0aa-1714cb6cf954">Formerly denoted as 15 % (m/m).</p>
</fn>
-->
<xsl:template match="*[local-name() = 'fn'][not(ancestor::*[(local-name() = 'table' or local-name() = 'figure')] and not(ancestor::*[local-name() = 'name']))]" mode="linear_xml" name="linear_xml_fn">
<xsl:variable name="p_fn_">
<xsl:call-template name="get_fn_list"/>
<!-- <xsl:choose>
<xsl:when test="$namespace = 'jis'">
<xsl:call-template name="get_fn_list_for_element"/>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="get_fn_list"/>
</xsl:otherwise>
</xsl:choose> -->
</xsl:variable>
<xsl:variable name="p_fn" select="xalan:nodeset($p_fn_)"/>
<xsl:variable name="gen_id" select="generate-id(.)"/>
<xsl:variable name="lang" select="ancestor::*[contains(local-name(), '-standard')]/*[local-name()='bibdata']//*[local-name()='language'][@current = 'true']"/>
<xsl:variable name="reference" select="@reference"/>
<!-- fn sequence number in document -->
<xsl:variable name="current_fn_number" select="count($p_fn//fn[@reference = $reference]/preceding-sibling::fn) + 1"/>
<xsl:copy>
<xsl:apply-templates select="@*" mode="linear_xml"/>
<!-- put actual reference number -->
<xsl:attribute name="current_fn_number">
<xsl:value-of select="$current_fn_number"/>
</xsl:attribute>
<xsl:variable name="skip_footnote_body_" select="not($p_fn//fn[@gen_id = $gen_id] and (1 = 1))"/>
<xsl:attribute name="skip_footnote_body"> <!-- false for repeatable footnote -->
<xsl:value-of select="$skip_footnote_body_"/>
</xsl:attribute>
<xsl:attribute name="ref_id">
<xsl:value-of select="concat('footnote_', $lang, '_', $reference, '_', $current_fn_number)"/>
</xsl:attribute>
<xsl:apply-templates select="node()" mode="linear_xml"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[local-name() = 'p'][@type = 'section-title']" priority="3" mode="linear_xml">
<xsl:copy>
<xsl:apply-templates select="@*" mode="linear_xml"/>
<xsl:if test="@depth = '1'">
<xsl:attribute name="mainsection">true</xsl:attribute>
</xsl:if>
<xsl:apply-templates select="node()" mode="linear_xml"/>
</xsl:copy>
</xsl:template>
<!-- ===================================== -->
<!-- ===================================== -->
<!-- END: Make linear XML (need for landscape orientation) -->
<!-- ===================================== -->
<!-- ===================================== -->
<!-- for correct rendering combining chars -->
<xsl:template match="*[local-name() = 'lang_none']">
<fo:inline xml:lang="none"><xsl:value-of select="."/></fo:inline>
</xsl:template>
<xsl:template name="printEdition">
<xsl:variable name="edition_i18n" select="normalize-space((//*[contains(local-name(), '-standard')])[1]/*[local-name() = 'bibdata']/*[local-name() = 'edition'][normalize-space(@language) != ''])"/>
<xsl:if test="$layoutVersion != '1972' and $layoutVersion != '1979' and $layoutVersion != '2024'">
<xsl:text> </xsl:text>
</xsl:if>
<xsl:choose>
<xsl:when test="$edition_i18n != ''">
<!-- Example: <edition language="fr">deuxième édition</edition> -->
<xsl:call-template name="capitalize">
<xsl:with-param name="str" select="$edition_i18n"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="edition" select="normalize-space((//*[contains(local-name(), '-standard')])[1]/*[local-name() = 'bibdata']/*[local-name() = 'edition'])"/>
<xsl:if test="$edition != ''"> <!-- Example: 1.3 -->
<xsl:call-template name="capitalize">
<xsl:with-param name="str">
<xsl:call-template name="getLocalizedString">
<xsl:with-param name="key">edition</xsl:with-param>
</xsl:call-template>
</xsl:with-param>
</xsl:call-template>
<xsl:text> </xsl:text>
<xsl:value-of select="$edition"/>
</xsl:if>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- convert YYYY-MM-DD to 'Month YYYY' or 'Month DD, YYYY' or DD Month YYYY -->
<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)"/>
<xsl:variable name="day" select="substring($date, 9, 2)"/>
<xsl:variable name="monthStr">
<xsl:call-template name="getMonthByNum">
<xsl:with-param name="num" select="$month"/>
<xsl:with-param name="lowercase" select="'true'"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="monthStr_localized">
<xsl:if test="normalize-space($monthStr) != ''"><xsl:call-template name="getLocalizedString"><xsl:with-param name="key">month_<xsl:value-of select="$monthStr"/></xsl:with-param></xsl:call-template></xsl:if>
</xsl:variable>
<xsl:variable name="result">
<xsl:choose>
<xsl:when test="$format = 'ddMMyyyy'"> <!-- convert date from format 2007-04-01 to 1 April 2007 -->
<xsl:if test="$day != ''"><xsl:value-of select="number($day)"/></xsl:if>
<xsl:text> </xsl:text>
<xsl:value-of select="normalize-space(concat($monthStr_localized, ' ' , $year))"/>
</xsl:when>
<xsl:when test="$format = 'ddMM'">
<xsl:if test="$day != ''"><xsl:value-of select="number($day)"/></xsl:if>
<xsl:text> </xsl:text><xsl:value-of select="$monthStr_localized"/>
</xsl:when>
<xsl:when test="$format = 'short' or $day = ''">
<xsl:value-of select="normalize-space(concat($monthStr_localized, ' ', $year))"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="normalize-space(concat($monthStr_localized, ' ', $day, ', ' , $year))"/> <!-- January 01, 2022 -->
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:value-of select="$result"/>
</xsl:template> <!-- convertDate -->
<!-- return Month's name by number -->
<xsl:template name="getMonthByNum">
<xsl:param name="num"/>
<xsl:param name="lang">en</xsl:param>
<xsl:param name="lowercase">false</xsl:param> <!-- return 'january' instead of 'January' -->
<xsl:variable name="monthStr_">
<xsl:choose>
<xsl:when test="$lang = 'fr'">
<xsl:choose>
<xsl:when test="$num = '01'">Janvier</xsl:when>
<xsl:when test="$num = '02'">Février</xsl:when>
<xsl:when test="$num = '03'">Mars</xsl:when>
<xsl:when test="$num = '04'">Avril</xsl:when>
<xsl:when test="$num = '05'">Mai</xsl:when>
<xsl:when test="$num = '06'">Juin</xsl:when>
<xsl:when test="$num = '07'">Juillet</xsl:when>
<xsl:when test="$num = '08'">Août</xsl:when>
<xsl:when test="$num = '09'">Septembre</xsl:when>
<xsl:when test="$num = '10'">Octobre</xsl:when>
<xsl:when test="$num = '11'">Novembre</xsl:when>
<xsl:when test="$num = '12'">Décembre</xsl:when>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="$num = '01'">January</xsl:when>
<xsl:when test="$num = '02'">February</xsl:when>
<xsl:when test="$num = '03'">March</xsl:when>
<xsl:when test="$num = '04'">April</xsl:when>
<xsl:when test="$num = '05'">May</xsl:when>
<xsl:when test="$num = '06'">June</xsl:when>
<xsl:when test="$num = '07'">July</xsl:when>
<xsl:when test="$num = '08'">August</xsl:when>
<xsl:when test="$num = '09'">September</xsl:when>
<xsl:when test="$num = '10'">October</xsl:when>
<xsl:when test="$num = '11'">November</xsl:when>
<xsl:when test="$num = '12'">December</xsl:when>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:choose>
<xsl:when test="normalize-space($lowercase) = 'true'">
<xsl:value-of select="java:toLowerCase(java:java.lang.String.new($monthStr_))"/>
</xsl:when>
<xsl:otherwise><xsl:value-of select="$monthStr_"/></xsl:otherwise>
</xsl:choose>
</xsl:template> <!-- getMonthByNum -->
<!-- return Month's name by number from localized strings -->
<xsl:template name="getMonthLocalizedByNum">
<xsl:param name="num"/>
<xsl:variable name="monthStr">
<xsl:choose>
<xsl:when test="$num = '01'">january</xsl:when>
<xsl:when test="$num = '02'">february</xsl:when>
<xsl:when test="$num = '03'">march</xsl:when>
<xsl:when test="$num = '04'">april</xsl:when>
<xsl:when test="$num = '05'">may</xsl:when>
<xsl:when test="$num = '06'">june</xsl:when>
<xsl:when test="$num = '07'">july</xsl:when>
<xsl:when test="$num = '08'">august</xsl:when>
<xsl:when test="$num = '09'">september</xsl:when>
<xsl:when test="$num = '10'">october</xsl:when>
<xsl:when test="$num = '11'">november</xsl:when>
<xsl:when test="$num = '12'">december</xsl:when>
</xsl:choose>
</xsl:variable>
<xsl:call-template name="getLocalizedString">
<xsl:with-param name="key">month_<xsl:value-of select="$monthStr"/></xsl:with-param>
</xsl:call-template>
</xsl:template> <!-- getMonthLocalizedByNum -->
<xsl:template name="insertKeywords">
<xsl:param name="sorting" select="'true'"/>
<xsl:param name="meta" select="'false'"/>
<xsl:param name="charAtEnd" select="'.'"/>
<xsl:param name="charDelim" select="', '"/>
<xsl:choose>
<xsl:when test="$sorting = 'true' or $sorting = 'yes'">
<xsl:for-each select="//*[contains(local-name(), '-standard')]/*[local-name() = 'bibdata']//*[local-name() = 'keyword']">
<xsl:sort data-type="text" order="ascending"/>
<xsl:call-template name="insertKeyword">
<xsl:with-param name="meta" select="$meta"/>
<xsl:with-param name="charAtEnd" select="$charAtEnd"/>
<xsl:with-param name="charDelim" select="$charDelim"/>
</xsl:call-template>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<xsl:for-each select="//*[contains(local-name(), '-standard')]/*[local-name() = 'bibdata']//*[local-name() = 'keyword']">
<xsl:call-template name="insertKeyword">
<xsl:with-param name="meta" select="$meta"/>
<xsl:with-param name="charAtEnd" select="$charAtEnd"/>
<xsl:with-param name="charDelim" select="$charDelim"/>
</xsl:call-template>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="insertKeyword">
<xsl:param name="charAtEnd"/>
<xsl:param name="charDelim"/>
<xsl:param name="meta"/>
<xsl:choose>
<xsl:when test="$meta = 'true'">
<xsl:value-of select="."/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
<xsl:choose>
<xsl:when test="position() != last()"><xsl:value-of select="$charDelim"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$charAtEnd"/></xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="addPDFUAmeta">
<pdf:catalog>
<pdf:dictionary type="normal" key="ViewerPreferences">
<pdf:boolean key="DisplayDocTitle">true</pdf:boolean>
</pdf:dictionary>
</pdf:catalog>
<x:xmpmeta xmlns:x="adobe:ns:meta/">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<!-- Commented after upgrade to Apache FOP 2.10
<rdf:Description xmlns:pdfaExtension="http://www.aiim.org/pdfa/ns/extension/" xmlns:pdfaProperty="http://www.aiim.org/pdfa/ns/property#" xmlns:pdfaSchema="http://www.aiim.org/pdfa/ns/schema#" rdf:about="">
<pdfaExtension:schemas>
<rdf:Bag>
<rdf:li rdf:parseType="Resource">
<pdfaSchema:namespaceURI>http://www.aiim.org/pdfua/ns/id/</pdfaSchema:namespaceURI>
<pdfaSchema:prefix>pdfuaid</pdfaSchema:prefix>
<pdfaSchema:schema>PDF/UA identification schema</pdfaSchema:schema>
<pdfaSchema:property>
<rdf:Seq>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:category>internal</pdfaProperty:category>
<pdfaProperty:description>PDF/UA version identifier</pdfaProperty:description>
<pdfaProperty:name>part</pdfaProperty:name>
<pdfaProperty:valueType>Integer</pdfaProperty:valueType>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:category>internal</pdfaProperty:category>
<pdfaProperty:description>PDF/UA amendment identifier</pdfaProperty:description>
<pdfaProperty:name>amd</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:category>internal</pdfaProperty:category>
<pdfaProperty:description>PDF/UA corrigenda identifier</pdfaProperty:description>
<pdfaProperty:name>corr</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
</rdf:li>
</rdf:Seq>
</pdfaSchema:property>
</rdf:li>
</rdf:Bag>
</pdfaExtension:schemas>
</rdf:Description> -->
<rdf:Description xmlns:pdf="http://ns.adobe.com/pdf/1.3/" xmlns:dc="http://purl.org/dc/elements/1.1/" rdf:about="">
<!-- Dublin Core properties go here -->
<dc:title>
<xsl:variable name="title">
<xsl:for-each select="(//*[contains(local-name(), '-standard')])[1]/*[local-name() = 'bibdata']">
<xsl:value-of select="*[local-name() = 'title'][@language = $lang and @type = 'main']"/>
</xsl:for-each>
</xsl:variable>
<rdf:Alt>
<rdf:li xml:lang="x-default">
<xsl:choose>
<xsl:when test="normalize-space($title) != ''">
<xsl:value-of select="$title"/>
</xsl:when>
<xsl:otherwise>
<xsl:text> </xsl:text>
</xsl:otherwise>
</xsl:choose>
</rdf:li>
</rdf:Alt>
</dc:title>
<xsl:variable name="dc_creator">
<xsl:for-each select="(//*[contains(local-name(), '-standard')])[1]/*[local-name() = 'bibdata']">
<rdf:Seq>
<xsl:for-each select="*[local-name() = 'contributor'][*[local-name() = 'role']/@type='author']">
<rdf:li>
<xsl:value-of select="*[local-name() = 'organization']/*[local-name() = 'name']"/>
</rdf:li>
<!-- <xsl:if test="position() != last()">; </xsl:if> -->
</xsl:for-each>
</rdf:Seq>
</xsl:for-each>
</xsl:variable>
<xsl:if test="normalize-space($dc_creator) != ''">
<dc:creator>
<xsl:copy-of select="$dc_creator"/>
</dc:creator>
</xsl:if>
<xsl:variable name="dc_description">
<xsl:variable name="abstract">
<xsl:copy-of select="//*[contains(local-name(), '-standard')]/*[local-name() = 'preface']/*[local-name() = 'abstract']//text()[not(ancestor::*[local-name() = 'title'])]"/>
</xsl:variable>
<rdf:Alt>
<rdf:li xml:lang="x-default">
<xsl:value-of select="normalize-space($abstract)"/>
</rdf:li>
</rdf:Alt>
</xsl:variable>
<xsl:if test="normalize-space($dc_description)">
<dc:description>
<xsl:copy-of select="$dc_description"/>
</dc:description>
</xsl:if>
<pdf:Keywords>
<xsl:call-template name="insertKeywords">
<xsl:with-param name="meta">true</xsl:with-param>
</xsl:call-template>
</pdf:Keywords>
</rdf:Description>
<rdf:Description xmlns:xmp="http://ns.adobe.com/xap/1.0/" rdf:about="">
<!-- XMP properties go here -->
<xmp:CreatorTool/>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<!-- add attachments -->
<xsl:for-each select="//*[contains(local-name(), '-standard')]/*[local-name() = 'metanorma-extension']/*[local-name() = 'attachment']">
<xsl:variable name="bibitem_attachment_" select="//*[local-name() = 'bibitem'][@hidden = 'true'][*[local-name() = 'uri'][@type = 'attachment'] = current()/@name]"/>
<xsl:variable name="bibitem_attachment" select="xalan:nodeset($bibitem_attachment_)"/>
<xsl:variable name="description" select="normalize-space($bibitem_attachment/*[local-name() = 'formattedref'])"/>
<xsl:variable name="filename" select="java:org.metanorma.fop.Util.getFilenameFromPath(@name)"/>
<!-- Todo: need update -->
<xsl:variable name="afrelationship" select="normalize-space($bibitem_attachment//*[local-name() = 'classification'][@type = 'pdf-AFRelationship'])"/>
<xsl:variable name="volatile" select="normalize-space($bibitem_attachment//*[local-name() = 'classification'][@type = 'pdf-volatile'])"/>
<pdf:embedded-file filename="{$filename}" link-as-file-annotation="true">
<xsl:attribute name="src">
<xsl:choose>
<xsl:when test="normalize-space() != ''">
<xsl:variable name="src_attachment" select="java:replaceAll(java:java.lang.String.new(.),'( | | )', '')"/> <!-- remove line breaks -->
<xsl:value-of select="$src_attachment"/>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="url" select="concat('url(file:///',$inputxml_basepath , @name, ')')"/>
<xsl:value-of select="$url"/>
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:if test="$description != ''">
<xsl:attribute name="description"><xsl:value-of select="$description"/></xsl:attribute>
</xsl:if>
<xsl:if test="$afrelationship != ''">
<xsl:attribute name="afrelationship"><xsl:value-of select="$afrelationship"/></xsl:attribute>
</xsl:if>
<xsl:if test="$volatile != ''">
<xsl:attribute name="volatile"><xsl:value-of select="$volatile"/></xsl:attribute>
</xsl:if>
</pdf:embedded-file>
</xsl:for-each>
<!-- references to external attachments (no binary-encoded within the Metanorma XML file) -->
<xsl:if test="not(//*[contains(local-name(), '-standard')]/*[local-name() = 'metanorma-extension']/*[local-name() = 'attachment'])">
<xsl:for-each select="//*[local-name() = 'bibitem'][@hidden = 'true'][*[local-name() = 'uri'][@type = 'attachment']]">
<xsl:variable name="attachment_path" select="*[local-name() = 'uri'][@type = 'attachment']"/>
<xsl:variable name="attachment_name" select="java:org.metanorma.fop.Util.getFilenameFromPath($attachment_path)"/>
<xsl:variable name="url" select="concat('url(file:///',$basepath, $attachment_path, ')')"/>
<xsl:variable name="description" select="normalize-space(*[local-name() = 'formattedref'])"/>
<!-- Todo: need update -->
<xsl:variable name="afrelationship" select="normalize-space(.//*[local-name() = 'classification'][@type = 'pdf-AFRelationship'])"/>
<xsl:variable name="volatile" select="normalize-space(.//*[local-name() = 'classification'][@type = 'pdf-volatile'])"/>
<pdf:embedded-file src="{$url}" filename="{$attachment_name}" link-as-file-annotation="true">
<xsl:if test="$description != ''">
<xsl:attribute name="description"><xsl:value-of select="$description"/></xsl:attribute>
</xsl:if>
<xsl:if test="$afrelationship != ''">
<xsl:attribute name="afrelationship"><xsl:value-of select="$afrelationship"/></xsl:attribute>
</xsl:if>
<xsl:if test="$volatile != ''">
<xsl:attribute name="volatile"><xsl:value-of select="$volatile"/></xsl:attribute>
</xsl:if>
</pdf:embedded-file>
</xsl:for-each>
</xsl:if>
</xsl:template> <!-- addPDFUAmeta -->
<xsl:template name="getId">
<xsl:choose>
<xsl:when test="../@id">
<xsl:value-of select="../@id"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat(generate-id(..), '_', text())"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- Get or calculate depth of the element -->
<xsl:template name="getLevel">
<xsl:param name="depth"/>
<!-- <xsl:message>
<xsl:choose>
<xsl:when test="local-name() = 'title'">title=<xsl:value-of select="."/></xsl:when>
<xsl:when test="local-name() = 'clause'">clause/title=<xsl:value-of select="*[local-name() = 'title']"/></xsl:when>
</xsl:choose>
</xsl:message> -->
<xsl:choose>
<xsl:when test="normalize-space(@depth) != ''">
<xsl:value-of select="@depth"/>
</xsl:when>
<xsl:when test="normalize-space($depth) != ''">
<xsl:value-of select="$depth"/>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="level_total" select="count(ancestor::*[local-name() != 'page_sequence'])"/>
<xsl:variable name="level">
<xsl:choose>
<xsl:when test="parent::*[local-name() = 'preface']">
<xsl:value-of select="$level_total - 1"/>
</xsl:when>
<xsl:when test="ancestor::*[local-name() = 'preface'] and not(ancestor::*[local-name() = 'foreword']) and not(ancestor::*[local-name() = 'introduction'])"> <!-- for preface/clause -->
<xsl:value-of select="$level_total - 1"/>
</xsl:when>
<xsl:when test="ancestor::*[local-name() = 'preface']">
<xsl:value-of select="$level_total - 2"/>
</xsl:when>
<xsl:when test="ancestor::*[local-name() = 'sections'] and self::*[local-name() = 'title']">
<!-- determine 'depth' depends on upper clause with title/@depth -->
<!-- <xsl:message>title=<xsl:value-of select="."/></xsl:message> -->
<xsl:variable name="clause_with_depth_depth" select="ancestor::*[local-name() = 'clause'][*[local-name() = 'title']/@depth][1]/*[local-name() = 'title']/@depth"/>
<!-- <xsl:message>clause_with_depth_depth=<xsl:value-of select="$clause_with_depth_depth"/></xsl:message> -->
<xsl:variable name="clause_with_depth_level" select="count(ancestor::*[local-name() = 'clause'][*[local-name() = 'title']/@depth][1]/ancestor::*)"/>
<!-- <xsl:message>clause_with_depth_level=<xsl:value-of select="$clause_with_depth_level"/></xsl:message> -->
<xsl:variable name="curr_level" select="count(ancestor::*) - 1"/>
<!-- <xsl:message>curr_level=<xsl:value-of select="$curr_level"/></xsl:message> -->
<!-- <xsl:variable name="upper_clause_depth" select="normalize-space(ancestor::*[local-name() = 'clause'][2]/*[local-name() = 'title']/@depth)"/> -->
<xsl:variable name="curr_clause_depth" select="number($clause_with_depth_depth) + (number($curr_level) - number($clause_with_depth_level)) "/>
<!-- <xsl:message>curr_clause_depth=<xsl:value-of select="$curr_clause_depth"/></xsl:message> -->
<xsl:choose>
<xsl:when test="string(number($curr_clause_depth)) != 'NaN'">
<xsl:value-of select="number($curr_clause_depth)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$level_total - 2"/>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="ancestor::*[local-name() = 'sections'] and self::*[local-name() = 'name'] and parent::*[local-name() = 'term']">
<xsl:variable name="upper_terms_depth" select="normalize-space(ancestor::*[local-name() = 'terms'][1]/*[local-name() = 'title']/@depth)"/>
<xsl:choose>
<xsl:when test="string(number($upper_terms_depth)) != 'NaN'">
<xsl:value-of select="number($upper_terms_depth + 1)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$level_total - 2"/>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="ancestor::*[local-name() = 'sections']">
<xsl:variable name="upper_clause_depth" select="normalize-space(ancestor::*[local-name() = 'clause' or local-name() = 'terms'][1]/*[local-name() = 'title']/@depth)"/>
<xsl:choose>
<xsl:when test="string(number($upper_clause_depth)) != 'NaN'">
<xsl:value-of select="number($upper_clause_depth + 1)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$level_total - 1"/>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="ancestor::*[local-name() = 'bibliography']">
<xsl:value-of select="$level_total - 1"/>
</xsl:when>
<xsl:when test="parent::*[local-name() = 'annex']">
<xsl:value-of select="$level_total - 1"/>
</xsl:when>
<xsl:when test="ancestor::*[local-name() = 'annex'] and self::*[local-name() = 'title']">
<xsl:variable name="upper_clause_depth" select="normalize-space(ancestor::*[local-name() = 'clause'][2]/*[local-name() = 'title']/@depth)"/>
<xsl:choose>
<xsl:when test="string(number($upper_clause_depth)) != 'NaN'">
<xsl:value-of select="number($upper_clause_depth + 1)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$level_total - 1"/>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="ancestor::*[local-name() = 'annex']">
<xsl:value-of select="$level_total"/>
</xsl:when>
<xsl:when test="local-name() = 'annex'">1</xsl:when>
<xsl:when test="local-name(ancestor::*[1]) = 'annex'">1</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$level_total - 1"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:value-of select="$level"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template> <!-- getLevel -->
<!-- Get or calculate depth of term's name -->
<xsl:template name="getLevelTermName">
<xsl:choose>
<xsl:when test="normalize-space(../@depth) != ''">
<xsl:value-of select="../@depth"/>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="title_level_">
<xsl:for-each select="../preceding-sibling::*[local-name() = 'title'][1]">
<xsl:call-template name="getLevel"/>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="title_level" select="normalize-space($title_level_)"/>
<xsl:choose>
<xsl:when test="$title_level != ''"><xsl:value-of select="$title_level + 1"/></xsl:when>
<xsl:otherwise>
<xsl:call-template name="getLevel"/>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:template> <!-- getLevelTermName -->
<!-- split string by separator -->
<xsl:template name="split">
<xsl:param name="pText" select="."/>
<xsl:param name="sep" select="','"/>
<xsl:param name="normalize-space" select="'true'"/>
<xsl:param name="keep_sep" select="'false'"/>
<xsl:if test="string-length($pText) >0">
<item>
<xsl:choose>
<xsl:when test="$normalize-space = 'true'">
<xsl:value-of select="normalize-space(substring-before(concat($pText, $sep), $sep))"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="substring-before(concat($pText, $sep), $sep)"/>
</xsl:otherwise>
</xsl:choose>
</item>
<xsl:if test="$keep_sep = 'true' and contains($pText, $sep)"><item><xsl:value-of select="$sep"/></item></xsl:if>
<xsl:call-template name="split">
<xsl:with-param name="pText" select="substring-after($pText, $sep)"/>
<xsl:with-param name="sep" select="$sep"/>
<xsl:with-param name="normalize-space" select="$normalize-space"/>
<xsl:with-param name="keep_sep" select="$keep_sep"/>
</xsl:call-template>
</xsl:if>
</xsl:template> <!-- split -->
<xsl:template name="getDocumentId">
<xsl:call-template name="getLang"/><xsl:value-of select="//*[local-name() = 'p'][1]/@id"/>
</xsl:template>
<xsl:template name="getDocumentId_fromCurrentNode">
<xsl:call-template name="getLang_fromCurrentNode"/><xsl:value-of select=".//*[local-name() = 'p'][1]/@id"/>
</xsl:template>
<xsl:template name="namespaceCheck">
<xsl:variable name="documentNS" select="namespace-uri(/*)"/>
<xsl:variable name="XSLNS">
<xsl:value-of select="document('')//*/namespace::iso"/>
</xsl:variable>
<xsl:if test="$documentNS != $XSLNS">
<xsl:message>[WARNING]: Document namespace: '<xsl:value-of select="$documentNS"/>' doesn't equal to xslt namespace '<xsl:value-of select="$XSLNS"/>'</xsl:message>
</xsl:if>
</xsl:template> <!-- namespaceCheck -->
<xsl:template name="getLanguage">
<xsl:param name="lang"/>
<xsl:variable name="language" select="java:toLowerCase(java:java.lang.String.new($lang))"/>
<xsl:choose>
<xsl:when test="$language = 'en'">English</xsl:when>
<xsl:when test="$language = 'fr'">French</xsl:when>
<xsl:when test="$language = 'de'">Deutsch</xsl:when>
<xsl:when test="$language = 'cn'">Chinese</xsl:when>
<xsl:otherwise><xsl:value-of select="$language"/></xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="setId">
<xsl:param name="prefix"/>
<xsl:attribute name="id">
<xsl:choose>
<xsl:when test="@id">
<xsl:value-of select="concat($prefix, @id)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat($prefix, generate-id())"/>
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:template>
<xsl:template name="add-letter-spacing">
<xsl:param name="text"/>
<xsl:param name="letter-spacing" select="'0.15'"/>
<xsl:if test="string-length($text) > 0">
<xsl:variable name="char" select="substring($text, 1, 1)"/>
<fo:inline padding-right="{$letter-spacing}mm">
<xsl:if test="$char = '®'">
<xsl:attribute name="font-size">58%</xsl:attribute>
<xsl:attribute name="baseline-shift">30%</xsl:attribute>
</xsl:if>
<xsl:value-of select="$char"/>
</fo:inline>
<xsl:call-template name="add-letter-spacing">
<xsl:with-param name="text" select="substring($text, 2)"/>
<xsl:with-param name="letter-spacing" select="$letter-spacing"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
<xsl:template name="repeat">
<xsl:param name="char" select="'*'"/>
<xsl:param name="count"/>
<xsl:if test="$count > 0">
<xsl:value-of select="$char"/>
<xsl:call-template name="repeat">
<xsl:with-param name="char" select="$char"/>
<xsl:with-param name="count" select="$count - 1"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
<xsl:template name="getLocalizedString">
<xsl:param name="key"/>
<xsl:param name="formatted">false</xsl:param>
<xsl:param name="lang"/>
<xsl:param name="returnEmptyIfNotFound">false</xsl:param>
<xsl:variable name="curr_lang">
<xsl:choose>
<xsl:when test="$lang != ''"><xsl:value-of select="$lang"/></xsl:when>
<xsl:when test="$returnEmptyIfNotFound = 'true'"/>
<xsl:otherwise>
<xsl:call-template name="getLang"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="data_value">
<xsl:choose>
<xsl:when test="$formatted = 'true'">
<xsl:apply-templates select="xalan:nodeset($bibdata)//*[local-name() = 'localized-string'][@key = $key and @language = $curr_lang]"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="normalize-space(xalan:nodeset($bibdata)//*[local-name() = 'localized-string'][@key = $key and @language = $curr_lang])"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:choose>
<xsl:when test="normalize-space($data_value) != ''">
<xsl:choose>
<xsl:when test="$formatted = 'true'"><xsl:copy-of select="$data_value"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$data_value"/></xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="/*/*[local-name() = 'localized-strings']/*[local-name() = 'localized-string'][@key = $key and @language = $curr_lang]">
<xsl:choose>
<xsl:when test="$formatted = 'true'">
<xsl:apply-templates select="/*/*[local-name() = 'localized-strings']/*[local-name() = 'localized-string'][@key = $key and @language = $curr_lang]"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="/*/*[local-name() = 'localized-strings']/*[local-name() = 'localized-string'][@key = $key and @language = $curr_lang]"/>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="$returnEmptyIfNotFound = 'true'"/>
<xsl:otherwise>
<xsl:variable name="key_">
<xsl:call-template name="capitalize">
<xsl:with-param name="str" select="translate($key, '_', ' ')"/>
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="$key_"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template> <!-- getLocalizedString -->
<xsl:template name="setTrackChangesStyles">
<xsl:param name="isAdded"/>
<xsl:param name="isDeleted"/>
<xsl:choose>
<xsl:when test="local-name() = 'math'">
<xsl:if test="$isAdded = 'true'">
<xsl:attribute name="background-color"><xsl:value-of select="$color-added-text"/></xsl:attribute>
</xsl:if>
<xsl:if test="$isDeleted = 'true'">
<xsl:attribute name="background-color"><xsl:value-of select="$color-deleted-text"/></xsl:attribute>
</xsl:if>
</xsl:when>
<xsl:otherwise>
<xsl:if test="$isAdded = 'true'">
<xsl:attribute name="border"><xsl:value-of select="$border-block-added"/></xsl:attribute>
<xsl:attribute name="padding">2mm</xsl:attribute>
</xsl:if>
<xsl:if test="$isDeleted = 'true'">
<xsl:attribute name="border"><xsl:value-of select="$border-block-deleted"/></xsl:attribute>
<xsl:if test="local-name() = 'table'">
<xsl:attribute name="background-color">rgb(255, 185, 185)</xsl:attribute>
</xsl:if>
<xsl:attribute name="padding">2mm</xsl:attribute>
</xsl:if>
</xsl:otherwise>
</xsl:choose>
</xsl:template> <!-- setTrackChangesStyles -->
<!-- see https://xmlgraphics.apache.org/fop/2.5/complexscripts.html#bidi_controls-->
<xsl:variable name="LRM" select="''"/> <!-- U+200E - LEFT-TO-RIGHT MARK (LRM) -->
<xsl:variable name="RLM" select="''"/> <!-- U+200F - RIGHT-TO-LEFT MARK (RLM) -->
<xsl:template name="setWritingMode">
<xsl:if test="$lang = 'ar'">
<xsl:attribute name="writing-mode">rl-tb</xsl:attribute>
</xsl:if>
</xsl:template>
<xsl:template name="setAlignment">
<xsl:param name="align" select="normalize-space(@align)"/>
<xsl:choose>
<xsl:when test="$lang = 'ar' and $align = 'left'">start</xsl:when>
<xsl:when test="$lang = 'ar' and $align = 'right'">end</xsl:when>
<xsl:when test="$align != ''">
<xsl:value-of select="$align"/>
</xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template name="setTextAlignment">
<xsl:param name="default">left</xsl:param>
<xsl:variable name="align" select="normalize-space(@align)"/>
<xsl:attribute name="text-align">
<xsl:choose>
<xsl:when test="$lang = 'ar' and $align = 'left'">start</xsl:when>
<xsl:when test="$lang = 'ar' and $align = 'right'">end</xsl:when>
<xsl:when test="$align = 'justified'">justify</xsl:when>
<xsl:when test="$align != '' and not($align = 'indent')"><xsl:value-of select="$align"/></xsl:when>
<xsl:when test="ancestor::*[local-name() = 'td']/@align"><xsl:value-of select="ancestor::*[local-name() = 'td']/@align"/></xsl:when>
<xsl:when test="ancestor::*[local-name() = 'th']/@align"><xsl:value-of select="ancestor::*[local-name() = 'th']/@align"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$default"/></xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:if test="$align = 'indent'">
<xsl:attribute name="margin-left">7mm</xsl:attribute>
</xsl:if>
</xsl:template>
<xsl:template name="setBlockAttributes">
<xsl:param name="text_align_default">left</xsl:param>
<xsl:call-template name="setTextAlignment">
<xsl:with-param name="default" select="$text_align_default"/>
</xsl:call-template>
<xsl:call-template name="setKeepAttributes"/>
</xsl:template>
<xsl:template name="setKeepAttributes">
<!-- https://www.metanorma.org/author/topics/document-format/text/#avoiding-page-breaks -->
<!-- Example: keep-lines-together="true" -->
<xsl:if test="@keep-lines-together = 'true'">
<xsl:attribute name="keep-together.within-column">always</xsl:attribute>
</xsl:if>
<!-- Example: keep-with-next="true" -->
<xsl:if test="@keep-with-next = 'true'">
<xsl:attribute name="keep-with-next">always</xsl:attribute>
</xsl:if>
</xsl:template>
<!-- insert cover page image -->
<!-- background cover image -->
<xsl:template name="insertBackgroundPageImage">
<xsl:param name="number">1</xsl:param>
<xsl:param name="name">coverpage-image</xsl:param>
<xsl:param name="suffix"/>
<xsl:variable name="num" select="number($number)"/>
<!-- background image -->
<fo:block-container absolute-position="fixed" left="0mm" top="0mm" font-size="0" id="__internal_layout__coverpage{$suffix}_{$name}_{$number}_{generate-id()}">
<fo:block>
<xsl:for-each select="/*[contains(local-name(), '-standard')]/*[local-name() = 'metanorma-extension']/*[local-name() = 'presentation-metadata'][*[local-name() = 'name'] = $name][1]/*[local-name() = 'value']/*[local-name() = 'image'][$num]">
<xsl:choose>
<xsl:when test="*[local-name() = 'svg'] or java:endsWith(java:java.lang.String.new(@src), '.svg')">
<fo:instream-foreign-object fox:alt-text="Image Front">
<xsl:attribute name="content-height"><xsl:value-of select="$pageHeight"/>mm</xsl:attribute>
<xsl:call-template name="getSVG"/>
</fo:instream-foreign-object>
</xsl:when>
<xsl:when test="starts-with(@src, 'data:application/pdf;base64')">
<fo:external-graphic src="{@src}" fox:alt-text="Image Front"/>
</xsl:when>
<xsl:otherwise> <!-- bitmap image -->
<xsl:variable name="coverimage_src" select="normalize-space(@src)"/>
<xsl:if test="$coverimage_src != ''">
<xsl:variable name="coverpage">
<xsl:call-template name="getImageURL">
<xsl:with-param name="src" select="$coverimage_src"/>
</xsl:call-template>
</xsl:variable>
<!-- <xsl:variable name="coverpage" select="concat('url(file:',$basepath, 'coverpage1.png', ')')"/> --> <!-- for DEBUG -->
<fo:external-graphic src="{$coverpage}" width="{$pageWidth}mm" content-height="scale-to-fit" scaling="uniform" fox:alt-text="Image Front"/>
</xsl:if>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</fo:block>
</fo:block-container>
</xsl:template>
<xsl:template name="getImageURL">
<xsl:param name="src"/>
<xsl:choose>
<xsl:when test="starts-with($src, 'data:image')">
<xsl:value-of select="$src"/>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="@extracted = 'true'"> <!-- added in mn2pdf v1.97 -->
<xsl:value-of select="concat('url(file:///', @src, ')')"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat('url(file:///',$basepath, $src, ')')"/>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="getSVG">
<xsl:choose>
<xsl:when test="*[local-name() = 'svg']">
<xsl:apply-templates select="*[local-name() = 'svg']" mode="svg_update"/>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="svg_content" select="document(@src)"/>
<xsl:for-each select="xalan:nodeset($svg_content)/node()">
<xsl:apply-templates select="." mode="svg_update"/>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- END: insert cover page image -->
<xsl:variable name="regex_ja_spec">[\uFF08\uFF09]</xsl:variable>
<xsl:template name="insertVerticalChar">
<xsl:param name="str"/>
<xsl:param name="writing-mode">lr-tb</xsl:param>
<xsl:param name="reference-orientation">90</xsl:param>
<xsl:param name="add_zero_width_space">false</xsl:param>
<xsl:if test="string-length($str) > 0">
<xsl:variable name="char" select="substring($str,1,1)"/>
<fo:inline-container text-align="center" alignment-baseline="central" width="1em" margin="0" padding="0" text-indent="0mm" last-line-end-indent="0mm" start-indent="0mm" end-indent="0mm">
<xsl:if test="normalize-space($writing-mode) != ''">
<xsl:attribute name="writing-mode"><xsl:value-of select="$writing-mode"/></xsl:attribute>
<xsl:attribute name="reference-orientation">90</xsl:attribute>
</xsl:if>
<xsl:if test="normalize-space(java:matches(java:java.lang.String.new($char), concat('(', $regex_ja_spec, '{1,})'))) = 'true'">
<xsl:attribute name="reference-orientation">0</xsl:attribute>
</xsl:if>
<fo:block-container width="1em">
<fo:block line-height="1em"><xsl:value-of select="$char"/></fo:block>
</fo:block-container>
</fo:inline-container>
<xsl:if test="$add_zero_width_space = 'true' and ($char = ',' or $char = '.' or $char = ' ' or $char = '·' or $char = ')' or $char = ']' or $char = '}')"><xsl:value-of select="$zero_width_space"/></xsl:if>
<xsl:call-template name="insertVerticalChar">
<xsl:with-param name="str" select="substring($str, 2)"/>
<xsl:with-param name="writing-mode" select="$writing-mode"/>
<xsl:with-param name="reference-orientation" select="$reference-orientation"/>
<xsl:with-param name="add_zero_width_space" select="$add_zero_width_space"/>
</xsl:call-template>
</xsl:if>
</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>
<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()"/>
<xsl:variable name="value">
<xsl:choose>
<xsl:when test="$ordinal != ''">
<xsl:value-of select="$ordinal"/>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="$number < 100">
<xsl:variable name="decade" select="concat(substring($number,1,1), '0')"/>
<xsl:variable name="digit" select="substring($number,2)"/>
<xsl:value-of select="xalan:nodeset($words)//word[@cardinal = $decade]/text()"/>
<xsl:value-of select="xalan:nodeset($words)//word[@ordinal = $digit]/text()"/>
</xsl:when>
<xsl:otherwise>
<!-- more 100 -->
<xsl:variable name="hundred" select="substring($number,1,1)"/>
<xsl:variable name="digits" select="number(substring($number,2))"/>
<xsl:value-of select="xalan:nodeset($words)//word[@cardinal = $hundred]/text()"/>
<xsl:value-of select="xalan:nodeset($words)//word[@cardinal = '100']/text()"/>
<xsl:call-template name="number-to-words">
<xsl:with-param name="number" select="$digits"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:choose>
<xsl:when test="$first = 'true'">
<xsl:variable name="value_lc" select="java:toLowerCase(java:java.lang.String.new($value))"/>
<xsl:call-template name="capitalize">
<xsl:with-param name="str" select="$value_lc"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$value"/>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:template> <!-- number-to-words -->
<!-- st for 1, nd for 2, rd for 3, th for 4, 5, 6, ... -->
<xsl:template name="number-to-ordinal">
<xsl:param name="number"/>
<xsl:param name="curr_lang"/>
<xsl:choose>
<xsl:when test="$curr_lang = 'fr'">
<xsl:choose>
<xsl:when test="$number = '1'">re</xsl:when>
<xsl:otherwise>e</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="$number = 1">st</xsl:when>
<xsl:when test="$number = 2">nd</xsl:when>
<xsl:when test="$number = 3">rd</xsl:when>
<xsl:otherwise>th</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:template> <!-- number-to-ordinal -->
<!-- add the attribute fox:alt-text, required for PDF/UA -->
<xsl:template name="setAltText">
<xsl:param name="value"/>
<xsl:attribute name="fox:alt-text">
<xsl:choose>
<xsl:when test="normalize-space($value) != ''">
<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:template match="*" mode="print_as_xml">
<xsl:param name="level">0</xsl:param>
<fo:block margin-left="{2*$level}mm">
<xsl:text>
<</xsl:text>
<xsl:value-of select="local-name()"/>
<xsl:for-each select="@*">
<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:text>></xsl:text>
<xsl:if test="not(*)">
<fo:inline font-weight="bold"><xsl:value-of select="."/></fo:inline>
<xsl:text></</xsl:text>
<xsl:value-of select="local-name()"/>
<xsl:text>></xsl:text>
</xsl:if>
</fo:block>
<xsl:if test="*">
<fo:block>
<xsl:apply-templates mode="print_as_xml">
<xsl:with-param name="level" select="$level + 1"/>
</xsl:apply-templates>
</fo:block>
<fo:block margin-left="{2*$level}mm">
<xsl:text></</xsl:text>
<xsl:value-of select="local-name()"/>
<xsl:text>></xsl:text>
</fo:block>
</xsl:if>
</xsl:template>
<xsl:template match="@*|node()" mode="set_table_role_skip">
<xsl:copy>
<xsl:apply-templates select="@*|node()" mode="set_table_role_skip"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[starts-with(local-name(), 'table')]" mode="set_table_role_skip">
<xsl:copy>
<xsl:apply-templates select="@*" mode="set_table_role_skip"/>
<xsl:attribute name="role">SKIP</xsl:attribute>
<xsl:apply-templates select="node()" mode="set_table_role_skip"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>