[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: question about javascript in XSL

Subject: RE: question about javascript in XSL
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Fri, 25 Aug 2006 09:27:23 +0100
javascript normalize space
It sounds as if your code has been written to depend on the well known MSXML
"bug" whereby whitespace is stripped from source documents without you asking
for it. You haven't shown your source document so it's hard to tell; but I
would guess that either <xsl:strip-space elements=*"/> to force this
whitespace stripping, or select="normalize-space(SOMETHING)", would do the
trick.

Incidentally,

(a) it's a good idea to put literal text in the stylesheet inside <xsl:text>
elements, to get better control over formatting of the output

(b) putting text in CDATA makes no difference to anything unless the text
contains < or & characters that would otherwise need to be escaped.

Michael Kay
http://www.saxonica.com/


> -----Original Message-----
> From: shi wudao [mailto:shiwudao@xxxxxxxxxxx]
> Sent: 25 August 2006 09:09
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject:  question about javascript in XSL
>
> HI, all
> I have a question as follow:
> requirements:
>   use XSL read value(string ) from xml, then display it in HTML.
>   and add a link on the string to call a CGI program with the string.
>
> I wrote it as:
> <?xml version="1.0" encoding="ISO-8859-1"?><xsl:stylesheet
> version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template
>  match="/"> ......
>   <script language="javascript">
>          <![CDATA[
>            var infoname = ']]><xsl:value-of
> select="SOMETHING"/><![CDATA[';
>            document.write("<a href=\"display?"+ infoname +"\"
> target=\"_blank\">" + infoname + "</a>");
>          ]]>
>          </script>[/color]
> ......
>
> It works fine in IE, but in Mozilla, in the statement"var
> infoname =", the section of  CDATA has changed into a new
> line, so failed in Mozilla.
> the correct HTML should be
>     var infoname = 'XXXX';
>
> but now it looks like
>     var infoname = '
> XXXX
> ';
>
> So how can I fix this problem or there is any other better
> solution for the requirement?
> Thanks a lot.
>
> _________________________________________________________________
> e
h49d8h== MSN Explorer:   http://explorer.msn.com/lccn/

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2011 All Rights Reserved.