This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: Capitalizing only the first letter of each word


Hey Katie,

Here's an approach that works well for ANSI characters.

I'm not totally sure how it would behave with Unicode data, I do know it
won't die--it just may not case some of the non-english characters
correctly.  I tested it out with some greek sentences, with what little I
know about greek characters, and it seems to be behaving correctly.
However, be wary, because I believe that some languages have characters that
have no equivalent capitalized form ... in which case, I suspect this
function will still work--it should just no-op the toUpperCase call to
return the given character as is.

Anyway, enough of my jibber-jabber, here's the extension function:

 <msxsl:script implements-prefix="string" language="JavaScript">
//<![CDATA[
function toAllWordsProperCase(s){

    if(void(0)==s||null==s) return "";
	
    if("object"==typeof(s)) s = s.nextNode.text;

    if(void(0)==s||""==s) return "";

    var result = "";
    var words = s.split(" ");
    var count = words.length;

    for(var i=0;i<count;i++) {
       result += parse(words[i]) + " ";
    }
    result += parse(words[i]);

    return result;

    ////////////////////////////////////////
    //internal method
    function parse(s){
       if(void(0)==s||""==s) return "";
       if(isNaN(parseInt(s))) {
          return s.charAt(0).toUpperCase() + s.substr(1).toLowerCase();
       }
       else {
          return s;
       }
    }
}
//]]>
</msxsl:script>


hope this helps ... I know I enjoyed the exercise.

-Jeff


-----Original Message-----
From: Katie McNally [mailto:kmcnally9@hotmail.com]
Sent: Wednesday, March 20, 2002 8:43 PM
To: xsl-list@lists.mulberrytech.com
Subject: [xsl] Capitalizing only the first letter of each word


I am getting back my data in ALL-CAPS.  Is there any way to display the 
first letter of each word in uppercase, but the rest of each word in 
lowercase?

example XML:

<Tg Nm="Name">JOHN LEWIS</Fld>
<Tg Nm="Street">8780 MAIN ST</Fld>
<Tg Nm="City">COLORADO SPRINGS</Fld>
<Tg Nm="State">CO</Fld>

I want to display:

John Lewis
8780 Main St
Colorado Springs
CO


_________________________________________________________________
MSN Photos is the easiest way to share and print your photos: 
http://photos.msn.com/support/worldwide.aspx


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]