XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Show tree view Topic
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
Brandon H.Subject: XSL / XML to create Excel Reports
Author: Brandon H.
Date: 09 Nov 2005 10:32 AM
I am working with an XSL stylesheet transforming XML data and rendering an Excel spreadsheet. I am having a problem with the namespaces which go along with the <Workbook> tag.

<xsl:template match="/">
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">

Since the namespaces are declared within the xsl:template tag, when I am trying to piece out the report sections into separate <xsl:template match="blah"> tags it is not finding the namespaces.

<Row ss:AutoFitHeight="0" ss:Height="13.5">
<Cell ss:StyleID="s22"/>
<Cell ss:StyleID="s22"/>
<Cell ss:StyleID="s22"/>
<Cell ss:StyleID="s22"/>
<Cell ss:StyleID="s22"/>
<Cell ss:StyleID="s22"/>
<Cell ss:StyleID="s22"/>
</Row>

Above is the code I would have moved into a sub-template, and the ss: prefix is not resolving. Is there a way to include the namespaces in these templates without including <Workbook> tag?

Any help is greatly appreciated.

Postnext
(Deleted User) Subject: XSL / XML to create Excel Reports
Author: (Deleted User)
Date: 09 Nov 2005 01:52 PM
Brandon,

If you put the namespace declaration on the xsl:stylesheet element
<xsl:stylesheet xmlns:ss="...."

then the xslt processor should handle the rest. It will put the declaration on the top element of your output document.

Clyde Kessel

Postnext
Brandon H.Subject: XSL / XML to create Excel Reports
Author: Brandon H.
Date: 09 Nov 2005 03:33 PM
Clyde,

Thanks for your feedback...turns out the solution was as follows:

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">

<xsl:template match="/">
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet">

All of the namespaces needed to be moved to the opening <xsl:stylesheet> tag. Also, the xmlns="urn:schemas-microsoft-com:office:spreadsheet" found in the <Workbook> tag must be included in any sub templates as follows:

<xsl:template match="/blah" xmlns="urn:schemas-microsoft-com:office:spreadsheet">

I hope this saves someone a lot of frustration and time.

Posttop
Ivan PedruzziSubject: XSL / XML to create Excel Reports
Author: Ivan Pedruzzi
Date: 09 Nov 2005 04:35 PM
Brando

Here a suggestion to keep your style-sheet easy to read without re-define the default name-space (xmlns="...") that can be a dangerous practise.

Having the name-space declared in each template make the style-sheet unnecessary verbose. What Clyde suggested is a cleaner solution.

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">

<xsl:template match="/">

<!-- watch out! you need to do this to generate the processing instruction for MS Office loader -->

<xsl:processing-instruction name="mso-application">progid="Excel.Sheet"</xsl:processing-instruction>

<ss:Workbook>
...
</ss::Workbook>

every time you have to output an element or attribute that has to be in the urn:schemas-microsoft-com:office:spreadsheet name-space you have use prefix ss:

The point is it doesn't matter which prefix you choose as long is mapped to the right name-space.

Hope this helps
Ivan Pedruzzi
Stylus Studio Team

 
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.