Subject: RE: 1 XSL for 2 XML
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Mon, 14 Jun 2004 12:47:57 +0100
|
> So, is it better to use
> <xsl:template match="f:MYTAB|MYTAB">
> than
> <xsl:template match="*[local-name(.)='MYTAB']">
Probably the former.
But my preferred solution would be that if the input is in the "wrong"
namespace, you should first do a transformation that puts it in the correct
namespace, and your main transformation then doesn't have to deal with these
complexities.
Michael Kay
> ??
>
> <?xml version="1.0"?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> xmlns:f="urn:schemas-cp-com:gen">
> <xsl:output method="html" version="4.0"/>
> <xsl:template match="/">
> <html><body>
> <xsl:apply-templates select="//f:MYTAB|//MYTAB"/>
> </body></html>
> </xsl:template>
>
> <xsl:template match="f:MYTAB|MYTAB">
> <table border="1">
> <th>HEAD</th><th>
> <xsl:value-of select="MYHEAD"/><xsl:value-of select="f:MYHEAD"/></th>
> <xsl:apply-templates select="f:MYITEM|MYITEM"/>
> </table>
> </xsl:template>
>
> <xsl:template match="f:MYITEM|MYITEM">
> <tr><td>ITEM</td>
> <td><xsl:value-of select="MYIT"/><xsl:value-of
> select="f:MYIT"/></td></tr>
> </xsl:template>
> </xsl:stylesheet>
>
>
> > Selecting by local-name like this is not a very good idea,
> when all you are
> > trying to do is to avoid specifying a correct namespace
> prefix. Firstly,
> > it's selecting/matching elements that it shouldn't
> (elements in the wrong
> > namespace).
> >
> > Secondly, with Saxon at any rate, it makes the search for a matching
> > template rule very inefficient. Saxon organizes rules by
> the node-kind and
> > node-name of the nodes that are matched, and then looks for
> "generic" rules
> > that can match multiple node kinds or multiple node-names.
> If all the rules
> > are generic, as here, then it potentially tries to match
> each element
> > against every rule.
> >
> > Michael Kay
> >
> > > -----Original Message-----
> > > From: Petr Mach3 [mailto:Mach3P@xxxxxxxxx]
> > > Sent: 03 June 2004 10:13
> > > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > > Subject: Re: 1 XSL for 2 XML
> > >
> > > Found answer, but ...
> > > Is it possible to use exclude-result-prefixes="f" ????
> > > It doesn't work for me.
> > >
> > > <?xml version="1.0"?>
> > > <xsl:stylesheet version="1.0"
> > > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> > > xmlns:f="urn:schemas-cp-com:gen">
> > > <xsl:output method="html" version="4.0"/>
> > >
> > > <xsl:template match="/">
> > > <html><body>
> > > <xsl:apply-templates select="//*[local-name(.)='MYTAB']"/>
> > > </body></html>
> > > </xsl:template>
> > >
> > > <xsl:template match="*[local-name(.)='MYTAB']">
> > > <table border="1">
> > > <th>HEAD</th>
> > > <th><xsl:value-of select="MYHEAD"/><xsl:value-of
> > > select="f:MYHEAD"/></th>
> > > <xsl:apply-templates select="*[local-name(.)='MYITEM']"/>
> > > </table>
> > > </xsl:template>
> > >
> > > <xsl:template match="*[local-name(.)='MYITEM']">
> > > <tr><td>ITEM</td>
> > > <td><xsl:value-of select="MYIT"/><xsl:value-of
> > > select="f:MYIT"/></td></tr>
> > > </xsl:template>
> > > </xsl:stylesheet>
>
> ____________________________________________________________
> Neomezený internet bez jakékoli smlouvy, kdykoli vás napadne.
> A navíc 30 volných minut na volání! S předplacenou službou Go
> Data Nonstop vše jen za 850 Kč měsíčně.
> http://ad.seznam.cz/clickthru?spotId=75021
>
> --+------------------------------------------------------------------
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
> To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
> or e-mail: <mailto:xsl-list-unsubscribe@xxxxxxxxxxxxxxxxxxxxxx>
> --+--
>
>
|