Sophie

Sophie

distrib > Fedora > 13 > i386 > media > updates-src > by-pkgid > cd8ce32c919af60229fca1d7f792c60e > files > 30

openoffice.org-3.2.0-12.35.fc13.src.rpm

Index: filter/source/xslt/odf2xhtml/export/xhtml/body.xsl
===================================================================
--- filter/source/xslt/odf2xhtml/export/xhtml/body.xsl	(revision 270524)
+++ filter/source/xslt/odf2xhtml/export/xhtml/body.xsl	(working copy)
@@ -1735,6 +1735,11 @@
         <xsl:param name="minLabelWidth"/>
         <xsl:param name="listIndent" />
 
+        <!-- The text:list-header shall not be labeled. According to ODF specification (sect. 4.3.2):
+            "The <text:list-header> element represents a list header and is a special kind of list item. It
+            contains one or more paragraphs that are displayed before a list. The paragraphs are formatted
+            like list items but they do not have a preceding number or bullet." -->
+        <xsl:variable name="isListHeader" select="boolean(self::text:list-header)"/>
 
         <xsl:variable name="listIndentNew">
             <xsl:choose>
@@ -1753,13 +1758,16 @@
         <xsl:variable name="itemNumberNew">
             <xsl:if test="$listStyle/text:list-style/text:list-level-style-number">
                 <xsl:choose>
+                    <xsl:when test="$isListHeader">0</xsl:when>
                     <xsl:when test="$isEmptyList">
 						<!--  An empty list item (no text:h/text:p as child), will not count as item and does not increment the count.  -->
                         <xsl:variable name="tempItemNumber">
                             <xsl:choose>
 								<!-- siblings will be incremented by one -->
                                 <xsl:when test="$itemNumber">
-                                    <xsl:value-of select="$itemNumber + 1"/>
+                                    <xsl:if test="not($isListHeader)">
+                                        <xsl:value-of select="$itemNumber + 1"/>
+                                    </xsl:if>
                                 </xsl:when>
 								<!-- if a higher list level had content the numbering starts with 1 -->
                                 <xsl:when test="$isListNumberingReset and $listLevel &gt; 1">
@@ -1834,6 +1842,7 @@
                             <xsl:when test="$display">
                                 <xsl:value-of select="$display"/>
                             </xsl:when>
+                            <xsl:when test="$isListHeader">0</xsl:when>
                             <xsl:otherwise>1</xsl:otherwise>
                         </xsl:choose>
                     </xsl:with-param>
@@ -1844,9 +1853,10 @@
         </xsl:variable>
         <xsl:element name="li">
             <xsl:choose>
-                <xsl:when test="$isEmptyList">
+                <xsl:when test="$isEmptyList or $isListHeader">
                     <xsl:apply-templates>
                         <xsl:with-param name="globalData" select="$globalData"/>
+                        <xsl:with-param name="isNextLevelNumberingReset" select="$isListHeader or $isNextLevelNumberingReset"/>
                         <xsl:with-param name="itemLabel" select="$itemLabelNew"/>
                         <xsl:with-param name="listLevel" select="$listLevel + 1"/>
                         <xsl:with-param name="listStyleName" select="$listStyleName"/>
@@ -1857,7 +1867,7 @@
                     <xsl:apply-templates mode="list-item-children" select="*[1]">
                         <xsl:with-param name="globalData" select="$globalData"/>
                         <xsl:with-param name="isEmptyList" select="$isEmptyList"/>
-                        <xsl:with-param name="isNextLevelNumberingReset" select="$isNextLevelNumberingReset"/>
+                        <xsl:with-param name="isNextLevelNumberingReset" select="$isListHeader or $isNextLevelNumberingReset"/>
 						<!-- The new created label is given to the children -->
                         <xsl:with-param name="itemLabel" select="$itemLabelNew"/>
                         <xsl:with-param name="listLabelElement">
@@ -2056,7 +2066,7 @@
 
 
 	<!-- The Numbering start value (or offset from regular counteing) is used at the first item of offset,
-	but have to be reused on following item/headers with no text:start-value -->
+	but have to be reused on following items with no text:start-value -->
     <xsl:template name="getItemNumber">
         <xsl:param name="listLevel"/>
         <xsl:param name="listLevelStyle"/>
@@ -2091,6 +2101,9 @@
 			the level 3 gets a 'pseudoLevel' -->
         <xsl:param name="pseudoLevel" select="0" />
 
+        <xsl:variable name="isListHeader" select="boolean(self::text:list-header)"/>
+        <xsl:variable name="isEmptyList" select="not(*[name() = 'text:h' or name() = 'text:p'])"/>
+
 		<!-- set the next of preceding list items. Starting from the current to the next previous text:list-item -->
         <xsl:variable name="precedingListItemOfSameLevelAndStyle" select="$precedingListItemsOfSameLevelAndStyle[$precedingListItemsOfSameLevelAndStyleCount - $IteratorSameLevelAndStyle + 1]"/>
         <xsl:variable name="precedingListItemOfSameStyle" select="$precedingListItemsOfSameStyle[$precedingListItemsOfSameStyleCount - $IteratorSameStyle + 1]"/>
@@ -2123,7 +2136,7 @@
                                 <xsl:when test="$currentListLevel &lt; $listLevel">
                                     <xsl:choose>
 										<!-- if it has content the counting is ended -->
-                                        <xsl:when test="*[name() = 'text:h' or name() = 'text:p']">
+                                        <xsl:when test="not($isEmptyList or $isListHeader)">
 											<!-- 2DO: Perhaps the children still have to be processed -->
                                             <xsl:value-of select="$itemNumber + $pseudoLevel"/>
                                         </xsl:when>
@@ -2178,7 +2191,7 @@
                                         <xsl:with-param name="pseudoLevel">
                                             <xsl:choose>
 												<!-- empty list item does not count -->
-                                                <xsl:when test="not(*[name() = 'text:h' or name() = 'text:p'])">
+                                                <xsl:when test="$isEmptyList or $isListHeader">
                                                     <xsl:value-of select="$pseudoLevel"/>
                                                 </xsl:when>
                                                 <xsl:otherwise>1</xsl:otherwise>
@@ -2211,11 +2224,14 @@
         <xsl:param name="precedingListItemsOfSameStyleCount"/>
         <xsl:param name="pseudoLevel" />
 
+        <xsl:variable name="isListHeader" select="boolean(self::text:list-header)"/>
+        <xsl:variable name="isEmptyList" select="not(*[name() = 'text:h' or name() = 'text:p'])"/>
+
         <xsl:choose>
             <xsl:when test="@text:start-value">
                 <xsl:choose>
-                    <xsl:when test="not(*[name() = 'text:h' or name() = 'text:p'])">
-						<!-- empty list item does not count -->
+                    <xsl:when test="$isEmptyList or $isListHeader">
+						<!-- empty list item does not count. neither does list header -->
                         <xsl:call-template name="countListItemTillStartValue">
                             <xsl:with-param name="IteratorSameLevelAndStyle" select="$IteratorSameLevelAndStyle + 1" />
                             <xsl:with-param name="IteratorSameStyle" select="$IteratorSameStyle + 1"/>
@@ -2237,8 +2253,8 @@
             </xsl:when>
             <xsl:when test="$listLevelStyle/@text:start-value">
                 <xsl:choose>
-                    <xsl:when test="not(*[name() = 'text:h' or name() = 'text:p'])">
-						<!-- empty list item does not count -->
+                    <xsl:when test="$isEmptyList or $isListHeader">
+						<!-- empty list item does not count. neither does list header -->
                         <xsl:call-template name="countListItemTillStartValue">
                             <xsl:with-param name="IteratorSameLevelAndStyle" select="$IteratorSameLevelAndStyle + 1" />
                             <xsl:with-param name="IteratorSameStyle" select="$IteratorSameStyle + 1"/>
@@ -2260,8 +2276,8 @@
             </xsl:when>
             <xsl:otherwise>
                 <xsl:choose>
-                    <xsl:when test="not(*[name() = 'text:h' or name() = 'text:p'])">
-						<!-- empty list item does not count -->
+                    <xsl:when test="$isEmptyList or $isListHeader">
+						<!-- empty list item does not count. neither does list header -->
                         <xsl:call-template name="countListItemTillStartValue">
                             <xsl:with-param name="IteratorSameLevelAndStyle" select="$IteratorSameLevelAndStyle + 1" />
                             <xsl:with-param name="IteratorSameStyle" select="$IteratorSameStyle + 1"/>
@@ -2838,4 +2854,4 @@
     <xsl:template match="math:annotation" mode="math"/>
     
  
-</xsl:stylesheet>
\ No newline at end of file
+</xsl:stylesheet>