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

RE: Optimizing XSLT iteration

Subject: RE: Optimizing XSLT iteration
From: "Scott Trenda" <Scott.Trenda@xxxxxxxx>
Date: Mon, 8 Oct 2007 09:12:27 -0500
RE:  Optimizing XSLT iteration
... Just out of curiosity here (it may be a business requirement or
whatnot, I don't know), why are you trying to construct an SVG path out
of (what looks to be) ellipse creation information? Why not just
something like:
<ellipse transform="rotate({@ellipse_angle})" cx="{@x}" cy="{@y}"
rx="{@ellipse_major_radius}" ry="{@ellipse_minor_radius}"/>?

~ Scott


-----Original Message-----
From: Sujata Gohad [mailto:sgohad@xxxxxxx]
Sent: Sunday, October 07, 2007 4:50 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject:  Optimizing XSLT iteration

Hello folks,

I have an XML file in the format:

<document src="image.tif" >
  <page x="0" y= "0" width="1012" height="506" >
    <attribute src="h" name= "page.h" value="TODO" />
    <component  id="component1" >
      <trace id="component3.trace1">
        <attribute src="h" name= "trace.h" value="TODO" />
        <locus x="371" y= "36" ellipse_x="371.269" ellipse_y="35.5983"
ellipse_major_radius= "14.3639" ellipse_minor_radius="9.81155"
ellipse_angle="0.148638" ellipse_major_axis= "0.988974 0.148091"
ellipse_minor_axis="0.148091 -0.988974" intensity="0" thickness="2"
color= "#(TODO)" KM2="1" KM4="3" KM8= "3" />
        <locus x="371" y= "37" ellipse_x="371.428" ellipse_y="36.853"
ellipse_major_radius= "14.3171" ellipse_minor_radius="9.86581"
ellipse_angle="0.327775" ellipse_major_axis= "0.946761 0.321938"
ellipse_minor_axis="0.321938 -0.946761" intensity="0" thickness="2"
color= "#(TODO)" KM2="1" KM4="3" KM8= "3" />
        <locus x="371" y= "38" ellipse_x="371.532" ellipse_y="38.2574"
ellipse_major_radius= "18.3574" ellipse_minor_radius="15.0037"
ellipse_angle="0.508344" ellipse_major_axis= "0.873552 0.486731"
ellipse_minor_axis="0.486731 -0.873552" intensity="0" thickness="1"
color= "#(TODO)" KM2="0" KM4="1" KM8= "3" />
        <locus x="371" y= "39" ellipse_x="371.482" ellipse_y="39.5204"
ellipse_major_radius= "17.479" ellipse_minor_radius="15.5356"
ellipse_angle="0.524238" ellipse_major_axis= "0.865705 0.500554"
ellipse_minor_axis="0.500554 -0.865705" intensity="0" thickness="3"
color= "#(TODO)" KM2="0" KM4="1" KM8= "3" />
         ...
         ...
         ...
        <locus x="350" y= "43" ellipse_x="350.593" ellipse_y="43.4193"
ellipse_major_radius= "30.7193" ellipse_minor_radius="25.6399"
ellipse_angle="2.10944" ellipse_major_axis= "-0.512976 0.858403"
ellipse_minor_axis="-0.858403 -0.512976" intensity="0" thickness="5"
color= "#(TODO)" KM2="0" KM4="2" KM8= "0" />
      </trace >
    </component >
  </page >
</document >


In order to convert it to SVG format:

<?xml version=' 1.0' encoding='UTF-8'?>
<?xml-stylesheet href="hvm_to_svg.css" type="text/css"? >
<svg height="506" width= "1012"
xmlns:xlink="http://www.w3.org/1999/xlink "
xmlns="http://www.w3.org/2000/svg ">
  <image height="506" width= "1012" xlink:href="foreground.png" />
  <path d="M371.269 35.5983 L371.428 36.853 L371.532 38.2574 L371.482
39.5204 .... L350.593 43.4193" class="trace"/ >
</svg >


(where .... is replaced by more "Lx y" components)


I am using the XSLT:
....
            <xsl:for-each select="component">
                <xsl:for-each select="trace">
                    <path >
                        <xsl:attribute name="class">
trace</xsl:attribute >
                        <xsl:attribute name="d">
                            <xsl:for-each select="locus[position()=1]">
                                <xsl:text >M </xsl:text >
                                <xsl:value-of select="@ellipse_x"/ >
                                <xsl:text > </xsl:text >
                                <xsl:value-of select="@ellipse_y"/ >
                            </xsl:for-each >
                            <xsl:for-each select="locus[position()!=1]">
                                <xsl:text > L</xsl:text >
                                <xsl:value-of select="@ellipse_x"/ >
                                <xsl:text > </xsl:text >
                                <xsl:value-of select="@ellipse_y"/ >
                            </xsl:for-each >
                        </xsl:attribute >
                    </path >
                </xsl:for-each >
            </xsl:for-each >
....

XSLT profiler shows that 80% of the time is spent in enumerating the
"locus" elements?


Is there a way to faster iteration of the "locus" elements?


Thanks
- Sujata

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