Here's a partial fix for this issue, I don't know if I should try
submitting it somewhere.

It requires modification of /export/xhtml/body.xhtml stylesheet:
http://framework.openoffice.org/source/browse/*checkout*/framework/filter/source/xslt/odf2xhtml/export/xhtml/body.xsl?content-type=text%2Fplain&rev=1.3.16.3

@text:style-name template needs to be modified and one recursive
template (inherited-classes) needs to be added:

<xsl:template match="style:style" mode="inherited-classes">
    <xsl:param name="globalData"/>
    <xsl:variable name="styleFamily" select="@style:family" />
    <xsl:variable name="parentStyleName" select="@style:parent-style-name" />
    <xsl:variable name="parentStyle"
select="$globalData/office:styles/style:sty...@style:family =
$styleFamily and @style:name = $parentStyleName]"/>

    <xsl:value-of select="translate(@style:name, '.,;: %()[]/\+',
'_____________')"/>
    <xsl:text> </xsl:text>
    <xsl:apply-templates select="$parentStyle" mode="inherited-classes">
        <xsl:with-param name="globalData" select="$globalData"/>
    </xsl:apply-templates>
</xsl:template>

<xsl:template match="@text:style-name | @draw:style-name |
@draw:text-style-name | @table:style-name"><!-- |
@presentation:style-name-->
        <xsl:param name="globalData"/>
        <xsl:variable name="style"
select="$globalData/office:automatic-styles/style:sty...@style:name =
current()]"/>
        <xsl:variable name="styleFamily" select="$style/@style:family" />
        <xsl:variable name="parentStyleName"
select="$style/@style:parent-style-name" />
        <xsl:variable name="parentStyle"
select="$globalData/office:styles/style:sty...@style:family =
$styleFamily and @style:name = $parentStyleName]"/>

        <xsl:attribute name="class">
                <xsl:value-of select="translate(., '.,;: %()[]/\+',
'_____________')"/>
                <xsl:text> </xsl:text>
                <xsl:apply-templates select="$parentStyle"
mode="inherited-classes">
                    <xsl:with-param name="globalData" select="$globalData"/>
                </xsl:apply-templates>
        </xsl:attribute>
</xsl:template>

There is also at least one other place in body.xsl (in the text:h
template) where @text:style-name template needs to be called (with the
$globalData param) for the fix to have effect instead of simply
outputting style name to the @class attribute.

The full fix would be to prevent excessive (overlapping in parent and
children) CSS properties from bein generated.

Martynas
odt2epub.com

On Fri, Mar 19, 2010 at 5:55 PM, Vyacheslav Sedov
<[email protected]> wrote:
> good idea - i can help with XSLT 2.0 - our project have some odf2xhtml
> code - our code is XSLT 2.0 - not XSLT 1.0 from OpenOffice
>
> with best wishes,
> Slav
>
> 2010/3/19 Martynas Jusevicius <[email protected]>:
>> Hey list,
>>
>> I've been working with odf2xhtml XSLT filter a lot lately, in relation
>> to ePub e-books. It does its job but it's really showing its age. I
>> wonder if there are plans for a new version? It could really benefit
>> from many of XSLT 2 features.
>>
>> One of the most annoying things is the generated CSS. If style A
>> defines bold text and style B is inherited from A and additionally
>> defines right alignment, odf2xhtml generates such code:
>>
>> .A { font-weight: bold; }
>> .B { font-weight: bold; text-align: right; }
>>
>> <p class="A"> ... <p class="B">
>>
>> That shows up OK in the browser, but removes the relationship between
>> A and B in the XHTML/CSS output. For example, if I need to select all
>> elements with style inherited from A, I cannot do that without looking
>> into the original ODT and examining the styles.
>>
>> I think much better output could be achieved using multiple classes in XHTML:
>>
>> .A { font-weight: bold; }
>> .B { text-align: right; }
>>
>> <p class="A"> ... <p class="A B">
>>
>> What do you think?
>>
>> Martynas
>> odt2epub.com
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to