Re: [xsl] IE's conditional comments in xslt

Subject: Re: [xsl] IE's conditional comments in xslt
From: "Manfred Staudinger" <manfred.staudinger@xxxxxxxxx>
Date: Fri, 3 Mar 2006 14:06:35 -0800
I would like to be able to feed different
versions of IE with different css or markup, without any browser-sniffing.

Manfred

On 03/03/06, Michael Kay <mike@xxxxxxxxxxxx> wrote:
> >
> > I would like to propose a xslt conform solution for
> > Conditional Comments
>
> Would you like to describe the problem you are trying to solve, and the
> constraints on the solution, that prevent you using XML markup to achieve
> this?
>
> Note that XSLT 2.0 has compile-time conditionals achieved through a
use-when
> attribute. Why doesn't this work for you?
>
> Michael Kay
> http://www.saxonica.com/
>
>
> >
> > The proposed solution uses two downlevel-hidden CC's
> > <!--[if expression]> HTML <![endif]--> and one downlevel-revealed CC
> > <![if expression]> HTML <![endif]> and consists of:
> > 1. the test for the system-property, to make sure that only
> > MS's IE will see it.
> > 2. two xslt comment elements with the conditional html in between
> > 3. each one of the xslt comment elements has text inside,
> > which starts with
> > "[if IE]>" and ends with "&lt;![endif]", forming a
> > downlevel-hidden CC.
> > 4. inside the downlevel-hidden CC's there is the start
> > "&lt;![if lte IE 6]>" and
> > the end "&lt;![endif]>" of the downlevel-revealed CC.
> >
> > <xsl:if test="system-property('xsl:vendor')='Microsoft'">
> > <xsl:comment><xsl:text>[if IE]>&lt;![if lte IE
> > 6]>&lt;![endif]</xsl:text></xsl:comment>
> >       <!-- "lte IE 6" = "expression" -->
> >       <!-- html gets executed by any IE for which the
> > "expression" is true -->
> > <xsl:comment><xsl:text>[if
> > IE]>&lt;![endif]>&lt;![endif]</xsl:text></xsl:comment>
> > </xsl:if>
> >
> > The only variable part in this example is "lte IE 6", which I'll call
> > "expression for
> > this discussion. If the "expression" is true for your browser, the the
> > html between
> > those two comments get executed. In the example given, its
> > true for IE 6, IE 5.5
> > and IE 5.0, but not for IE 7. To select for IE 6 only, use
> > "IE 6" and so on.
> >
> > Manfred Staudinger
> >
> > For additional information
> > http://www.positioniseverything.net/articles/multiIE.html
> > http://msdn.microsoft.com/workshop/author/dhtml/overview/ccomm
> > ent_ovw.asp#Downlevel_revealed_Conditional_Comments

Current Thread