RE: [xsl] include css in xsl - follow up

Subject: RE: [xsl] include css in xsl - follow up
From: "Robert Koberg" <rob@xxxxxxxxxx>
Date: Thu, 20 Mar 2003 07:31:13 -0800
Yes, it is expected.

When you link to JavaScript or CSS like this you are saying that the rendered
HTML is going to ask the browser to go get the the JS or CSS form a relative
path based on the server side location of your rendered output. Nothing happens
on the server to include these things in the rendered output. It is the same as
if you wrote out plain HTML and served it to the client (which is a good way to
test these things).

best,
-Rob

> -----Original Message-----
> From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx]On Behalf Of TP
> Sent: Thursday, March 20, 2003 7:16 AM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: [xsl] include css in xsl - follow up
>
>
> I got the xsl to pick up the css and have declared the css file as a link in
> hte xsl file as
>
> <xsl:template match="message/text/dTree">
>   <html>
>     <head>
>         <link rel="stylesheet" href="../css/style.css" type="text/css" />
>         <script language="JavaScript" type="text/javascript"
> src="../js/tree.js"/>
>     </head>
>     <body>
>         <xsl:call-template name="menuTree"/>
>     </body>
>     </html>
> </xsl:template>
>
> <xsl:template name="menuTree">
>  etc.......
> </xsl:template>
>
> My observation here is that the template menuTree does not inherit the css
> properties from the calling template.
>
> Is that expected? Whats the solution to this.
>
> Thanks.
>
> TP.
>
> > Hi,
> >
> > A couple of things:
> >
> > 1. You do realize that anything behind WEB-INF (in a servelet container)
> is
> > protected. That is, it is not available to the client.
> >
> > 2. You are using backslashes when you should be using forward slashes:
> >  href="../css/style.css"
> >
> > Solution:
> >
> > Put your CSS folder in your docroot and reference by a root relative path:
> >
> >  href="/css/style.css"
> >
> > you can still use relative paths (perhaps you want to generated pages
> offline?)
> > by figuring out where your transformation places the rendered version in
> your
> > server's path. I assume you are using a servlet - so you can see what the
> > url-pattern is and assume that is where your rendered version is in
> relation to
> > the CSS.
> >
> > For example, if you have:
> >
> > <servlet>
> >     <servlet-name>Blah</servlet-name>
> >     <servlet-class>com.Blah</servlet-class>
> >     <load-on-startup/>
> >    </servlet>
> >    <servlet-mapping>
> >       <servlet-name>Blah</servlet-name>
> >       <url-pattern>/Blah</url-pattern>
> >    </servlet-mapping>
> >
> > in a webapp that is living off of:
> >
> > http://myserver.com/myapp
> >
> > you would need a style href like the following:
> >
> > root relative - href="/myapp/css/style.css"
> > document relative - href="css/style.css"
> >
> > best,
> > -Rob
> >
> >
> > > -----Original Message-----
> > > From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > > [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx]On Behalf Of TP
> > > Sent: Wednesday, March 19, 2003 8:55 AM
> > > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > > Subject: Re: [xsl] include css in xsl
> > >
> > >
> > > Thanks Passin and Blix (interesting name)
> > >
> > > This is the xsl below
> > > ==================================================
> > > <?xml version="1.0" encoding="UTF-8"?>
> > > <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
> > >     xmlns:lxslt="http://xml.apache.org/xslt";
> > >     xmlns:counter="MyCounter"
> > >     extension-element-prefixes="counter"
> > >     version="1.0">
> > >
> > > <xsl:output method = "html" />
> > >  <xsl:template match="message">
> > > <html>
> > >    <head>
> > >    <link rel="stylesheet" href="..\css\style.css" type="text/css"
> > > media="screen"/>
> > >   </head>
> > > <body>
> > >   etc...
> > > </body>
> > > </html>
> > > </xsl:template>
> > > </xsl:stylesheet>
> > > ==================================================
> > >
> > > the filesystem is as
> > > WEB-INF
> > > -- classes
> > > -- lib
> > > -- xslt
> > > ---- this.xsl
> > > -- css
> > > ---- style.css
> > >
> > > This is a subset of the entire stylesheets. The reason I am saying that
> is
> > > because my stylesheets use templates and include/import other
> stylesheets
> > > which are getting resolved properly. I use the implement URIResolver in
> my
> > > servlet so that the files are picked up from the appropriate folder.
> > >
> > > You know those errors which you think are nothing but take a long time
> to
> > > resolve but end up being something small. this cud be one of them.
> > >
> > > I appreciate the help.
> > >
> > > Thanks.
> > >
> > > TP.
> > > ----- Original Message -----
> > > From: "Passin, Tom" <tpassin@xxxxxxxxxxxx>
> > > To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
> > > Sent: Wednesday, March 19, 2003 10:23 AM
> > > Subject: RE: [xsl] include css in xsl
> > >
> > >
> > > > [ I have copied this question over to the right thread.  Please
> respond
> > > > to this thread]
> > > >
> > > > It sounds as if you are expecting something to happen that is not
> going
> > > > to happen.  the html code you show below is apparently in an html file
> > > > (the output of your transformation, I imagine?).  At this point, when
> > > > you load the file into a browser, no xslt transformation is going to
> be
> > > > invoked.  On the other hand, the css stylesheet should be applied to
> the
> > > > page, via the "link" element.
> > > >
> > > > If that is not happening, probably the path to the css file is wrong,
> or
> > > > the css file is not valid css.  Perhaps the external css file contains
> > > > xml instead of css (it should not have a "style" element, for
> example)?
> > > >
> > > > You have to decide whether your xslt stylesheet is going to insert the
> > > > __css text__ from an xml file into your html output document, or
> whether
> > > > it is going to insert a reference to a css file, as you have it below.
> > > > You cannot succees with a mix and match approach.
> > > >
> > > > Cheers,
> > > >
> > > > Tom P
> > > >
> > > > > > [ TP]
> > > > > > > I wrote this in the head of the xsl
> > > > > > > ----------------------------------------------------------------
> > > > > > > <head>
> > > > > > > <link  rel="stylesheet" href="style.css" type="text/css"/>
> > > > > > > </head>
> > > > > > > ----------------------------------------------------------------
> > > > > > > It did not pick it up..... any ideas.....
> > > > > > >
> > > > > >
> > > > > > What do you mean?  What do you mean by "the head of the xsl"?
> > > > >
> > > > > This is the code that apears in "View source"
> > > > >
> > > > > <html>
> > > > > <head>
> > > > > <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
> > > > > <title>Test</title>
> > > > > <link media="screen" type="text/css" href="../css/style.css"
> > > > > rel="stylesheet">
> > > > > </head>
> > > > > <body>
> > > > > etc....
> > > > >
> > > > > I dont belive that the xsl is picking up the css file when it
> > > > > renders the
> > > > > html.
> > > > >
> > > >
> > > >  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> > > >
> > >
> > >  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> > >
> >
> >
> >
> >  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> >
>
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


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


Current Thread