Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package suse-xsl-stylesheets for 
openSUSE:Factory checked in at 2023-05-21 19:08:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/suse-xsl-stylesheets (Old)
 and      /work/SRC/openSUSE:Factory/.suse-xsl-stylesheets.new.1533 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "suse-xsl-stylesheets"

Sun May 21 19:08:12 2023 rev:66 rq:1087910 version:2.91.2

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/suse-xsl-stylesheets/suse-xsl-stylesheets.changes    
    2023-04-20 15:13:56.817811949 +0200
+++ 
/work/SRC/openSUSE:Factory/.suse-xsl-stylesheets.new.1533/suse-xsl-stylesheets.changes
      2023-05-21 19:08:25.258336661 +0200
@@ -1,0 +2,23 @@
+Fri May 12 08:07:51 UTC 2023 - Thomas Schraitle <[email protected]> - 
2.91.2
+
+- Update 2.91.2
+  Docteam 920 metadata part3 by @tomschr in #546:
+  - Correct copy-and-paste error for twitter:*
+  - Use <meta name="..."> instead of <meta property="...">
+
+-------------------------------------------------------------------
+Tue May  9 11:47:05 UTC 2023 - Thomas Schraitle <[email protected]> - 
2.91.1
+
+- Update 2.91.1
+  - Improve social media (Twitter OpenGraph) (#544)
+
+-------------------------------------------------------------------
+Mon May  8 13:35:16 UTC 2023 - Thomas Schraitle <[email protected]> - 
2.91.0
+
+- Update 2.91.0
+  - DOCTEAM-633: Preparing SUSE header changes by @tomschr in #531
+  - Metadata for HTML output by @tomschr in #542
+  - Include XML files into GitHub statistics
+
+
+-------------------------------------------------------------------

Old:
----
  suse-xsl-2.90.0.tar.bz2

New:
----
  suse-xsl-2.91.2.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ suse-xsl-stylesheets.spec ++++++
--- /var/tmp/diff_new_pack.zEz1JF/_old  2023-05-21 19:08:25.746339447 +0200
+++ /var/tmp/diff_new_pack.zEz1JF/_new  2023-05-21 19:08:25.750339470 +0200
@@ -22,7 +22,7 @@
 %define suse_styles_dir   %{db_xml_dir}/stylesheet
 #
 Name:           suse-xsl-stylesheets
-Version:        2.90.0
+Version:        2.91.2
 Release:        0
 Summary:        SUSE-Branded Stylesheets for DocBook
 License:        GPL-2.0-only OR GPL-3.0-only

++++++ suse-xsl-2.90.0.tar.bz2 -> suse-xsl-2.91.2.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/suse-xsl-2.90.0/ChangeLog 
new/suse-xsl-2.91.2/ChangeLog
--- old/suse-xsl-2.90.0/ChangeLog       2023-04-18 11:03:11.000000000 +0200
+++ new/suse-xsl-2.91.2/ChangeLog       2023-05-12 08:57:18.000000000 +0200
@@ -1,4 +1,26 @@
 -------------------------------------------------------------------
+Fri May 12 08:56:00 UTC 2022 - [email protected]
+
+- Update 2.92.2
+  - Use search.description.length and search.title.length
+  - Correct copy-and-paste error for "twitter:*":
+    Use <meta name="..."> instead of <meta property="...">
+
+-------------------------------------------------------------------
+Mon May 09 13:25:00 UTC 2022 - [email protected]
+
+- Update 2.91.1
+  - Improve social media (Twitter OpenGraph) #544 
+
+-------------------------------------------------------------------
+Mon May 08 15:25:00 UTC 2022 - [email protected]
+
+- Update 2.91.0
+  - DOCTEAM-633: Preparing SUSE header changes (#531)
+  - Include XML files into GitHub statistics
+  - Metadata for HTML (#542)
+
+-------------------------------------------------------------------
 Tue Apr 18 11:02:00 UTC 2022 - [email protected]
 
 - Update 2.90.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/suse-xsl-2.90.0/Makefile new/suse-xsl-2.91.2/Makefile
--- old/suse-xsl-2.90.0/Makefile        2023-04-18 11:03:11.000000000 +0200
+++ new/suse-xsl-2.91.2/Makefile        2023-05-12 08:57:18.000000000 +0200
@@ -11,7 +11,7 @@
 
 SHELL         := /bin/bash
 PACKAGE       := suse-xsl-stylesheets
-VERSION       := 2.90.0
+VERSION       := 2.91.2
 CDIR          := $(shell pwd)
 SUSE_XML_PATH := $(PREFIX)/xml/suse
 DB_XML_PATH   := $(PREFIX)/xml/docbook
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/suse-xsl-2.90.0/suse2022-ns/common/utility.xsl 
new/suse-xsl-2.91.2/suse2022-ns/common/utility.xsl
--- old/suse-xsl-2.90.0/suse2022-ns/common/utility.xsl  2023-04-18 
11:03:11.000000000 +0200
+++ new/suse-xsl-2.91.2/suse2022-ns/common/utility.xsl  2023-05-12 
08:57:18.000000000 +0200
@@ -173,4 +173,42 @@
       </xsl:otherwise>
     </xsl:choose>
   </xsl:template>
+
+
+  <!--  -->
+  <xsl:template name="get-lang-for-ssi">
+    <xsl:param name="node" select="."/>
+    <xsl:variable name="lang-scope" 
select="$node/ancestor-or-self::*[@xml:lang][1]"/>
+
+    <xsl:variable name="lang-attr">
+      <xsl:variable name="lang-tmp" select="($lang-scope/@xml:lang)[1]"/>
+      <xsl:choose>
+        <xsl:when test="$lang-tmp">
+          <xsl:choose>
+            <!-- Rewrite language from simple two-character language code into 
LANG-COUNTRY-->
+            <xsl:when test="$lang-tmp = 'en'">en-us</xsl:when>
+            <xsl:when test="$lang-tmp = 'cs'">cs-cz</xsl:when>
+            <xsl:when test="$lang-tmp = 'de'">de-de</xsl:when>
+            <xsl:when test="$lang-tmp = 'es'">es-es</xsl:when>
+            <xsl:when test="$lang-tmp = 'fr'">fr-fr</xsl:when>
+            <xsl:when test="$lang-tmp = 'ko'">ko-kr</xsl:when>
+            <xsl:when test="$lang-tmp = 'ja'">ja-jp</xsl:when>
+            <xsl:when test="$lang-tmp = 'pt'">pt-br</xsl:when>
+            <xsl:otherwise>
+              <xsl:value-of select="$lang-tmp"/>
+            </xsl:otherwise>
+          </xsl:choose>
+        </xsl:when>
+        <!-- If we haven't found a language, fall back to English: -->
+        <xsl:otherwise>en-us</xsl:otherwise>
+      </xsl:choose>
+    </xsl:variable>
+    <!--<xsl:message>get-lang-for-ssi
+      lang-scope=<xsl:value-of select="count($lang-scope)"/>
+      lang=<xsl:value-of select="($lang-scope/@xml:lang)[1]"/>
+      lang-attr=<xsl:value-of select="$lang-attr"/>
+    </xsl:message>-->
+
+    <xsl:value-of select="$lang-attr"/>
+  </xsl:template>
 </xsl:stylesheet>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/suse-xsl-2.90.0/suse2022-ns/xhtml/chunk-common.xsl 
new/suse-xsl-2.91.2/suse2022-ns/xhtml/chunk-common.xsl
--- old/suse-xsl-2.90.0/suse2022-ns/xhtml/chunk-common.xsl      2023-04-18 
11:03:11.000000000 +0200
+++ new/suse-xsl-2.91.2/suse2022-ns/xhtml/chunk-common.xsl      2023-05-12 
08:57:18.000000000 +0200
@@ -226,37 +226,64 @@
     <xsl:param name="nav.context"/>
     <xsl:param name="content"/>
 
-    <xsl:variable name="lang">
-      <xsl:apply-templates select="(ancestor-or-self::*/@xml:lang)[last()]" 
mode="html.lang.attribute"/>
+    <xsl:variable name="lang-scope" 
select="ancestor-or-self::*[@xml:lang][1]"/>
+    <xsl:variable name="lang-attr">
+      <xsl:call-template name="get-lang-for-ssi" />
     </xsl:variable>
 
     <xsl:call-template name="user.preroot"/>
 
-    <html lang="{$lang}">
-      <xsl:call-template name="root.attributes"/>
+    <html>
+      <xsl:attribute name="lang">
+        <xsl:choose>
+          <xsl:when test="$rootid">
+            <xsl:call-template name="l10n.language">
+              <xsl:with-param name="target" select="key('id', $rootid)"/>
+            </xsl:call-template>
+          </xsl:when>
+          <xsl:otherwise>
+            <xsl:call-template name="l10n.language">
+              <xsl:with-param name="target" select="/*[1]"/>
+            </xsl:call-template>
+          </xsl:otherwise>
+        </xsl:choose>
+      </xsl:attribute>
+      <xsl:call-template name="root.attributes" />
       <xsl:call-template name="html.head">
-        <xsl:with-param name="prev" select="$prev"/>
-        <xsl:with-param name="next" select="$next"/>
+        <xsl:with-param name="prev" select="$prev" />
+        <xsl:with-param name="next" select="$next" />
       </xsl:call-template>
 
       <body>
-        <xsl:call-template name="body.attributes"/>
-        <xsl:call-template name="outerelement.class.attribute"/>
+        <xsl:call-template name="body.attributes" />
+        <xsl:call-template name="outerelement.class.attribute" />
+        <xsl:if test="$include.suse.header">
+          <xsl:variable name="candidate.suse.header.body">
+            <xsl:call-template name="string.subst">
+              <xsl:with-param name="string" select="$include.ssi.body" />
+              <xsl:with-param name="target" select="$placeholder.ssi.language" 
/>
+              <xsl:with-param name="replacement" select="$lang-attr" />
+            </xsl:call-template>
+          </xsl:variable>
+          <xsl:text>&#10;</xsl:text>
+          <xsl:comment>#include virtual="<xsl:value-of 
select="$candidate.suse.header.body" />"</xsl:comment>
+          <xsl:text>&#10;</xsl:text>
+        </xsl:if>
         <xsl:call-template name="bypass">
-          <xsl:with-param name="format" select="'chunk'"/>
+          <xsl:with-param name="format" select="'chunk'" />
         </xsl:call-template>
 
-        <xsl:call-template name="user.header.content"/>
+        <xsl:call-template name="user.header.content" />
 
-        <xsl:call-template name="breadcrumbs.navigation"/>
+        <xsl:call-template name="breadcrumbs.navigation" />
 
         <main id="_content">
 
-          <xsl:call-template name="side.toc.overall"/>
+          <xsl:call-template name="side.toc.overall" />
           <button id="_open-side-toc-overall">
             <xsl:attribute name="title">
               <xsl:call-template name="gentext">
-                <xsl:with-param name="key" select="'TableofContents'"/>
+                <xsl:with-param name="key" select="'TableofContents'" />
               </xsl:call-template>
             </xsl:attribute>
             <xsl:text> </xsl:text>
@@ -266,24 +293,24 @@
 
             <button id="_unfold-side-toc-page">
               <xsl:call-template name="gentext">
-                <xsl:with-param name="key" select="'onthispage'"/>
+                <xsl:with-param name="key" select="'onthispage'" />
               </xsl:call-template>
             </button>
-            <xsl:copy-of select="$content"/>
+            <xsl:copy-of select="$content" />
 
             <xsl:call-template name="bottom.navigation">
-              <xsl:with-param name="prev" select="$prev"/>
-              <xsl:with-param name="next" select="$next"/>
-              <xsl:with-param name="nav.context" select="$nav.context"/>
+              <xsl:with-param name="prev" select="$prev" />
+              <xsl:with-param name="next" select="$next" />
+              <xsl:with-param name="nav.context" select="$nav.context" />
             </xsl:call-template>
 
           </article>
 
-          <xsl:call-template name="side.toc.page"/>
+          <xsl:call-template name="side.toc.page" />
 
         </main>
 
-        <xsl:call-template name="user.footer.content"/>
+        <xsl:call-template name="user.footer.content" />
 
       </body>
     </html>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/suse-xsl-2.90.0/suse2022-ns/xhtml/docbook.xsl 
new/suse-xsl-2.91.2/suse2022-ns/xhtml/docbook.xsl
--- old/suse-xsl-2.90.0/suse2022-ns/xhtml/docbook.xsl   2023-04-18 
11:03:11.000000000 +0200
+++ new/suse-xsl-2.91.2/suse2022-ns/xhtml/docbook.xsl   2023-05-12 
08:57:18.000000000 +0200
@@ -72,6 +72,7 @@
   <xsl:include href="titlepage.templates.xsl"/>
 
   <xsl:include href="tracker.meta.xsl"/>
+  <xsl:include href="meta.xsl"/>
 
 
 <!-- Actual templates start here -->
@@ -178,6 +179,9 @@
 
   <xsl:variable name="meta.description.base">
     <xsl:choose>
+      <xsl:when test="d:info/d:meta[@name='description']">
+        <xsl:value-of 
select="normalize-space(d:info/d:meta[@name='description'][1])"/>
+      </xsl:when>
       <xsl:when test="d:info/d:abstract or d:info/d:highlights">
         <xsl:for-each 
select="(d:info[1]/d:abstract[1]|d:info[1]/d:highlights[1])[1]/*">
           <xsl:value-of select="normalize-space(.)"/>
@@ -248,38 +252,36 @@
       <xsl:with-param name="ellipsize.after" 
select="$socialmedia.title.length"/>
     </xsl:call-template>
   </xsl:variable>
+  <xsl:variable name="metanodes" 
select="$node/ancestor-or-self::*/d:info/d:meta"/>
 
-  <xsl:variable name="socialmedia.preview">
-    <xsl:choose>
-      <!-- We ignore:
-           * inlinemediaobjects, because they are likely very small
-           * SVGs, because they don't work (according to the Contentking) -->
-      <!-- We reimplement ends-with() 
https://stackoverflow.com/questions/40934644 -->
-      <xsl:when
-        test="(descendant::d:figure/descendant::d:imagedata/@fileref
-              
|descendant::d:informalfigure/descendant::d:imagedata/@fileref)[not(
-               substring(translate(., 'SVG', 'svg'), string-length(.) - 5) = 
'.svg')][1]">
-        <xsl:value-of
-          select="concat($canonical-url-base, '/', $img.src.path,
-                  (descendant::d:figure/descendant::d:imagedata/@fileref
-                  
|descendant::d:informalfigure/descendant::d:imagedata/@fileref)[not(
-                    substring(translate(., 'SVG', 'svg'), string-length(.) - 
5) = '.svg')][1])"/>
-      </xsl:when>
-      <xsl:otherwise>
-        <xsl:value-of select="concat($canonical-url-base, '/', 
$socialmedia.preview.default)"/>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:variable>
-
-  <meta charset="UTF-8"/>
+  <title><xsl:value-of select="$title"/></title>
 
-  <meta name="viewport"
+  <xsl:choose>
+    <xsl:when test="$include.suse.header">
+      <xsl:variable name="candidate.suse.header.head">
+        <xsl:call-template name="string.subst">
+          <xsl:with-param name="string" select="$include.ssi.header" />
+          <xsl:with-param name="target" select="$placeholder.ssi.language" />
+          <xsl:with-param name="replacement">
+            <xsl:call-template name="get-lang-for-ssi" />
+          </xsl:with-param>
+        </xsl:call-template>
+      </xsl:variable>
+      <xsl:text>&#10;</xsl:text>
+      <xsl:comment>#include virtual="<xsl:value-of 
select="$candidate.suse.header.head" />"</xsl:comment>
+      <xsl:text>&#10;</xsl:text>
+    </xsl:when>
+    <xsl:otherwise>
+      <meta charset="UTF-8"/>
+      <meta name="viewport"
     content="width=device-width, initial-scale=1.0, user-scalable=yes"/>
-
-  <title><xsl:value-of select="$title"/></title>
+    </xsl:otherwise>
+  </xsl:choose>
 
   <xsl:if test="$html.base != ''">
-    <base href="{$html.base}"/>
+    <xsl:call-template name="head.content.base">
+      <xsl:with-param name="node" select="$node"/>
+    </xsl:call-template>
   </xsl:if>
 
   <!-- Insert links to CSS files or insert literal style elements -->
@@ -292,6 +294,13 @@
     <xsl:text>&#10;</xsl:text>
   </xsl:if>
 
+  <xsl:if test="$include.html.dublincore">
+    <!-- For Dublin Core metadata -->
+    <link rel="schema.DC"      href="http://purl.org/dc/elements/1.1/"; />
+    <link rel="schema.DCTERMS" href="http://purl.org/dc/terms/"; />
+    <xsl:text>&#10;</xsl:text>
+  </xsl:if>
+
   <xsl:if test="$html.script != ''">
     <xsl:call-template name="output.html.scripts">
       <xsl:with-param name="scripts" select="normalize-space($html.script)"/>
@@ -328,58 +337,21 @@
   <xsl:call-template name="create.bugtracker.information"/>
 
   <xsl:apply-templates select="." mode="head.keywords.content"/>
+  <meta name="publisher" content="SUSE"/>
 
-  <xsl:if test="$canonical-url-base != ''">
-    <xsl:variable name="ischunk">
-      <xsl:call-template name="chunk"/>
-    </xsl:variable>
-    <xsl:variable name="filename">
-      <xsl:choose>
-        <xsl:when test="$ischunk = 1">
-          <xsl:apply-templates mode="chunk-filename" select="."/>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:value-of select="concat($root.filename,$html.ext)"/>
-        </xsl:otherwise>
-      </xsl:choose>
-    </xsl:variable>
-    <xsl:variable name="canonical.url">
-      <xsl:value-of select="concat($canonical-url-base,'/',$filename)"/>
-    </xsl:variable>
-
-    <link rel="canonical" href="{$canonical.url}"/>
-    <xsl:text>&#10;</xsl:text>
-    <!-- These Open Graph and Twitter Cards properties need a canonical URL -->
-    <meta property="og:url" content="{$canonical.url}"/>
-    <xsl:text>&#10;</xsl:text>
-    <meta property="og:image" 
content="{concat($canonical-url-base,'/',$socialmedia.preview)}"/>
-    <xsl:text>&#10;</xsl:text>
-    <meta name="twitter:image" 
content="{concat($canonical-url-base,'/',$socialmedia.preview)}"/>
-    <xsl:text>&#10;</xsl:text>
-
-    <xsl:call-template name="meta-generator"/>
-  </xsl:if>
-
-  <!-- The following properties "work" without a canonical URL being defined
-  (but both the Open Graph and Twitter Cards implementations are incomplete
-  without the above tags, better than nothing though). -->
-  <meta property="og:title" content="{$socialmedia.title}"/>
-  <xsl:text>&#10;</xsl:text>
-  <meta property="og:description" content="{$socialmedia.description}"/>
-  <xsl:text>&#10;</xsl:text>
-  <meta property="og:type" content="{$opengraph.type}"/>
-  <xsl:text>&#10;</xsl:text>
-
-  <meta name="twitter:card" content="{$twittercards.type}"/>
-  <xsl:text>&#10;</xsl:text>
-  <meta name="twitter:title" content="{$socialmedia.title}"/>
-  <xsl:text>&#10;</xsl:text>
-  <meta name="twitter:description" content="{$socialmedia.description}"/>
-  <xsl:text>&#10;</xsl:text>
-  <xsl:if test="string-length($twittercards.twitter.account) &gt; 0">
-    <meta name="twitter:site" content="{$twittercards.twitter.account}"/>
-    <xsl:text>&#10;</xsl:text>
-  </xsl:if>
+  <xsl:apply-templates select="($metanodes[@name='category'])[last()]" 
mode="meta"/>
+  <xsl:apply-templates select="($metanodes[@name='updated'])[last()]" 
mode="meta"/>
+  <xsl:apply-templates select="($metanodes[@name='maintainer'])[last()]" 
mode="meta"/>
+
+  <xsl:call-template name="social-media-opengraph">
+    <xsl:with-param name="socialmedia.title" select="$socialmedia.title"/>
+    <xsl:with-param name="socialmedia.description" 
select="$socialmedia.description"/>
+  </xsl:call-template>
+
+  <xsl:call-template name="social-media-twitter">
+    <xsl:with-param name="socialmedia.title" select="$socialmedia.title"/>
+    <xsl:with-param name="socialmedia.description" 
select="$socialmedia.description"/>
+  </xsl:call-template>
 </xsl:template>
 
 
@@ -563,11 +535,13 @@
 
   <xsl:template name="give.feedback">
     <xsl:if test="$generate.give.feedback = 1 or $force.generate.give.feedback 
= 1">
+      <xsl:variable name="meta-bugtracker" 
select="ancestor-or-self::*/d:info/d:meta[@name='bugtracker']/d:phrase[@role='editurl']"/>
       <xsl:variable name="editurl" 
select="ancestor-or-self::*/d:info/dm:docmanager/dm:editurl[1]"/>
       <xsl:variable name="xmlbase" 
select="ancestor-or-self::*[@xml:base][1]/@xml:base"/>
+      <xsl:variable name="url-candidate" select="($meta-bugtracker | 
$editurl)[last()]"/>
 
       <xsl:variable name="valid-for-editurl">
-        <xsl:if test="($draft.mode = 'yes' or $show.edit.link = 1) and 
$editurl != '' and $xmlbase != ''">1</xsl:if>
+        <xsl:if test="($draft.mode = 'yes' or $show.edit.link = 1) and 
$url-candidate != '' and $xmlbase != ''">1</xsl:if>
       </xsl:variable>
 
       <xsl:if test="$valid-for-editurl = 1 or $force.generate.give.feedback = 
1">
@@ -586,7 +560,7 @@
           <!-- add here a "global" report bug -->
           <xsl:if test="$valid-for-editurl = 1">
             <li>
-              <a id="_feedback-editurl" href="{$editurl}{$xmlbase}" 
rel="nofollow" target="_blank">
+              <a id="_feedback-editurl" href="{$url-candidate}{$xmlbase}" 
rel="nofollow" target="_blank">
                 <xsl:call-template name="gentext">
                   <xsl:with-param name="key" select="'editsource'"/>
                 </xsl:call-template>
@@ -601,11 +575,13 @@
 
   <xsl:template name="generate.sourcelink">
     <xsl:param name="node" select="."/>
+    <xsl:variable name="meta-bugtracker" 
select="$node/ancestor-or-self::*/d:info/d:meta[@name='bugtracker']/d:phrase[@role='editurl']"/>
     <xsl:variable name="editurl" 
select="$node/ancestor-or-self::*/d:info/dm:docmanager/dm:editurl[1]"/>
     <xsl:variable name="xmlbase" 
select="$node/ancestor-or-self::*[@xml:base][1]/@xml:base"/>
+    <xsl:variable name="url-candidate" select="($meta-bugtracker | 
$editurl)[last()]"/>
 
-    <xsl:if test="($draft.mode = 'yes' or $show.edit.link = 1) and $editurl != 
'' and $xmlbase != ''">
-      <xsl:value-of select="concat($editurl, $xmlbase)"/>
+    <xsl:if test="($draft.mode = 'yes' or $show.edit.link = 1) and 
$url-candidate != '' and $xmlbase != ''">
+      <xsl:value-of select="concat($url-candidate, $xmlbase)"/>
     </xsl:if>
   </xsl:template>
 
@@ -711,19 +687,41 @@
       <xsl:apply-imports/>
     </xsl:param>
     <xsl:variable name="doc" select="self::*"/>
-    <xsl:variable name="lang">
-      <xsl:apply-templates select="(ancestor-or-self::*/@xml:lang)[last()]" 
mode="html.lang.attribute"/>
+    <xsl:variable name="lang-attr">
+      <xsl:call-template name="get-lang-for-ssi"/>
+    </xsl:variable>
+    <xsl:variable name="candidate.suse.header.body">
+      <xsl:call-template name="string.subst">
+        <xsl:with-param name="string" select="$include.ssi.body"/>
+        <xsl:with-param name="target" select="$placeholder.ssi.language"/>
+        <xsl:with-param name="replacement">
+          <xsl:call-template name="get-lang-for-ssi"/>
+        </xsl:with-param>
+      </xsl:call-template>
     </xsl:variable>
 
     <xsl:call-template name="user.preroot"/>
     <xsl:call-template name="root.messages"/>
 
-    <html lang="{$lang}">
+    <html>
+      <xsl:choose>
+        <xsl:when test="$rootid">
+          <xsl:call-template name="l10n.language">
+            <xsl:with-param name="target" select="key('id', $rootid)"/>
+          </xsl:call-template>
+        </xsl:when>
+        <xsl:otherwise>
+          <xsl:call-template name="l10n.language">
+            <xsl:with-param name="target" select="/*[1]"/>
+          </xsl:call-template>
+        </xsl:otherwise>
+      </xsl:choose>
       <xsl:call-template name="root.attributes"/>
       <head>
         <xsl:call-template name="system.head.content">
           <xsl:with-param name="node" select="$doc"/>
         </xsl:call-template>
+
         <xsl:call-template name="head.content">
           <xsl:with-param name="node" select="$doc"/>
         </xsl:call-template>
@@ -734,6 +732,12 @@
       <body>
         <xsl:call-template name="body.attributes"/>
         <xsl:call-template name="outerelement.class.attribute"/>
+
+        <xsl:if test="$include.suse.header">
+          <xsl:text>&#10;</xsl:text>
+          <xsl:comment>#include virtual="<xsl:value-of 
select="$candidate.suse.header.body"/>"</xsl:comment>
+          <xsl:text>&#10;</xsl:text>
+        </xsl:if>
         <xsl:call-template name="bypass"/>
 
         <xsl:call-template name="user.header.content"/>
@@ -771,8 +775,6 @@
   <xsl:template name="user.head.content">
     <xsl:param name="node" select="."/>
 
-    <xsl:text>&#10;</xsl:text>
-
     <xsl:if test="$build.for.web = 1">
       <script type="text/javascript">
 <xsl:text disable-output-escaping="yes">
@@ -880,29 +882,44 @@
 
 
   <xsl:template name="user.header.content">
-    <xsl:choose>
-      <xsl:when test="$include.ssi.header != ''">
-        <!-- There must _not_ be a space between comment start ('<!-\-') and 
hash ('#') here! -->
-        <xsl:comment>#include virtual="<xsl:value-of 
select="$include.ssi.header"/>" </xsl:comment>
-      </xsl:when>
-      <xsl:when test="$generate.header != 0">
+    <xsl:variable name="lang-attr">
+      <xsl:call-template name="get-lang-for-ssi"/>
+    </xsl:variable>
+    <xsl:variable name="candidate.suse.header.body">
+      <xsl:call-template name="string.subst">
+        <xsl:with-param name="string" select="$include.ssi.body"/>
+        <xsl:with-param name="target" select="$placeholder.ssi.language"/>
+        <xsl:with-param name="replacement" select="$lang-attr"/>
+      </xsl:call-template>
+    </xsl:variable>
+
+      <xsl:if test="$include.suse.header = 0">
         <header id="_mainnav">
           <div class="growth-inhibitor">
             <xsl:call-template name="create.header.logo"/>
           </div>
         </header>
-      </xsl:when>
-      <xsl:otherwise/>
-    </xsl:choose>
+      </xsl:if>
   </xsl:template>
 
   <xsl:template name="user.footer.content">
+    <xsl:variable name="candidate.suse.header.footer">
+      <xsl:call-template name="string.subst">
+        <xsl:with-param name="string" select="$include.ssi.footer"/>
+        <xsl:with-param name="target" select="$placeholder.ssi.language"/>
+        <xsl:with-param name="replacement">
+          <xsl:call-template name="get-lang-for-ssi"/>
+        </xsl:with-param>
+      </xsl:call-template>
+    </xsl:variable>
+
     <xsl:choose>
-      <xsl:when test="$include.ssi.footer != ''">
-        <!-- There must _not_ be a space between comment start ('<!-\-') and 
hash ('#') here! -->
-        <xsl:comment>#include virtual="<xsl:value-of 
select="$include.ssi.footer"/>"</xsl:comment>
+      <xsl:when test="$include.suse.header">
+        <xsl:text>&#10;</xsl:text>
+        <xsl:comment>#include virtual="<xsl:value-of 
select="$candidate.suse.header.footer"/>"</xsl:comment>
+        <xsl:text>&#10;</xsl:text>
       </xsl:when>
-      <xsl:when test="$generate.footer = 1">
+      <xsl:otherwise>
         <footer id="_footer">
           <div class="growth-inhibitor">
             <div class="copy">
@@ -915,8 +932,7 @@
             </div>
           </div>
         </footer>
-      </xsl:when>
-      <xsl:otherwise/>
+      </xsl:otherwise>
     </xsl:choose>
   </xsl:template>
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/suse-xsl-2.90.0/suse2022-ns/xhtml/meta.xsl 
new/suse-xsl-2.91.2/suse2022-ns/xhtml/meta.xsl
--- old/suse-xsl-2.90.0/suse2022-ns/xhtml/meta.xsl      1970-01-01 
01:00:00.000000000 +0100
+++ new/suse-xsl-2.91.2/suse2022-ns/xhtml/meta.xsl      2023-05-12 
08:57:18.000000000 +0200
@@ -0,0 +1,333 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0"
+  xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
+  xmlns:d="http://docbook.org/ns/docbook";
+  xmlns:dm="urn:x-suse:ns:docmanager"
+  xmlns:exsl="http://exslt.org/common";
+  xmlns:date="http://exslt.org/dates-and-times";
+  xmlns="http://www.w3.org/1999/xhtml";
+  exclude-result-prefixes="exsl date d dm">
+
+  <xsl:template match="d:meta[@name='productname']" mode="meta">
+    <xsl:variable name="productname" 
select="normalize-space(string(d:productname[1]))"/>
+    <xsl:value-of select="$productname"/>
+  </xsl:template>
+
+
+  <xsl:template match="d:meta[@name='productname']/d:productname[1]/@version" 
mode="meta">
+    <xsl:value-of select="."/>
+  </xsl:template>
+
+  <xsl:template match="d:meta[@name='maintainer']" mode="meta">
+    <xsl:variable name="content" select="normalize-space(@content)"/>
+
+    <xsl:choose>
+      <xsl:when test="$content">
+        <xsl:if test="$include.html.dublincore">
+          <meta name="DC.creator" content="{$content}" />
+        </xsl:if>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:call-template name="log.message">
+          <xsl:with-param name="level">warn</xsl:with-param>
+          <xsl:with-param name="context-desc">metadata</xsl:with-param>
+          <xsl:with-param name="message">
+            <xsl:value-of select="concat('In meta[@name=&quot;', @name, 
'&quot;]')"/>
+            <xsl:text> the @content attribute is empty!</xsl:text>
+          </xsl:with-param>
+        </xsl:call-template>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+
+  <xsl:template match="d:meta[@name='updated']" mode="meta">
+    <xsl:variable name="content" select="normalize-space(@content)"/>
+
+    <xsl:choose>
+      <xsl:when test="$content">
+        <xsl:if test="$include.html.dublincore">
+          <meta name="DCTERMS.modified" content="{$content}" />
+        </xsl:if>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:call-template name="log.message">
+          <xsl:with-param name="level">warn</xsl:with-param>
+          <xsl:with-param name="context-desc">metadata</xsl:with-param>
+          <xsl:with-param name="message">
+            <xsl:text>In meta[@name='updated'], the @content attribute is 
empty!</xsl:text>
+          </xsl:with-param>
+        </xsl:call-template>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+  <xsl:template match="d:meta[@name='category']" mode="meta">
+    <xsl:variable name="content" select="normalize-space(@content)"/>
+
+    <xsl:choose>
+      <xsl:when test="$content">
+        <meta name="category" content="{$content}"/>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:call-template name="log.message">
+          <xsl:with-param name="level">warn</xsl:with-param>
+          <xsl:with-param name="context-desc">metadata</xsl:with-param>
+          <xsl:with-param name="message">
+            <xsl:text>In meta[@name='category'], the @content attribute is 
empty!</xsl:text>
+          </xsl:with-param>
+        </xsl:call-template>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+
+  <xsl:template name="social-media-opengraph">
+    <xsl:param name="node" select="."/>
+    <xsl:param name="socialmedia.title"/>
+    <xsl:param name="socialmedia.description"/>
+    <xsl:variable name="socialmedia.preview" 
select="concat($canonical-url-base, '/', $socialmedia.preview.default)"/>
+    <xsl:variable name="ischunk">
+      <xsl:call-template name="chunk"/>
+    </xsl:variable>
+    <xsl:variable name="filename">
+      <xsl:choose>
+        <xsl:when test="$ischunk = 1">
+          <xsl:apply-templates mode="chunk-filename" select="."/>
+        </xsl:when>
+        <xsl:otherwise>
+          <xsl:value-of select="concat($root.filename,$html.ext)"/>
+        </xsl:otherwise>
+      </xsl:choose>
+    </xsl:variable>
+    <xsl:variable name="canonical.url" 
select="concat($canonical-url-base,'/',$filename)"/>
+    <xsl:variable name="meta.nodes" 
select="$node/d:info/d:meta|$node/ancestor::*/d:info/d:meta"/>
+    <xsl:variable name="description">
+      <xsl:choose>
+        <xsl:when test="$meta.nodes[@name='social-descr']">
+          <xsl:choose>
+            <xsl:when test="string-length($meta.nodes[@name='social-descr']) 
&lt; $socialmedia.description.length">
+              <xsl:value-of select="$meta.nodes[@name='social-descr']"/>
+            </xsl:when>
+            <xsl:otherwise>
+              <xsl:call-template name="log.message">
+                <xsl:with-param name="level">warn</xsl:with-param>
+                <xsl:with-param name="context-desc">metadata</xsl:with-param>
+                <xsl:with-param name="message">
+                  <xsl:text>The meta[@name='social-descr'] contains more than 
</xsl:text>
+                  <xsl:value-of 
select="concat($socialmedia.description.length, ' characters!')"/>
+                </xsl:with-param>
+              </xsl:call-template>
+              <xsl:value-of 
select="substring(normalize-space($meta.nodes[@name = 'social-descr']), 1, 
$socialmedia.description.length)" />
+            </xsl:otherwise>
+          </xsl:choose>
+        </xsl:when>
+        <xsl:when test="$socialmedia.description">
+          <xsl:choose>
+            <xsl:when test="string-length($socialmedia.description) > 
$socialmedia.description.length">
+              <xsl:call-template name="ellipsize.text">
+                <xsl:with-param name="input" 
select="$socialmedia.description"/>
+                <xsl:with-param name="ellipsize.after" 
select="$socialmedia.description.length"/>
+              </xsl:call-template>
+            </xsl:when>
+            <xsl:otherwise>
+              <xsl:value-of select="$socialmedia.description"/>
+            </xsl:otherwise>
+          </xsl:choose>
+        </xsl:when>
+        <xsl:otherwise>
+          <xsl:call-template name="log.message">
+            <xsl:with-param name="level">warn</xsl:with-param>
+            <xsl:with-param name="context-desc">metadata</xsl:with-param>
+            <xsl:with-param name="message">
+              <xsl:text>No meta[@name='social-descr'] found!</xsl:text>
+            </xsl:with-param>
+          </xsl:call-template>
+        </xsl:otherwise>
+      </xsl:choose>
+    </xsl:variable>
+    <xsl:variable name="title">
+      <xsl:choose>
+      <xsl:when test="$meta.nodes[@name='title']">
+        <xsl:variable name="tmp" 
select="normalize-space($meta.nodes[@name='title'][last()])"/>
+        <xsl:choose>
+          <xsl:when test="$tmp = ''">
+            <xsl:call-template name="log.message">
+                <xsl:with-param name="level">warn</xsl:with-param>
+                <xsl:with-param name="context-desc">metadata</xsl:with-param>
+                <xsl:with-param name="message">
+                  <xsl:text>The meta[@name='title'] is empty! Add some 
text.</xsl:text>
+                </xsl:with-param>
+              </xsl:call-template>
+          </xsl:when>
+          <xsl:when test="string-length($tmp) &lt; $socialmedia.title.length">
+            <xsl:value-of select="$tmp"/>
+          </xsl:when>
+          <xsl:otherwise>
+              <xsl:call-template name="log.message">
+                <xsl:with-param name="level">warn</xsl:with-param>
+                <xsl:with-param name="context-desc">metadata</xsl:with-param>
+                <xsl:with-param name="message">
+                  <xsl:text>The meta[@name='title'] contains more than 
</xsl:text>
+                  <xsl:value-of select="concat($socialmedia.title.length, ' 
characters!')"/>
+                </xsl:with-param>
+              </xsl:call-template>
+              <xsl:call-template name="ellipsize.text">
+                <xsl:with-param name="input" select="$tmp" />
+                <xsl:with-param name="ellipsize.after" 
select="$search.title.length" />
+              </xsl:call-template>
+          </xsl:otherwise>
+        </xsl:choose>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:value-of select="$socialmedia.title"/>
+      </xsl:otherwise>
+    </xsl:choose>
+    </xsl:variable>
+
+<!--    <xsl:message>social-media-opengraph:
+      canonical-url-base=<xsl:value-of select="$canonical-url-base"/>
+      socialmedia.preview=<xsl:value-of select="$socialmedia.preview"/>
+      description=<xsl:value-of select="$description"/>
+      title=<xsl:value-of select="$title"/>
+    </xsl:message>
+-->
+    <xsl:if test="$canonical-url-base != ''">
+      <!-- These Open Graph and Twitter Cards properties need a canonical URL 
-->
+      <link rel="canonical" href="{$canonical.url}"/>
+      <xsl:text>&#10;</xsl:text>
+      <!-- These Open Graph and Twitter Cards properties need a canonical URL 
-->
+      <meta property="og:url" content="{$canonical.url}"/>
+      <xsl:text>&#10;</xsl:text>
+      <meta property="og:image" 
content="{concat($canonical-url-base,'/',$socialmedia.preview)}"/>
+      <xsl:text>&#10;</xsl:text>
+      <xsl:call-template name="meta-generator"/>
+    </xsl:if>
+
+    <meta property="og:title" content="{$title}"/>
+    <xsl:text>&#10;</xsl:text>
+
+    <meta property="og:description" content="{$description}"/>
+    <xsl:text>&#10;</xsl:text>
+
+    <meta property="og:type" content="{$opengraph.type}"/>
+    <xsl:text>&#10;</xsl:text>
+  </xsl:template>
+
+
+  <xsl:template name="social-media-twitter">
+    <xsl:param name="node" select="."/>
+    <xsl:param name="socialmedia.title"/>
+    <xsl:param name="socialmedia.description"/>
+    <xsl:variable name="socialmedia.preview" 
select="concat($canonical-url-base, '/', $socialmedia.preview.default)"/>
+    <xsl:variable name="meta.nodes" 
select="$node/d:info/d:meta|$node/ancestor::*/d:info/d:meta"/>
+    <xsl:variable name="description">
+      <xsl:choose>
+        <xsl:when test="$meta.nodes[@name='social-descr']">
+          <xsl:choose>
+            <xsl:when test="string-length($meta.nodes[@name='social-descr']) 
&lt; $socialmedia.description.length">
+              <xsl:value-of select="$meta.nodes[@name='social-descr']"/>
+            </xsl:when>
+            <xsl:otherwise>
+              <xsl:call-template name="log.message">
+                <xsl:with-param name="level">warn</xsl:with-param>
+                <xsl:with-param name="context-desc">metadata</xsl:with-param>
+                <xsl:with-param name="message">
+                  <xsl:text>The meta[@name='social-descr'] contains more than 
</xsl:text>
+                  <xsl:value-of 
select="concat($socialmedia.description.length, ' characters!')"/>
+                </xsl:with-param>
+              </xsl:call-template>
+              <xsl:value-of 
select="substring(normalize-space($meta.nodes[@name = 'social-descr']), 1, 
$socialmedia.description.length)" />
+            </xsl:otherwise>
+          </xsl:choose>
+        </xsl:when>
+        <xsl:when test="$socialmedia.description">
+          <xsl:choose>
+            <xsl:when test="string-length($socialmedia.description) > 
$socialmedia.description.length">
+              <xsl:call-template name="ellipsize.text">
+                <xsl:with-param name="input" 
select="$socialmedia.description"/>
+                <xsl:with-param name="ellipsize.after" 
select="$socialmedia.description.length"/>
+              </xsl:call-template>
+            </xsl:when>
+            <xsl:otherwise>
+              <xsl:value-of select="$socialmedia.description"/>
+            </xsl:otherwise>
+          </xsl:choose>
+        </xsl:when>
+        <xsl:otherwise>
+          <xsl:call-template name="log.message">
+            <xsl:with-param name="level">warn</xsl:with-param>
+            <xsl:with-param name="context-desc">metadata</xsl:with-param>
+            <xsl:with-param name="message">
+              <xsl:text>No meta[@name='social-descr'] found!</xsl:text>
+            </xsl:with-param>
+          </xsl:call-template>
+        </xsl:otherwise>
+      </xsl:choose>
+    </xsl:variable>
+    <xsl:variable name="title">
+      <xsl:choose>
+        <xsl:when test="$meta.nodes[@name='title']">
+          <xsl:variable name="tmp" 
select="normalize-space($meta.nodes[@name='title'][last()])"/>
+          <xsl:choose>
+            <xsl:when test="$tmp = ''">
+              <xsl:call-template name="log.message">
+                <xsl:with-param name="level">warn</xsl:with-param>
+                <xsl:with-param name="context-desc">metadata</xsl:with-param>
+                <xsl:with-param name="message">
+                  <xsl:text>The meta[@name='title'] is empty! Add some 
text.</xsl:text>
+                </xsl:with-param>
+              </xsl:call-template>
+            </xsl:when>
+            <xsl:when test="string-length($tmp) &lt; $search.title.length">
+              <xsl:value-of select="$tmp"/>
+            </xsl:when>
+            <xsl:otherwise>
+              <xsl:call-template name="log.message">
+                <xsl:with-param name="level">warn</xsl:with-param>
+                <xsl:with-param name="context-desc">metadata</xsl:with-param>
+                <xsl:with-param name="message">
+                  <xsl:text>The meta[@name='title'] contains more than 65 
characters!</xsl:text>
+                </xsl:with-param>
+              </xsl:call-template>
+              <xsl:call-template name="ellipsize.text">
+                <xsl:with-param name="input" select="$tmp"/>
+                <xsl:with-param name="ellipsize.after" 
select="$search.title.length"/>
+              </xsl:call-template>
+            </xsl:otherwise>
+          </xsl:choose>
+        </xsl:when>
+        <xsl:otherwise>
+          <xsl:value-of select="$socialmedia.title"/>
+        </xsl:otherwise>
+      </xsl:choose>
+    </xsl:variable>
+
+  <!--<xsl:message>social-media-twitter:
+      canonical-url-base=<xsl:value-of select="$canonical-url-base"/>
+      socialmedia.preview=<xsl:value-of select="$socialmedia.preview"/>
+      description=<xsl:value-of select="$description"/>
+      title=<xsl:value-of select="$title"/>
+    </xsl:message>-->
+
+    <meta name="twitter:card" content="{$twittercards.type}"/>
+    <xsl:text>&#10;</xsl:text>
+
+    <xsl:if test="$canonical-url-base != ''">
+      <meta name="twitter:image" content="{$socialmedia.preview}"/>
+      <xsl:text>&#10;</xsl:text>
+    </xsl:if>
+
+    <meta name="twitter:title" content="{$title}"/>
+    <xsl:text>&#10;</xsl:text>
+
+    <meta name="twitter:description" content="{$description}"/>
+    <xsl:text>&#10;</xsl:text>
+
+    <xsl:if test="string-length($twittercards.twitter.account) &gt; 0">
+      <meta name="twitter:site" content="{$twittercards.twitter.account}"/>
+      <xsl:text>&#10;</xsl:text>
+    </xsl:if>
+  </xsl:template>
+
+</xsl:stylesheet>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/suse-xsl-2.90.0/suse2022-ns/xhtml/param.xsl 
new/suse-xsl-2.91.2/suse2022-ns/xhtml/param.xsl
--- old/suse-xsl-2.90.0/suse2022-ns/xhtml/param.xsl     2023-04-18 
11:03:11.000000000 +0200
+++ new/suse-xsl-2.91.2/suse2022-ns/xhtml/param.xsl     2023-05-12 
08:57:18.000000000 +0200
@@ -339,10 +339,6 @@
   </xsl:param>
 
 
-  <!-- Include header/footer via Server-Side Includes (SSI)? -->
-  <xsl:param name="include.ssi.header" select="''"/>
-  <xsl:param name="include.ssi.footer" select="''"/>
-
   <!-- Generate a footer with SUSE-specific content? -->
   <xsl:param name="generate.footer" select="$suse.content"/>
 
@@ -419,8 +415,8 @@
   <xsl:param name="onpage.teaser.length" select="300"/>
   <!-- <meta> description tags used for search results pages, roughly as
   recommended by the Contentking -->
-  <xsl:param name="search.title.length" select="55"/>
-  <xsl:param name="search.description.length" select="150"/>
+  <xsl:param name="search.title.length" select="60"/>
+  <xsl:param name="search.description.length" select="55"/>
   <!-- Open Graph (og:)/Twitter Cards tags used for social-media preview -->
   <xsl:param name="socialmedia.title.length" select="55"/>
   <xsl:param name="socialmedia.description.length" select="150"/>
@@ -435,12 +431,32 @@
        stylesheets, having all result documents created with them associated
        with SUSE is suboptimal. -->
   <xsl:param name="twittercards.twitter.account" select="''"/>
-  <!-- Default social media preview image, if no other image is available on 
the page -->
-  <xsl:param 
name="socialmedia.preview.default">static/images/social-media-preview-default.png</xsl:param>
+  <!-- Default social media preview image, if no other image is available on 
the page
+  static/images/social-media-preview-default.png
+  -->
+  <xsl:param name="socialmedia.preview.default">document.jpg</xsl:param>
 
   <!-- The path for the report bug link and edit source icons -->
   <xsl:param name="title.icons.path">static/images/</xsl:param>
 
   <!-- Should the report bug link and edit source icons be included? 0=no, 
1=yes-->
   <xsl:param name="title.icons" select="1"/>
+
+
+  <!-- Include HTML Dublin Core metadata? -->
+  <xsl:param name="include.html.dublincore" select="1"/>
+
+  <!-- Include header/footer via Server-Side Includes (SSI)? 0=no, 1=yes
+  -->
+  <xsl:param name="include.suse.header" select="0"/>
+
+  <!-- When include.suse.header is set to 1, these are the paths for the SSIs
+       to be added inside <head>, <body>, and <footer>.
+       Use "{{#language#}}" to insert the language
+  -->
+  <xsl:param 
name="include.ssi.header">/docserv/fragments/{{#language#}}/suse-head.fragment.html</xsl:param>
+  <xsl:param 
name="include.ssi.body">/docserv/fragments/{{#language#}}/suse-body.fragment.html</xsl:param>
+  <xsl:param 
name="include.ssi.footer">/docserv/fragments/{{#language#}}/suse-footer.fragment.html</xsl:param>
+
+  <xsl:variable name="placeholder.ssi.language">{{#language#}}</xsl:variable>
 </xsl:stylesheet>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/suse-xsl-2.90.0/suse2022-ns/xhtml/titlepage.templates.xsl 
new/suse-xsl-2.91.2/suse2022-ns/xhtml/titlepage.templates.xsl
--- old/suse-xsl-2.90.0/suse2022-ns/xhtml/titlepage.templates.xsl       
2023-04-18 11:03:11.000000000 +0200
+++ new/suse-xsl-2.91.2/suse2022-ns/xhtml/titlepage.templates.xsl       
2023-05-12 08:57:18.000000000 +0200
@@ -26,12 +26,16 @@
     In general, we want the long/official version, though. Dito for the
     productnumber below. -->
     <xsl:param name="prefer-abbreviation" select="0"/>
+    <xsl:variable name="meta.nodes" 
select="d:info/d:meta|ancestor::*/d:info/d:meta"/>
 
     <!--
       First we search for all productname[@role='abbrev'], starting in the 
nearest node followed
       by its ancestors.
     -->
     <xsl:choose>
+      <xsl:when 
test="$meta.nodes[@name='bugtracker']/d:phrase[@name='productname'] and 
$prefer-abbreviation = 0">/
+        <xsl:apply-templates 
select="$meta.nodes[@name='bugtracker']/d:phrase[@name='productname'][last()]" 
mode="meta"/>
+      </xsl:when>
       <xsl:when test="*/d:productname[@role='abbrev'] and $prefer-abbreviation 
= 1">
         <xsl:apply-templates 
select="(*/d:productname[@role='abbrev'])[last()]"/>
       </xsl:when>
@@ -53,10 +57,14 @@
   <xsl:template name="product.number">
     <!-- See comment in product.name... -->
     <xsl:param name="prefer-abbreviation" select="0"/>
+    <xsl:variable name="meta.nodes" 
select="d:info/d:meta|ancestor::*/d:info/d:meta"/>
 
     <!-- FIXME: This choose mechanism is a little wonky around inheritance and
     abbreviation preference. May need a bit more think. -->
     <xsl:choose>
+      <xsl:when 
test="$meta.nodes[@name='bugtracker']/d:phrase[@name='productnumber'] and 
$prefer-abbreviation = 0">
+        <xsl:apply-templates 
select="$meta.nodes[@name='bugtracker']/d:phrase[@name='productnumber'][last()]"
 mode="meta"/>
+      </xsl:when>
       <xsl:when test="*/d:productnumber[@role='abbrev'] and 
$prefer-abbreviation = 1">
         <xsl:apply-templates 
select="(*/d:productnumber[@role='abbrev'])[last()]"/>
       </xsl:when>

Reply via email to