Kees Hink wrote:
> 
> Our xdv theme conditionally includes certain CSS files, like
> ie7-fixes.css:
> 
> <!--[if IE 7]><link rel="stylesheet" href="css/ie7-fixes.css"
> type="text/css"
> /><![endif]-->
> 
> It turns out the location for this file isn't transformed, probably
> because
> it's in a comment. This leads to missing CSS files, and therefore to bad
> rendering, in some browsers. It also causes a 404 each time this
> non-existent
> CSS file is requested. This is a problem.
> 
> The most elegant solution seems to be to rewrite the location for
> conditionally
> included CSS. How could i do that?
> 
> I've searched the web a bit, and found this:
> http://www.xml.com/pub/a/2000/09/13/xslt/index.html
> I tried selecting the comments from the theme by doing this:
>     <xsl:template match="comment()">
>         <p><xsl:value-of select="."/></p>
>     </xsl:template>
> I was hoping this would wrap comments in the xdv template in <p>'s, but
> the
> comments were still present as-is in the transformed page.
> 
> If i understand the article above correctly, that means our xml parser
> (lxml)
> doesn't put the comments in the source tree, is that correct? lxml's
> etree.parse() has an option to strip comments, so it should be able to put
> comments in the xml source tree, in fact it appears to be the default.
> I've
> looked in the code for both xdv and collective.xdv, but found no reference
> to
> lxml's remove_comments option.
> 
> There are alternative solutions to the problem:
> 
> We could put the correct comments in the transformed output with
> <xsl:comment>,
> but we wouldn't be able to drop the original comments. This would keep the
> unwanted 404's, which are a major performance drain. (We could fix this by
> creating some page templates which quickly return an empty CSS file.) We'd
> also
> have to manually change these when the designer adds conditional CSS, but
> that's not likely to happen.
> 
> Another approach would be to just rewrite the conditional CSS includes in
> the
> theme templates. Unfortunately, this would mean that when our designer
> gives us
> updated HTML (CSS/JS), we can't just drop it into our theme product
> anymore -
> we'll have to modify the includes in the HTML again. Admittedly, this
> could be
> done by a small shell script.
> 
> (Some background on this: Currently we have separate theme files for each
> content type, which are exactly the same ones the designer gave us. This
> way,
> we can easily drop in changes that the designer made by just copying over
> the
> files.)
> 

XSL templates operate on the content, not the theme.

I've fixed the absolute path handling on diazo trunk to work with
conditional comments in
http://dev.plone.org/plone/changeset/45850/diazo/trunk

In the meantime you could just add something like this to your rules:

<replace theme="/html/head/comment()">
<!--[if IE 7]><link rel="stylesheet" href="/static/css/ie7-fixes.css"
type="text/css"
/><![endif]-->
</replace>

Laurence


-- 
View this message in context: 
http://plone.293351.n2.nabble.com/collective-xdv-modify-theme-HTML-comments-conditional-CSS-tp5743684p5747976.html
Sent from the Product Developers mailing list archive at Nabble.com.
_______________________________________________
Product-Developers mailing list
[email protected]
http://lists.plone.org/mailman/listinfo/product-developers

Reply via email to