diff options
author | Christian Lohmaier <lohmaier+LibreOffice@googlemail.com> | 2022-06-20 21:36:02 +0200 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2022-06-22 20:42:12 +0200 |
commit | fa41fa02307248077c426b0916004b43c13d46c2 (patch) | |
tree | e656af6fb9d3ae1ab6b783d7e2891e24caa88ed8 /help3xsl | |
parent | 0f12f8a4dcf3b3ee34864d50f06e77d495fb9133 (diff) |
make generated help files deterministic/reproducible
generate-id() is only stable within a single invocation, the results
vary from run to run, causing two builds of the same codebase result in
different output.
Due to help including snippets from different files, a simple count
won't be unique enough, but combining it with the sourcefile's topic-ID
does the trick.
Change-Id: I2ab8988bc34c9136fcd99d074cf0b189a8f40eb7
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/136197
Tested-by: Jenkins
Reviewed-by: Olivier Hallot <olivier.hallot@libreoffice.org>
(cherry picked from commit b48ace599e8c109c4090c178823c6718f78103da)
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/136171
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'help3xsl')
-rw-r--r-- | help3xsl/online_transform.xsl | 73 |
1 files changed, 41 insertions, 32 deletions
diff --git a/help3xsl/online_transform.xsl b/help3xsl/online_transform.xsl index 7ccb97b766..31b32d3b02 100644 --- a/help3xsl/online_transform.xsl +++ b/help3xsl/online_transform.xsl @@ -658,16 +658,17 @@ <!-- SWITCH --> <xsl:template match="switch"> + <xsl:variable name="idsw"> + <xsl:value-of select="//meta/topic/@id" /><xsl:number level="any" count="switch|switchinline" format="_1"/> + </xsl:variable> <xsl:choose> <xsl:when test ="@select = 'sys'"> - <xsl:variable name="idsw" select="concat('swlnsys',generate-id())"/> - <span id="{$idsw}" class="switch"> + <span id="swlnsys{$idsw}" class="switch"> <xsl:apply-templates /> </span> </xsl:when> <xsl:when test ="@select = 'appl'"> - <xsl:variable name="idsw" select="concat('swlnappl',generate-id())"/> - <span id="{$idsw}" class="switch"> + <span id="swlnappl{$idsw}" class="switch"> <xsl:apply-templates /> </span> </xsl:when> @@ -677,16 +678,17 @@ </xsl:choose> </xsl:template> <xsl:template match="switch" mode="embedded"> + <xsl:variable name="idsw"> + <xsl:value-of select="//meta/topic/@id" /><xsl:number level="any" count="switch|switchinline" format="_1"/> + </xsl:variable> <xsl:choose> <xsl:when test ="@select = 'sys'"> - <xsl:variable name="idsw" select="concat('swlnsys',generate-id())"/> - <span id="{$idsw}" class="switch"> + <span id="swlnsys{$idsw}" class="switch"> <xsl:apply-templates mode="embedded"/> </span> </xsl:when> <xsl:when test ="@select = 'appl'"> - <xsl:variable name="idsw" select="concat('swlnappl',generate-id())"/> - <span id="{$idsw}" class="switch"> + <span id="swlnappl{$idsw}" class="switch"> <xsl:apply-templates mode="embedded"/> </span> </xsl:when> @@ -698,16 +700,17 @@ <!-- SWITCHINLINE --> <xsl:template match="switchinline"> + <xsl:variable name="idsw"> + <xsl:value-of select="//meta/topic/@id" /><xsl:number level="any" count="switch|switchinline" format="_1"/> + </xsl:variable> <xsl:choose> <xsl:when test ="@select = 'sys'"> - <xsl:variable name="idsw" select="concat('swlnsys',generate-id())"/> - <span id="{$idsw}" class="switchinline"> + <span id="swlnsys{$idsw}" class="switchinline"> <xsl:apply-templates /> </span> </xsl:when> <xsl:when test ="@select = 'appl'"> - <xsl:variable name="idsw" select="concat('swlnappl',generate-id())"/> - <span id="{$idsw}" class="switchinline"> + <span id="swlnappl{$idsw}" class="switchinline"> <xsl:apply-templates /> </span> </xsl:when> @@ -717,16 +720,17 @@ </xsl:choose> </xsl:template> <xsl:template match="switchinline" mode="embedded"> + <xsl:variable name="idsw"> + <xsl:value-of select="//meta/topic/@id" /><xsl:number level="any" count="switch|switchinline" format="_1"/> + </xsl:variable> <xsl:choose> <xsl:when test ="@select = 'sys'"> - <xsl:variable name="idsw" select="concat('swlnsys',generate-id())"/> - <span id="{$idsw}" class="switchinline"> + <span id="swlnsys{$idsw}" class="switchinline"> <xsl:apply-templates mode="embedded"/> </span> </xsl:when> <xsl:when test ="@select = 'appl'"> - <xsl:variable name="idsw" select="concat('swlnappl',generate-id())"/> - <span id="{$idsw}" class="switchinline"> + <span id="swln{@select}_{$idsw}" class="switchinline"> <xsl:apply-templates mode="embedded"/> </span> </xsl:when> @@ -1093,13 +1097,15 @@ <!-- Evaluate a case or caseinline switch --> <xsl:template name="insertcase"> <xsl:param name="embedded" /> - <xsl:variable name="auxID" select="concat(@select,generate-id())"/> + <xsl:variable name="auxID"> + <xsl:value-of select="//meta/topic/@id" /><xsl:number level="any" count="switch|switchinline" format="_1"/> + </xsl:variable> <xsl:choose> <xsl:when test="$embedded = 'yes'"> - <span hidden="true" id="{$auxID}" class="{@select}"><xsl:apply-templates mode="embedded"/></span> + <span hidden="true" id="{@select}{$auxID}" class="{@select}"><xsl:apply-templates mode="embedded"/></span> </xsl:when> <xsl:otherwise> - <span hidden="true" id="{$auxID}" class="{@select}"><xsl:apply-templates/></span> + <span hidden="true" id="{@select}{$auxID}" class="{@select}"><xsl:apply-templates/></span> </xsl:otherwise> </xsl:choose> </xsl:template> @@ -1107,26 +1113,27 @@ <!-- Evaluate a default or defaultinline switch --> <xsl:template name="insertdefault"> <xsl:param name="embedded" /> + <xsl:variable name="auxID"> + <xsl:value-of select="//meta/topic/@id" /><xsl:number level="any" count="switch|switchinline" format="_1"/> + </xsl:variable> <xsl:choose> <xsl:when test="parent::switch[@select='sys'] or parent::switchinline[@select='sys']"> - <xsl:variable name="auxID" select="concat('default',generate-id())"/> <xsl:choose> <xsl:when test="$embedded = 'yes'"> - <span hidden="true" id="{$auxID}"><xsl:apply-templates mode="embedded"/></span> + <span hidden="true" id="default{$auxID}"><xsl:apply-templates mode="embedded"/></span> </xsl:when> <xsl:otherwise> - <span hidden="true" id="{$auxID}"><xsl:apply-templates /></span> + <span hidden="true" id="default{$auxID}"><xsl:apply-templates /></span> </xsl:otherwise> </xsl:choose> </xsl:when> <xsl:when test="parent::switch[@select='appl'] or parent::switchinline[@select='appl']"> - <xsl:variable name="auxID" select="concat('default',generate-id())"/> <xsl:choose> <xsl:when test="$embedded = 'yes'"> - <span hidden="true" id="{$auxID}"><xsl:apply-templates mode="embedded"/></span> + <span hidden="true" id="default{$auxID}"><xsl:apply-templates mode="embedded"/></span> </xsl:when> <xsl:otherwise> - <span hidden="true" id="{$auxID}"><xsl:apply-templates /></span> + <span hidden="true" id="default{$auxID}"><xsl:apply-templates /></span> </xsl:otherwise> </xsl:choose> </xsl:when> @@ -1262,6 +1269,9 @@ <!-- Insert an object --> <xsl:template name="insertobject"> + <xsl:variable name="auxID"> + <xsl:value-of select="//meta/topic/@id" /><xsl:number level="any" count="object" format="_1"/> + </xsl:variable> <xsl:variable name="tmp_href"><xsl:value-of select="concat($urlpre,'text/shared/00/00000004.xhp')"/></xsl:variable> <xsl:variable name="tmp_doc" select="document($tmp_href)"/> <xsl:variable name="data"> @@ -1274,7 +1284,6 @@ <xsl:variable name="height"> <xsl:call-template name="convert2px"><xsl:with-param name="value" select="@height"/></xsl:call-template> </xsl:variable> - <xsl:variable name="auxID" select="concat('obj',generate-id())"/> <xsl:choose> <xsl:when test="starts-with(@type,'video/youtube')"> <div id="mediadiv"> @@ -1297,7 +1306,7 @@ <xsl:with-param name="string" select="@data"/> </xsl:call-template> </xsl:variable> - <div class="samplefilesection" id="{$auxID}"> + <div class="samplefilesection" id="obj{$auxID}"> <h3><xsl:apply-templates select="$tmp_doc//variable[@id='samplefile']"/></h3> <a class="objectfiles" href="{$src}"><img src="media/navigation/libo-calc.svg" width="25px" height="30px"></img></a> </div> @@ -1308,7 +1317,7 @@ <xsl:with-param name="string" select="@data"/> </xsl:call-template> </xsl:variable> - <div class="samplefilesection" id="{$auxID}"> + <div class="samplefilesection" id="obj{$auxID}"> <h3><xsl:apply-templates select="$tmp_doc//variable[@id='samplefile']"/></h3> <a class="objectfiles" href="{$src}"><img src="media/navigation/libo-writer.svg" width="25px" height="30px"></img></a> </div> @@ -1319,7 +1328,7 @@ <xsl:with-param name="string" select="@data"/> </xsl:call-template> </xsl:variable> - <div class="samplefilesection" id="{$auxID}"> + <div class="samplefilesection" id="obj{$auxID}"> <h3><xsl:apply-templates select="$tmp_doc//variable[@id='samplefile']"/></h3> <a class="objectfiles" href="{$src}"><img src="media/navigation/libo-impress.svg" width="25px" height="30px"></img></a> </div> @@ -1330,7 +1339,7 @@ <xsl:with-param name="string" select="@data"/> </xsl:call-template> </xsl:variable> - <div class="samplefilesection" id="{$auxID}"> + <div class="samplefilesection" id="obj{$auxID}"> <h3><xsl:apply-templates select="$tmp_doc//variable[@id='samplefile']"/></h3> <a class="objectfiles" href="{$src}"><img src="media/navigation/libo-draw.svg" width="25px" height="30px"></img></a> </div> @@ -1341,7 +1350,7 @@ <xsl:with-param name="string" select="@data"/> </xsl:call-template> </xsl:variable> - <div class="samplefilesection" id="{$auxID}"> + <div class="samplefilesection" id="obj{$auxID}"> <h3><xsl:apply-templates select="$tmp_doc//variable[@id='samplefile']"/></h3> <a class="objectfiles" href="{$src}"><img src="media/navigation/libo-math.svg" width="25px" height="30px"></img></a> </div> @@ -1352,7 +1361,7 @@ <xsl:with-param name="string" select="@data"/> </xsl:call-template> </xsl:variable> - <div class="samplefilesection" id="{$auxID}"> + <div class="samplefilesection" id="obj{$auxID}"> <h3><xsl:apply-templates select="$tmp_doc//variable[@id='samplefile']"/></h3> <a class="objectfiles" href="{$src}"><img src="media/navigation/libo-base.svg" width="25px" height="30px"></img></a> </div> |