lib/htmltoword/xslt/numbering.xslt in htmltoword-0.4.4 vs lib/htmltoword/xslt/numbering.xslt in htmltoword-0.5

- old
+ new

@@ -70,62 +70,52 @@ <xsl:variable name="nlists" select="count(//ol[not(ancestor::ol) and not(ancestor::ul)]) + count(//ul[not(ancestor::ol) and not(ancestor::ul)])"/> <xsl:call-template name="define-abstractNum"/> </w:numbering> </xsl:template> - <xsl:template match="ol|ul"> - <xsl:param name="local_level" select="0"/> - <xsl:param name="global_level" select="count(preceding::ol[not(ancestor::ol or ancestor::ul)]) + count(preceding::ul[not(ancestor::ol or ancestor::ul)]) + 1"/> + <xsl:template name="container" match="ol|ul"> + <xsl:variable name="global_level" select="count(preceding::ol[not(ancestor::ol or ancestor::ul)]) + count(preceding::ul[not(ancestor::ol or ancestor::ul)]) + 1"/> <xsl:variable name="style" select="func:list-type(name(.), concat(' ', @style, ' '), concat(' ', @class, ' '))"/> <xsl:choose> - <xsl:when test="$local_level = 0"> + <xsl:when test="not(ancestor::ol or ancestor::ul)"> <w:abstractNum w:abstractNumId="{$global_level - 1}"> <w:nsid w:val="{concat('099A08C', $global_level)}"/> <w:multiLevelType w:val="hybridMultilevel"/> <xsl:call-template name="numbering_level"> - <xsl:with-param name="ilvl" select="$local_level"/> + <xsl:with-param name="ilvl" select="0"/> <xsl:with-param name="style" select="$style"/> </xsl:call-template> - <xsl:apply-templates> - <xsl:with-param name="local_level" select="$local_level + 1" /> - <xsl:with-param name="global_level" select="$global_level" /> - </xsl:apply-templates> - <xsl:if test="count(.//ol) + count(.//ul) = 0"> + <xsl:call-template name="item"/> + <xsl:if test="count(.//ol|.//ul) &lt; 6"> <xsl:call-template name="autocomplete"> - <xsl:with-param name="ilvl" select="$local_level + 1"/> + <xsl:with-param name="ilvl" select="count(.//ol) + count(.//ul)"/> <xsl:with-param name="style" select="$style"/> </xsl:call-template> </xsl:if> </w:abstractNum> </xsl:when> <xsl:otherwise> <xsl:call-template name="numbering_level"> - <xsl:with-param name="ilvl" select="$local_level"/> + <xsl:with-param name="ilvl" select="count(ancestor::ol) + count(ancestor::ul)"/> <xsl:with-param name="style" select="$style"/> </xsl:call-template> - <xsl:apply-templates> - <xsl:with-param name="local_level" select="$local_level + 1" /> - <xsl:with-param name="global_level" select="$global_level" /> - </xsl:apply-templates> - - <xsl:if test="count(.//ol) + count(.//ul) = 0"> - <xsl:call-template name="autocomplete"> - <xsl:with-param name="ilvl" select="$local_level + 1"/> - <xsl:with-param name="style" select="$style"/> - </xsl:call-template> - </xsl:if> + <xsl:call-template name="item"/> </xsl:otherwise> </xsl:choose> </xsl:template> - <xsl:template match="li"> - <xsl:param name="local_level" /> - <xsl:param name="global_level" /> - <xsl:apply-templates select="./ol|./ul"> - <xsl:with-param name="local_level" select="$local_level" /> - <xsl:with-param name="global_level" select="$global_level" /> - </xsl:apply-templates> + <xsl:template name="item"> + <xsl:for-each select="node()"> + <xsl:choose> + <xsl:when test="self::ol|self::ul"> + <xsl:call-template name="container"/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="item"/> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> </xsl:template> <xsl:template match="*"> <xsl:apply-templates/> </xsl:template> @@ -163,17 +153,23 @@ </xsl:template> <xsl:template name="autocomplete"> <xsl:param name="ilvl"/> <xsl:param name="style" /> - <xsl:if test="$ilvl &lt; 6"> + <xsl:variable name="current_level"> + <xsl:choose> + <xsl:when test="$ilvl &lt; 1">1</xsl:when> + <xsl:otherwise><xsl:value-of select="$ilvl"/></xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="$current_level &lt; 6"> <xsl:call-template name="numbering_level"> - <xsl:with-param name="ilvl" select="$ilvl"/> + <xsl:with-param name="ilvl" select="$current_level"/> <xsl:with-param name="style" select="$style"/> </xsl:call-template> <xsl:call-template name="autocomplete"> - <xsl:with-param name="ilvl" select="$ilvl + 1"/> + <xsl:with-param name="ilvl" select="$current_level + 1"/> <xsl:with-param name="style" select="$style"/> </xsl:call-template> </xsl:if> </xsl:template> @@ -188,7 +184,6 @@ <xsl:with-param name="current" select="$current + 1"/> <xsl:with-param name="max" select="$max"/> </xsl:call-template> </xsl:if> </xsl:template> - </xsl:stylesheet>