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

RE: fallback to a default template in xsl processing

Subject: RE: fallback to a default template in xsl processing
From: "Daly, April" <april@xxxxxxxxxxx>
Date: Fri, 25 Apr 2008 13:39:32 +0100
RE:  fallback to a default template in xsl processing
Hi,

maybe my practice of always matching the root influences the double
matching(?). The stylesheet below has been reduced to the main '/' match and
then just the 'headers to the templates that process the different matched
nodes



<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:output method="html"/>
        <xsl:template match="/">

                <html>
                        <head>
                                <title>
                                        <xsl:value-of select="name(LIMS)"/>
                                </title>
                        </head>
                        <body>
                                <xsl:choose>
                                        <xsl:when
test="name(LIMS/*)='SUBOUTINE' or name(LIMS/*)='LIST' ">
                                                <xsl:apply-templates
select="LIMS/*[1]"/>
                                        </xsl:when>
                                        <xsl:otherwise>
                                                <xsl:apply-templates
mode="default" select="LIMS/*"/>
                                        </xsl:otherwise>
                                </xsl:choose>
                        </body>
                </html>
        </xsl:template>
        <xsl:template match="SUBROUTINE">
        </xsl:template>
        <xsl:template match="LIST">
        </xsl:template>
        <xsl:template match="*">
        </xsl:template>
<xsl:stylesheet>


The input xml document takes the general form of a flat table like structure
(these are exported xml objects from a data system where the first node is the
parent table, the other nodes are child tables in the data system).

<?xml version='1.0'?>
<LIMS>
        <LIST/>
        <LIST_ENTRY/>
        <LIST_ENTRY/>
        <LIST_ENTRY/>
</LIMS>



Ultimately I would like to 'call' a named template for specific matched node,
otherwise 'call' the default template. The purpose of the xsl stylesheet is to
provide a report that allows users to view the exported xml objects as
formatted html.

Thanks (to everyone) for your help! (This is such a great list!)

Kind Regards, April


-----Original Message-----
From: Paul Spencer [mailto:xml-dev-list@xxxxxxxxxxxxxx]
Sent: Friday, April 25, 2008 7:28 AM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE:  fallback to a default template in xsl processing

We would need to see your attempt and the source file to know what you are
doing wrong. The usual problem with default templates is that you pick up
more than you wanted. This can often be avoided by providing a partial path.

Regards

Paul Spencer

> -----Original Message-----
> From: Daly, April [mailto:april@xxxxxxxxxxx]
> Sent: 24 April 2008 20:43
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: RE:  fallback to a default template in xsl processing
>
>
> Hi,
> Thank you!
>
> I tried that and maybe I didn't set it up correctly....buts the
> nodes with 'named' templates (e.g., 'A' or 'B') were processed
> twice, once by the template with match='A' and the other by match='*'.
> Thanks for your help!
> Regards,
>
> April
> April L Daly
> Daly Web, Inc.
> ________________________________________
> From: Jim Earley [xml.jim@xxxxxxxxx]
> Sent: Thursday, April 24, 2008 3:38 PM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: RE:  fallback to a default template in xsl processing
>
> One approach for this is to use the following:
>
> <xsl:template match="*">
>   ...
> </xsl:template>
>
> Jim Earley
> XML Architect
> Flatirons Solutions Corp.
>
>
>
> -----Original Message-----
> From: Daly, April [mailto:april@xxxxxxxxxxx]
> Sent: Thursday, April 24, 2008 1:29 PM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject:  fallback to a default template in xsl processing
>
> Hi!
>
> I have what I hope is a simple question for the xsl/xpath gurus!
>
>
> I would like to be able to apply a default template within xsl
> 1.0 if no match is found.
> Currently I'm using an ugly  'brute-force' approach using <xsl:choose>:
>
> <xsl:choose>
>    <xsl:when test="name()='A' or name()='B'">
>       <xsl:apply-templates mode='namedTemplates' select='.'/>
>    </xsl:when>
>    <xsl:otherwise>
>       <xsl:apply-templates mode='defaultTemplates' select='.'/>
>    </xsl:otherwise>
> </xsl:choose>
>
>
> this is a simplfied example, but I hope it shows what I'm trying to do.
>
> Is there a better way to apply a named template if 'found'
> otherwise apply a default
> template?
>
> Thanks (in advance) for your help!
>
> April
> April L Daly
> Daly Web, Inc.

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-2013 All Rights Reserved.