[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Problem with apply-template match="/"
This isn't a priority, but it's a problem that is bugging me and I
would like to know why it's happening.
I'm using xercesImpl- 2.2.1.jar,xercesImpl.jar, xalan-2.4.1.jar and I have fop.jar (0.20.5) in the classpath. When I create a Dom object of the xml and run the following code in java: // Create the Transformer that takes the XML DOM and converts it // into XML in memory TransformerFactory transfact = TransformerFactory.newInstance(); Transformer transformer = transfact.newTransformer(xslSource); DOMSource dsSource = new DOMSource(xmlDoc.getDocumentElement()); if (transformer != null) { transformer.transform(dsSource, drResult); foOutDoc = (Document)drResult.getNode(); }else{ System.err.println("No Transformer"); } The resulting DOM object starts with the information in the apply-template match="root" not "/" Here is the xml: <?xml version="1.0" encoding="UTF-8"?><root><piechartamount>77.3</piechartamount></root> And here is the xsl: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:fox="http://xml.apache.org/fop/extensions" xmlns:math="java.lang.Math" exclude-result-prefixes="math" xmlns:lxslt="http://xml.apache.org/xslt" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:svg="http://www.w3.org/2000/svg"> <xsl:param name="color1" select="'#003366'" /> <xsl:param name="color2" select="'#E6E6E6'" /> <xsl:param name="total" select="'0'" /> <xsl:param name="runningTotal" select="'0'" /> <xsl:attribute-set name="table-piechart-style"> <xsl:attribute name="font-size">11pt</xsl:attribute> <xsl:attribute name="font-weight">bold</xsl:attribute> <xsl:attribute name="background-color">#ffffff</xsl:attribute> <xsl:attribute name="color">#003366</xsl:attribute> <xsl:attribute name="text-align">center</xsl:attribute> <xsl:attribute name="display-align">center</xsl:attribute> </xsl:attribute-set> <xsl:template match="/"> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layout-master-set> <fo:simple-page-master margin=".25in .25in .25in .25in" master-name="main" page-height="11in" page-width="8.5in"> <fo:region-body margin="0 0 0 0" region-name="xsl-region-body" /> <fo:region-after extent="2cm" region-name="xsl-region-after" /> </fo:simple-page-master> </fo:layout-master-set> <xsl:apply-templates /> </fo:root> </xsl:template> <!-- Main Body of Report --> <xsl:template match="root"> <fo:page-sequence master-reference="main"> <fo:flow flow-name="xsl-region-body"> <fo:block>This is a test</fo:block> <fo:block xsl:use-attribute-sets="table-piechart-style"> <xsl:variable name="number" select="piechartamount" /> <xsl:variable name="difference" select="100 - $number" /> <xsl:variable name="currentAngle" select="math:toRadians(($number div 100) * 360.0)" /> <xsl:variable name="halfAngle" select="math:toRadians((($number div 2) div $total) * 360.0)" /> <xsl:variable name="rotation" select="270 + (360.0 * ($number div 100))" /> <xsl:variable name="x1" select="math:cos($halfAngle) * 70" /> <xsl:variable name="y1" select="math:sin($halfAngle) * 70" /> <xsl:variable name="cosTheta" select="math:cos(math:toRadians($rotation))" /> <xsl:variable name="sinTheta" select="math:sin(math:toRadians($rotation))" /> <fo:instream-foreign-object> <svg height="100" viewBox="0 0 200 100" width="200" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g> <path style="fill:{$color1};stroke:black;stroke-width:1;fillrule:evenodd; stroke-linejoin:bevel;"> <xsl:attribute name="transform"> <xsl:text>translate(100,50)</xsl:text> <xsl:text>rotate(</xsl:text> <xsl:value-of select="$rotation" /> <xsl:text>)</xsl:text> </xsl:attribute> <xsl:attribute name="d"> <xsl:text>M 50 0 A 50 50 0 </xsl:text> <xsl:choose> <xsl:when test="$currentAngle > 3.14"> <xsl:text>1 </xsl:text> </xsl:when> <xsl:otherwise> <xsl:text>0 </xsl:text> </xsl:otherwise> </xsl:choose> <xsl:text>1 </xsl:text> <xsl:value-of select="math:cos($currentAngle) * 50" /> <xsl:text> </xsl:text> <xsl:value-of select="math:sin($currentAngle) * 50" /> <xsl:text> L 0 0 Z</xsl:text> </xsl:attribute> </path> </g> </svg> </fo:instream-foreign-object> </fo:block> </fo:flow> </fo:page-sequence> </xsl:template> </xsl:stylesheet> Here is the result: <?xml version="1.0" encoding="UTF-8"?><fo:page-sequence master-reference="main" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:fox="http://xml.apache.org/fop/extensions" xmlns:lxslt="http://xml.apache.org/xslt" xmlns:svg="http://www.w3.org/2000/svg"><fo:flow flow-name="xsl-region-body"><fo:block>This is a test</fo:block><fo:block background-color="#ffffff" color="#003366" display-align="center" font-size="11pt" font-weight="bold" text-align="center"><fo:instream-foreign-object><svg height="100" viewBox="0 0 200 100" width="200" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g><path d="M 50 0 A 50 50 0 1 1 7.200539127612638 -49.478805930132545 L 0 0 Z" style="fill:#003366;stroke:black;stroke-width:1;fillrule:evenodd; stroke-linejoin:bevel;" transform="translate(100,50)rotate(548.28)"/></g></svg></fo:instream- foreign-object></fo:block></fo:flow></fo:page-sequence> Sorry for the long email, Like I said it's puzzling me and I would like to understand why it is happening. Thanks, Derrick Shoemake
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|