OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

docbook message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Rework of gentext.template in 1.76.0 broke custom contexts


Hi all,

 

I am currently upgrading from 1.75.2 to latest release, 1.78.0, and the gentext.template template broke for me. The reason is, I use custom context to provide localization for some non-standard context, for example "Run-in text for admonitions" as follows:

 

<xsl:param name="local.l10n.xml" select="document('')"/>

<l:i18n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0">

<l:l10n language="en">

...

<l:context name="admon-run-in">

<l:template name="note" text="Note:&#160;"/>

<l:template name="caution" text="Caution!&#160;"/>

...

</l:context>

</l:l10n>

</l:i18n>

 

This context is used in customization templates:

 

<xsl:call-template name="gentext.template">

<xsl:with-param name="context">admon-run-in</xsl:with-param>

<xsl:with-param name="name" select="local-name(.)"/>

</xsl:call-template>

 

 

This works fine with 1.75.2. However, starting with 1.76.0, the gentext.template template was modified as follows:

 

<xsl:variable name="local.template.node" .../>

<xsl:for-each select="$context.node">

...

<xsl:choose>

<xsl:when test="$local.template.node/@text">

<xsl:value-of select="$local.template.node/@text"/>

</xsl:when>

 

This change broke such "custom" contexts for l10n, as in such custom context $context.node is an empty nodeset (that is, there is no "default" string for this template). Therefore, the xsl:for-each loop is not executed at all and the local value is not returned by template even though it is defined.

 

The attached patch restores pre-1.76.0 behavior: first check if text from $local.template.node is available and perform xsl:for-each only if no local template is available. Is it possible to integrate this patch?

 

Thanks & Happy New Year,

Alexey.

Index: docbook-xsl-1.78.0/common/l10n.xsl
===================================================================
--- docbook-xsl-1.78.0/common/l10n.xsl	(working copy)
+++ docbook-xsl-1.78.0/common/l10n.xsl	(working copy)
@@ -507,51 +507,54 @@
 								and @style=$xrefstyle]
 				|$local.context.node/l:template[@name=$name
 								and not(@style)])[1]"/>
+	  <xsl:choose>
+	    <xsl:when test="$local.template.node/@text">
+	      <xsl:value-of select="$local.template.node/@text"/>
+	    </xsl:when>
+	    <xsl:otherwise>
+	      <xsl:for-each select="$context.node">
+		<xsl:variable name="template.node"
+			      select="(key('l10n-template-style', concat($context, '#', $name, '#', $xrefstyle))
+				       |key('l10n-template', concat($context, '#', $name)))[1]"/>
 
-	  <xsl:for-each select="$context.node">
-	    <xsl:variable name="template.node"
-			  select="(key('l10n-template-style', concat($context, '#', $name, '#', $xrefstyle))
-				   |key('l10n-template', concat($context, '#', $name)))[1]"/>
-
-	    <xsl:choose>
-	      <xsl:when test="$local.template.node/@text">
-		<xsl:value-of select="$local.template.node/@text"/>
-	      </xsl:when>
-	      <xsl:when test="$template.node/@text">
-		<xsl:value-of select="$template.node/@text"/>
-	      </xsl:when>
-	      <xsl:otherwise>
 		<xsl:choose>
-		  <xsl:when test="contains($name, '/')">
-		    <xsl:call-template name="gentext.template">
-		      <xsl:with-param name="context" select="$context"/>
-		      <xsl:with-param name="name" select="substring-after($name, '/')"/>
-		      <xsl:with-param name="origname" select="$origname"/>
-		      <xsl:with-param name="purpose" select="$purpose"/>
-		      <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
-		      <xsl:with-param name="referrer" select="$referrer"/>
-		      <xsl:with-param name="lang" select="$lang"/>
-		      <xsl:with-param name="verbose" select="$verbose"/>
-		    </xsl:call-template>
+		  <xsl:when test="$template.node/@text">
+		    <xsl:value-of select="$template.node/@text"/>
 		  </xsl:when>
-		  <xsl:when test="$verbose = 0">
-		    <!-- silence -->
-		  </xsl:when>
 		  <xsl:otherwise>
-		    <xsl:message>
-		      <xsl:text>No template for "</xsl:text>
-		      <xsl:value-of select="$origname"/>
-		      <xsl:text>" (or any of its leaves) exists in the context named "</xsl:text>
-		      <xsl:value-of select="$context"/>
-		      <xsl:text>" in the "</xsl:text>
-		      <xsl:value-of select="$lang"/>
-		      <xsl:text>" localization.</xsl:text>
-		    </xsl:message>
+		    <xsl:choose>
+		      <xsl:when test="contains($name, '/')">
+			<xsl:call-template name="gentext.template">
+			  <xsl:with-param name="context" select="$context"/>
+			  <xsl:with-param name="name" select="substring-after($name, '/')"/>
+			  <xsl:with-param name="origname" select="$origname"/>
+			  <xsl:with-param name="purpose" select="$purpose"/>
+			  <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+			  <xsl:with-param name="referrer" select="$referrer"/>
+			  <xsl:with-param name="lang" select="$lang"/>
+			  <xsl:with-param name="verbose" select="$verbose"/>
+			</xsl:call-template>
+		      </xsl:when>
+		      <xsl:when test="$verbose = 0">
+			<!-- silence -->
+		      </xsl:when>
+		      <xsl:otherwise>
+			<xsl:message>
+			  <xsl:text>No template for "</xsl:text>
+			  <xsl:value-of select="$origname"/>
+			  <xsl:text>" (or any of its leaves) exists in the context named "</xsl:text>
+			  <xsl:value-of select="$context"/>
+			  <xsl:text>" in the "</xsl:text>
+			  <xsl:value-of select="$lang"/>
+			  <xsl:text>" localization.</xsl:text>
+			</xsl:message>
+		      </xsl:otherwise>
+		    </xsl:choose>
 		  </xsl:otherwise>
 		</xsl:choose>
-	      </xsl:otherwise>
-	    </xsl:choose>
-	  </xsl:for-each>
+	      </xsl:for-each>
+	    </xsl:otherwise>
+	  </xsl:choose>
 	</xsl:for-each>
       </xsl:for-each>
     </xsl:otherwise>


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]