]> granicus.if.org Git - docbook-dsssl/commitdiff
Problem:
authorMichael Smith <xmldoc@users.sourceforge.net>
Mon, 9 May 2005 05:39:14 +0000 (05:39 +0000)
committerMichael Smith <xmldoc@users.sourceforge.net>
Mon, 9 May 2005 05:39:14 +0000 (05:39 +0000)
  Invalid HTML generated for manually created Indexes that lack
  Indexdivs.
Cause:
  The indexentry template assumes a dl wrapper has been generated,
  but the dl wrapper gets generated only if an Indexdiv exists.
Fix:
  For Indexes that lack Indexdiv, generate a dl wrapper before
  processing Indexentries (closes bug ##1196670; thanks to Petr
  Pajas for reporting the problem).
Affects:
  HTML output for manually created Indexes; has no effect on
  processing of automatically generated Indexes.

xsl/html/index.xsl

index ef4b29abbdd52dc8a53c31747bfbb9045f971a5b..352f50f31aca78b2ec28b2d76e57043b1efa5224 100644 (file)
       </xsl:if>
 
       <xsl:call-template name="index.titlepage"/>
-      <xsl:apply-templates/>
+      <xsl:choose>
+       <xsl:when test="indexdiv">
+         <xsl:apply-templates/>
+       </xsl:when>
+       <xsl:otherwise>
+         <xsl:apply-templates select="*[not(self::indexentry)]"/>
+         <!-- Because it's actually valid for Index to have neither any -->
+         <!-- Indexdivs nor any Indexentries, we need to check and make -->
+         <!-- sure that at least one Indexentry exists, and generate a -->
+         <!-- wrapper dl if there is at least one; otherwise, do nothing. -->
+         <xsl:if test="indexentry">
+           <!-- The indexentry template assumes a parent dl wrapper has -->
+           <!-- been generated; for Indexes that have Indexdivs, the dl -->
+           <!-- wrapper is generated by the indexdiv template; however, -->
+           <!-- for Indexes that lack Indexdivs, if we don't generate a -->
+           <!-- dl here, HTML output will not be valid. -->
+           <dl>
+             <xsl:apply-templates select="indexentry"/>
+           </dl>
+         </xsl:if>
+       </xsl:otherwise>
+      </xsl:choose>
 
       <xsl:if test="count(indexentry) = 0 and count(indexdiv) = 0">
         <xsl:call-template name="generate-index">