[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
RE: [xsl] Optimizing identity template
Subject: RE: [xsl] Optimizing identity template From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Thu, 22 Jan 2009 09:33:30 -0000 |
> 1. load an external SVG file ($basemap). > 2. copy entire SVG file, adding <circle> as the last element I would do: <xsl:template match="svg:svg"> <xsl:copy> <xsl:copy-of select="child::node()"/> <svg:circle cx="100px" cy="100px" r="5px" fill="#ff0000" stroke="#000000" stroke-width="1px"/> </xsl:copy> </xsl:template> No need to apply-templates all the way down the tree if all you want is a straight copy. And a match with the predicate [position()=last()] is potentially very expensive, though Saxon optimizes it. Michael Kay http://www.saxonica.com/ > > This is for PHP5/libxslt, but there will also be an XSLT > 2/Saxon version. > > <?xml version="1.0" encoding="UTF-8"?> > <xsl:stylesheet version="1.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > xmlns:svg="http://www.w3.org/2000/svg"> > > <xsl:output method="xml" omit-xml-declaration="no" > indent="yes" encoding="UTF-8"/> > > <xsl:template match="/"> > <xsl:apply-templates > select="document($basemap)/svg:svg"/> > </xsl:template> > > <xsl:template match="/svg:svg/*[position()=last()]"> > <xsl:copy> > <xsl:apply-templates select="@*|node()"/> > </xsl:copy> > <circle xmlns="http://www.w3.org/2000/svg" > cx="100px" cy="100px" r="5px" > fill="#ff0000" stroke="#000000" stroke-width="1px"/> > </xsl:template> > > <xsl:template match="node()|@*"> > <xsl:copy> > <xsl:apply-templates select="@*|node()"/> > </xsl:copy> > </xsl:template> > > </xsl:stylesheet> > > -- > Best regards, > Jacek Iwaqski > jiva@xxxxxxx
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Optimizing identity templ, David Carlisle | Thread | [xsl] Re: [xml-dev] XSLT Stylesheet, G. Ken Holman |
[xsl] Re: Re-arranging an XML file, Mike Stroud | Date | Re: [xsl] Re: Re-arranging an XML f, David Carlisle |
Month |