Subject: RE: 1 XSL for 2 XML
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Thu, 3 Jun 2004 13:08:24 +0100
|
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>
>
>
>
> > Hi,
> > I need a little help. I have 2 XML and 2 XSL to view files in IE,
> > but I need only 1 XSL. Only SOAP header and namespaces is difference
> > between XML files.
> > Any help?
> ...
> > 2. XML:
> > <?xml version="1.0"?>
> > <?xml-stylesheet type='text/xsl' href='soap_mytab.xsl'?>
> > <soap:Envelope
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> > xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
> > <soap:Header>
> > </soap:Header>
> > <soap:Body>
> > <receivedocument xmlns="urn:schemas-cp-com:loc">
> > <BodyDocuments>
> > <MYTAB xmlns="urn:schemas-cp-com:gen">
> > <MYHEAD>AAA</MYHEAD>
> > <MYITEM>
> > <MYIT>A1</MYIT>
> > </MYITEM>
> > <MYITEM>
> > <MYIT>A2</MYIT>
> > </MYITEM>
> > </MYTAB>
> > </BodyDocuments>
> > </receivedocument>
> > </soap:Body>
> > </soap:Envelope>
> > 2.XSL soap_mytab.xsl:
> > <?xml version="1.0"?>
> > <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> > xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
> > xmlns:d="urn:schemas-cp-com:loc"
> > xmlns:f="urn:schemas-cp-com:gen">
> > <xsl:output method="html" version="4.0"/>
> > <xsl:template match="/">
> > <html><body>
> > <xsl:apply-templates
> select="soap:Envelope/soap:Body/d:receivedocument/d:BodyDocume
> nts/f:MYTAB"/>
> > </body></html>
> > </xsl:template>
> > <xsl:template match="f:MYTAB">
> > <table border="1">
> > <th>HEAD</th><th><xsl:value-of select="f:MYHEAD"/></th>
> > <xsl:apply-templates select="f:MYITEM"/>
> > </table>
> > </xsl:template>
> > <xsl:template match="f:MYITEM">
> > <tr><td>ITEM</td><td><xsl:value-of select="f:MYIT"/></td></tr>
> > </xsl:template>
> > </xsl:stylesheet>
> >
>
> ____________________________________________________________
> Konečně tě vidím barevně. SAMSUNG X450 již od 2577 Kč. www.oskar.cz
> http://ad.seznam.cz/clickthru?spotId=74859
>
> --+------------------------------------------------------------------
> 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>
> --+--
>
>
|