Subject: [xsl] Re: Default attribute value templates From: Dimitre Novatchev <dnovatchev@xxxxxxxxx> Date: Wed, 27 Jun 2001 13:28:40 -0700 (PDT) |
Trevor Nash wrote: > Is there a way of specifying via an attribute value template (or > similar mechanism) that the attribute is absent? > > Example: > I have a template which matches a specific element, then does an > apply-templates with a sort. The application is supposed to be fairly > generic, so it seems a nice idea to allow those attributes of sort > which are attribute value templates to be parameterized thus: > > <xsl:template match="x"> > <xsl:apply-templates> > <xsl:sort order="{@order}" ... /> > </xsl:apply-templates> > </xsl:template> > > The problem is, given <x>...</x> the transformation fails "order must > be ascending or descending". > > I can see how I could handle this by substituting appropriate values > when the attribute is mising, but > a) it would involve hard wiring the default values, which would be > bad news if they ever changed > b) it seems inordinately messy > c) I don't think it would always behave identically if for example > the input is <x order="">...</x> : becuase some processors might take > this as 'use the default', others will reject it. > > Have I missed anything? Hi Trevor, MSXML does not signal an error and interprets the lack of @order or an empty string value of @order exactly as you wanted -- the whole AVT is discarded and no "order" attribute is specified. I wonder if this is not a bug in MSXML 4. Otherwise, one solution to your problem is the following: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="x"> <xsl:choose> <xsl:when test="@order and (@order = 'ascending' or @order = 'descending')"> <xsl:apply-templates> <xsl:sort order="{@order}"/> </xsl:apply-templates> </xsl:when> <xsl:otherwise> <xsl:apply-templates> <xsl:sort/> </xsl:apply-templates> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet> Hope this helped. Cheers, Dimitre Novatchev. __________________________________________________ Do You Yahoo!? Get personalized email addresses from Yahoo! Mail http://personal.mail.yahoo.com/ XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Re: How to define a xsl:s, Mike McGraw | Thread | Re: [xsl] Re: Default attribute val, Trevor Nash |
RE: [xsl] It's going to work, even , Robert C. Lyons | Date | Re: [xsl] It's going to work, even , David Carlisle |
Month |