RE: definition of "first character of each word"

As you imply, this text came straight from CSS, so 
the real answer (if any) should come from CSS.
Note that the XSL spec has added the Note to this
property that "its use is not recommended in XSL."

Even the more recent CSS3 Candidate Recommendation
is no clearer:

In fact, it was (and remains) unclear in the CSS spec
what text-transform="capitalize" means.  Some users
thought this also meant to lowercase the non-initial 
letters.  The CSS WG clarified this in response to my
question at (member only)

        Puts the first character of each word in uppercase; 
        other characters are unaffected.

Personally, I'd be hesitant to try to be more specific
about "words" in the XSL spec.  This sort of thing should 
be left as somewhat implementation specific.  As some of 
your examples point out, it can be very difficult to 
determine just what a "word" is in all cases.  Any
user using this property should do so with this


> -----Original Message-----
> From: 
> [] On Behalf Of Victor Mote
> Sent: Thursday, 14 April, 2005 18:27
> To: XSL Editors
> Subject: definition of "first character of each word"
> Dear Editors:
> Section 7.16.6 (text-transform) of the 1.1 WD specifies the 
> following for
> the "capitalize" option: "Puts the first character of each word in
> uppercase." This would seem to require no explanation. 
> However, consider the
> following example, submitted by an able FOP developer:
> <fo:block>
>   <fo:wrapper text-transform="capitalize">
>     e<fo:wrapper>x</fo:wrapper>tensible</fo:wrapper>
> </fo:block>
> The submitter of this example and I have both, perhaps 
> through intuition,
> thought that the desired result here would be the text 
> "Extensible", i.e.
> that text uninterrupted by non-text leaves should be considered as
> contiguous. However, while researching tree sibling issues on another
> matter, I came across this posting:
> This posting exposes some ugly clarity issues related to 
> 4.2.4, which it is
> not my purpose to discuss right now. However, if I apply the 
> principles in
> this posting to the above problem, my reasoning becomes this: 
> 1. Because
> neither pre-order nor post-order traversal is specified, I may not use
> either, but am confined to looking only at siblings. 2. Under these
> circumstances, "E", "X", and "T" are each the beginning of a 
> word. 3. The
> transformed text will be "EXTensible".
> Is this logic correct? Or is some clarification required to 
> 7.16.6? Or,
> perhaps I have overlooked something.
> FWIW, I did check the CSS2.1 CR, and found nothing to clarify 
> the matter
> there. I tried the following html/css code in IE 6.0:
> <p>
>   <nobr style="text-transform: capitalize;">
>     e<nobr>x</nobr>tensible</nobr>
> </p>
> <p>
>   <em style="text-transform: capitalize;">
>     e<em>x</em>tensible</em>
> </p>
> Both cases render "Extensible" (the second in italics of 
> course). If this
> rendering is correct, then I suppose that 4.2.4 and 7.16.6 need to be
> clarified, as well as other sections that rely on the 
> reasoning used in the
> posting cited above, such as 7.15.12. I would ordinarily 
> submit a proposed
> change to clarify the intent, but, as you can see, I am still 
> not clear on
> the intent. Any guidance you can provide will be appreciated.
> Victor Mote

Received on Friday, 15 April 2005 14:30:14 UTC