lib/isodoc/ogc/ogc.white-paper.xsl in metanorma-ogc-2.6.3 vs lib/isodoc/ogc/ogc.white-paper.xsl in metanorma-ogc-2.6.4

- old
+ new

@@ -4182,12 +4182,13 @@ <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:value-of select="$current_fn_number"/> + <xsl:value-of select="$current_fn_number"/> + </xsl:variable> <xsl:variable name="ref_id"> <xsl:choose> <xsl:when test="normalize-space(@ref_id) != ''"><xsl:value-of select="@ref_id"/></xsl:when> @@ -4218,12 +4219,14 @@ <xsl:attribute name="padding-right">0.5mm</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}" role="Lbl"> - <xsl:copy-of select="$current_fn_number_text"/> + <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> @@ -4506,11 +4509,11 @@ <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="{@reference}"> <!-- @reference | ancestor::*[local-name()='clause'][1]/@id--> + <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> @@ -5514,13 +5517,23 @@ <fo:inline background-color="yellow"> <xsl:apply-templates/> </fo:inline> </xsl:template> - <xsl:template match="text()[ancestor::*[local-name()='smallcap']]"> + <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" select="."/> + <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_"> 0.75 </xsl:variable> <xsl:variable name="ratio" select="number(normalize-space($ratio_))"/> <fo:inline font-size="{$ratio * 100}%" role="SKIP"> @@ -6962,13 +6975,16 @@ <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="{$target}"> + <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(.) = ''"> @@ -6991,10 +7007,18 @@ </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"> @@ -7021,11 +7045,11 @@ </xsl:template> <xsl:template match="*[local-name() = 'callout']"> <xsl:choose> <xsl:when test="normalize-space(@target) = ''">&lt;<xsl:apply-templates/>&gt;</xsl:when> - <xsl:otherwise><fo:basic-link internal-destination="{@target}" fox:alt-text="{@target}">&lt;<xsl:apply-templates/>&gt;</fo:basic-link></xsl:otherwise> + <xsl:otherwise><fo:basic-link internal-destination="{@target}" fox:alt-text="{normalize-space()}">&lt;<xsl:apply-templates/>&gt;</fo:basic-link></xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="*[local-name() = 'annotation']"> <xsl:variable name="annotation-id" select="@id"/> @@ -7050,11 +7074,14 @@ </xsl:template> <xsl:template match="*[local-name() = 'xref']"> <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: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()) &lt; 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"/> @@ -9552,16 +9579,18 @@ </fo:block-container> </xsl:when> <!-- end block --> <xsl:when test="contains(normalize-space($fo_element), 'list')"> - <xsl:variable name="provisional_distance_between_starts"> + <xsl:variable name="provisional_distance_between_starts_"> 7 </xsl:variable> - <xsl:variable name="indent"> + <xsl:variable name="provisional_distance_between_starts" select="normalize-space($provisional_distance_between_starts_)"/> + <xsl:variable name="indent_"> 0 </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> @@ -10291,18 +10320,21 @@ <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="type" select="../@type"/> - <xsl:variable name="style_prefix_"> <xsl:if test="$type = 'roman'"> <!-- Example: (i) --> </xsl:if> + <xsl:if test="$type = 'alphabet'"> + + </xsl:if> </xsl:variable> <xsl:variable name="style_prefix" select="normalize-space($style_prefix_)"/> <xsl:variable name="style_suffix_"> <xsl:choose> @@ -10324,17 +10356,19 @@ <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:value-of select="normalize-space($label)"/> + <xsl:value-of select="normalize-space($label)"/> </xsl:when> <xsl:otherwise> <!-- for ordered lists 'ol' --> <!-- Example: for BSI <?list-start 2?> --> @@ -12534,11 +12568,12 @@ <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() = 'span'][@class = 'pdf-AFRelationship'])"/> + <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 xmlns:pdf="http://xmlgraphics.apache.org/fop/extensions/pdf" filename="{$filename}" link-as-file-annotation="true"> <xsl:attribute name="src"> <xsl:choose> <xsl:when test="normalize-space() != ''"> @@ -12555,28 +12590,35 @@ <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() = 'span'][@class = 'pdf-AFRelationship'])"/> + <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 xmlns:pdf="http://xmlgraphics.apache.org/fop/extensions/pdf" 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: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 --> @@ -12619,21 +12661,42 @@ </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']"> - <xsl:variable name="upper_clause_depth" select="normalize-space(ancestor::*[local-name() = 'clause'][2]/*[local-name() = 'title']/@depth)"/> + <!-- 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($upper_clause_depth)) != 'NaN'"> - <xsl:value-of select="number($upper_clause_depth + 1)"/> + <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'][1]/*[local-name() = 'title']/@depth)"/> + <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> \ No newline at end of file