Fabian Mandelbaum wrote:
> I've removed the space between the element name and the [ declaring
> the attribute  and got the same behaviour, the problem seems to be
> somewhere else.
> 
> It looks like the elements "below" the ones declared on the CSS do not
> inherit the line-through decoration.
> 
> XML excerpt:
> 
> <section revisionflag="deleted">
> <title>The Title</title>
> <para>Some content</para>
> </section>
> 
> I expect that "The Title" and "Some content" are striken-through when
> I set the revisionflag="deleted" on its containing element, here the
> section, however they are not. If I go and set the
> revisionflag="deleted" on, say the para, then "Some content" is
> striken-through.
> 
> So, the CSS rule is not being inherited by the children of elements
> with revisionflag="deleted". Is this expected behaviour? (I cannot
> anticipate in advance all possible children of elements with
> revisionflag="deleted", so it's not practicable to declare CSS rules
> for them all...)
> 

OK, there is an issue here.

The text-decoration CSS property is *not* inherited stricto sensu. It is
more complex than that. See
http://www.w3.org/TR/REC-CSS2/text.html#propdef-text-decoration

XXE implementation is ``semi-conformant'':

* If you add "text-decoration: line-through;" to a block, this property
is not inherited by contained text.

* If you add "text-decoration: line-through;" to an inline, it is
inherited by contained text, an this, whatever the child element which
contains this text. For example, all the text contained in child
elements of an XHTML <a> indeed is underlined.

I'm affraid you must consider this as being a *limitation* of XXE.

The work around is to use something like:
---
*[revisionflag="deleted"] * {
    text-decoration: line-through;
}
---
Not very efficient but it works.

An efficient alternative is to use another kind of decoration: XHTML
example:

---
ins {
    display: block;
    border-width: 2px;
    border-style: solid;
    border-color: transparent blue transparent transparent;
    padding-right: 5px;
}

del {
    display: block;
    color: gray;
    border-width: 2px;
    border-style: solid;
    border-color: transparent gray transparent transparent;
    padding-right: 5px;
}
---

Reply via email to