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

FW: Problem with namespaces

Subject: FW: Problem with namespaces
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Thu, 4 Aug 2005 19:09:52 +0100
autofitwidth
-----Original Message-----
From: Professional Content LLC [mailto:cdfisher@xxxxxxxxxxxxxxxxxxx] 
Sent: 04 August 2005 18:14
To: mike@xxxxxxxxxxxx
Cc: cdfisher@xxxxxxxxxxxxxx
Subject: I have to send this directly... Sorry

The big-list server will not accept email in multi-part form (therefore I
cannot use my HTML email) and the Gov. facility where I work blocks the
server. I have tried other forums but the real XSLT folks hang out at
mulberrytec (sigh).

Can you post this for me in the list?  I would really appreciate it.

Thanks,

Curtis

Problem with namespaces

I am converting an Excel generated XML file to another XML format.  If I
strip out all the namespace declarations pertaining to Microsoft in the xml
and xsl files, it works, but if I put them back in, I cannot make this work.


I'm stuck with PHP XSLT 1.0 (Sablotron) so anything with 2.0 is not
possible.  After reading MK's XSLT books and JT's beginning book on
namespaces, I feel I have an understanding of why namespaces are needed, and
how they should work.  But when it comes to how they play on access of nodes
with XPath I really don't know why this doesn't work.

Here is the XML

<?xml version="1.0"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
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">
	<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
		<LastAuthor>Preferred Customer</LastAuthor>
		<Created>2005-07-28T04:27:20Z</Created>
		<LastSaved>2005-08-02T16:01:05Z</LastSaved>
		<Version>10.4219</Version>
	</DocumentProperties>
	<OfficeDocumentSettings
xmlns="urn:schemas-microsoft-com:office:office">
		<DownloadComponents/>
		<LocationOfComponents
HRef="file:///\\Srcstore\dist1\OfficeXP\Suite8-2002\"/>
	</OfficeDocumentSettings>
	<ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
		<WindowHeight>7305</WindowHeight>
		<WindowWidth>15180</WindowWidth>
		<WindowTopX>120</WindowTopX>
		<WindowTopY>105</WindowTopY>
		<RefModeR1C1/>
		<ProtectStructure>False</ProtectStructure>
		<ProtectWindows>False</ProtectWindows>
	</ExcelWorkbook>
	<Styles>
		<Style ss:ID="Default" ss:Name="Normal">
			<Alignment ss:Vertical="Bottom"/>
			<Borders/>
			<Font/>
			<Interior/>
			<NumberFormat/>
			<Protection/>
		</Style>
		<Style ss:ID="s21">
			<NumberFormat ss:Format="Currency"/>
		</Style>
		<Style ss:ID="s22">
			<Alignment ss:Horizontal="Center"
ss:Vertical="Bottom"/>
		</Style>
		<Style ss:ID="s23">
			<Alignment ss:Horizontal="Center"
ss:Vertical="Bottom"/>
			<NumberFormat ss:Format="Short Date"/>
		</Style>
	</Styles>
	<Names>
		<NamedRange ss:Name="Category"
ss:RefersTo="=inventory!R1C17"/>
		<NamedRange ss:Name="Year" ss:RefersTo="=inventory!R1C1"/>
	</Names>
	<Worksheet ss:Name="inventory">
		<Table ss:ExpandedColumnCount="26" ss:ExpandedRowCount="48"
x:FullColumns="1" x:FullRows="1">
			<Column ss:AutoFitWidth="0" ss:Width="31.5"/>
			<Column ss:AutoFitWidth="0" ss:Width="75"/>
			<Column ss:AutoFitWidth="0" ss:Width="123"/>
			<Column ss:AutoFitWidth="0" ss:Width="93"/>
			<Column ss:AutoFitWidth="0" ss:Width="71.25"/>
			<Column ss:Index="7" ss:AutoFitWidth="0"
ss:Width="74.25" ss:Span="1"/>
			<Column ss:Index="9" ss:AutoFitWidth="0"
ss:Width="60" ss:Span="2"/>
			<Column ss:Index="12" ss:AutoFitWidth="0"
ss:Width="70.5"/>
			<Column ss:AutoFitWidth="0" ss:Width="42"/>
			<Column ss:StyleID="s22" ss:AutoFitWidth="0"
ss:Width="58.5"/>
			<Column ss:AutoFitWidth="0" ss:Width="66.75"/>
			<Column ss:StyleID="s22" ss:AutoFitWidth="0"
ss:Width="91.5"/>
			<Column ss:AutoFitWidth="0" ss:Width="92.25"/>
			<Column ss:AutoFitWidth="0" ss:Width="75"/>
			<Column ss:AutoFitWidth="0" ss:Width="60"/>
			<Column ss:AutoFitWidth="0" ss:Width="95.25"/>
			<Column ss:StyleID="s22" ss:AutoFitWidth="0"
ss:Width="68.25"/>
			<Column ss:AutoFitWidth="0" ss:Width="57"/>
			<Column ss:AutoFitWidth="0" ss:Width="70.5"/>
			<Column ss:AutoFitWidth="0" ss:Width="71.25"/>
			<Column ss:AutoFitWidth="0" ss:Width="69.75"/>
			<Row>
				<Cell>
					<Data ss:Type="String">Year</Data>
					<NamedCell ss:Name="Year"/>
				</Cell>
				<Cell>
					<Data ss:Type="String">Make</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">Model</Data>
				</Cell>
				<Cell>
					<Data
ss:Type="String">TrimLevel</Data>
				</Cell>
				<Cell>
					<Data
ss:Type="String">AskingPrice</Data>
				</Cell>
				<Cell>
					<Data
ss:Type="String">Mileage</Data>
				</Cell>
				<Cell>
					<Data
ss:Type="String">ExteriorColor</Data>
				</Cell>
				<Cell>
					<Data
ss:Type="String">InteriorColor</Data>
				</Cell>
				<Cell>
					<Data
ss:Type="String">BodyStyle</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">Doors</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">Engine</Data>
				</Cell>
				<Cell>
					<Data
ss:Type="String">Transmission</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">Stereo</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">Stock</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">VIN</Data>
				</Cell>
				<Cell>
					<Data
ss:Type="String">Options</Data>
				</Cell>
				<Cell>
					<Data
ss:Type="String">Category</Data>
					<NamedCell ss:Name="Category"/>
				</Cell>
				<Cell>
					<Data
ss:Type="String">GeoRegion</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">Image</Data>
				</Cell>
				<Cell>
					<Data
ss:Type="String">InternetSpecials</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">Date</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">Color</Data>
				</Cell>
				<Cell>
					<Data
ss:Type="String">CarCost</Data>
				</Cell>
				<Cell>
					<Data
ss:Type="String">AdditionalExpenses</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">TotalCost
</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">Notes</Data>
				</Cell>
			</Row>
			<Row>
				<Cell>
					<Data ss:Type="Number">2000</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">Buick</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">Park Ave
</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">None</Data>
				</Cell>
				<Cell ss:StyleID="s21">
					<Data ss:Type="Number">8995</Data>
				</Cell>
				<Cell>
					<Data ss:Type="Number">15663</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">None</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">None</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">Four
Door</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">None</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">None</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">None</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">None</Data>
				</Cell>
				<Cell>
					<Data ss:Type="Number">14</Data>
				</Cell>
				<Cell>
					<Data
ss:Type="Number">1125421</Data>
				</Cell>
				<Cell ss:StyleID="Default">
					<Data ss:Type="String">None</Data>
				</Cell>
				<Cell ss:StyleID="s21">
					<Data ss:Type="String">Domestic
Autos</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">USA</Data>
				</Cell>
				<Cell
ss:Formula="=RC[-5]&amp;&quot;.jpg&quot;">
					<Data ss:Type="String">14.jpg</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">None</Data>
				</Cell>
				<Cell ss:StyleID="s23">
					<Data
ss:Type="DateTime">2005-02-18T00:00:00.000</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">White</Data>
				</Cell>
				<Cell ss:StyleID="s21">
					<Data ss:Type="Number">4900</Data>
				</Cell>
				<Cell ss:StyleID="s21">
					<Data ss:Type="Number">422.64</Data>
				</Cell>
				<Cell ss:StyleID="s21">
					<Data
ss:Type="Number">5322.64</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">None</Data>
				</Cell>
			</Row>
			<Row>
				<Cell>
					<Data ss:Type="Number">1998</Data>
				</Cell>
				<Cell>
					<Data
ss:Type="String">Cadillac</Data>
				</Cell>
				<Cell>
					<Data
ss:Type="String">Deville</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">None</Data>
				</Cell>
				<Cell ss:StyleID="s21">
					<Data ss:Type="Number">8995</Data>
				</Cell>
				<Cell>
					<Data ss:Type="Number">768942</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">None</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">None</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">Four
Door</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">None</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">None</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">None</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">None</Data>
				</Cell>
				<Cell>
					<Data ss:Type="Number">8</Data>
				</Cell>
				<Cell>
					<Data ss:Type="Number">99958</Data>
				</Cell>
				<Cell ss:StyleID="Default">
					<Data ss:Type="String">None</Data>
				</Cell>
				<Cell ss:StyleID="s21">
					<Data ss:Type="String">Domestic
Autos</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">USA</Data>
				</Cell>
				<Cell
ss:Formula="=RC[-5]&amp;&quot;.jpg&quot;">
					<Data ss:Type="String">8.jpg</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">None</Data>
				</Cell>
				<Cell ss:StyleID="s23">
					<Data
ss:Type="DateTime">2005-03-04T00:00:00.000</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">Pearl</Data>
				</Cell>
				<Cell ss:StyleID="s21">
					<Data ss:Type="Number">5135</Data>
				</Cell>
				<Cell ss:StyleID="s21">
					<Data
ss:Type="Number">1534.07</Data>
				</Cell>
				<Cell ss:StyleID="s21">
					<Data
ss:Type="Number">6669.07</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">None</Data>
				</Cell>
			</Row>
			<Row>
				<Cell>
					<Data ss:Type="Number">1995</Data>
				</Cell>
				<Cell>
					<Data
ss:Type="String">Cadillac</Data>
				</Cell>
				<Cell>
					<Data
ss:Type="String">Deville</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">None</Data>
				</Cell>
				<Cell ss:StyleID="s21">
					<Data ss:Type="Number">3195</Data>
				</Cell>
				<Cell>
					<Data ss:Type="Number">302539</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">None</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">None</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">Four
Door</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">None</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">None</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">None</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">None</Data>
				</Cell>
				<Cell>
					<Data ss:Type="Number">2</Data>
				</Cell>
				<Cell>
					<Data ss:Type="Number">156343</Data>
				</Cell>
				<Cell ss:StyleID="Default">
					<Data ss:Type="String">None</Data>
				</Cell>
				<Cell ss:StyleID="s21">
					<Data ss:Type="String">Domestic
Autos</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">USA</Data>
				</Cell>
				<Cell
ss:Formula="=RC[-5]&amp;&quot;.jpg&quot;">
					<Data ss:Type="String">2.jpg</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">None</Data>
				</Cell>
				<Cell ss:StyleID="s23">
					<Data
ss:Type="DateTime">2005-05-07T00:00:00.000</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">Gray</Data>
				</Cell>
				<Cell ss:StyleID="s21">
					<Data ss:Type="Number">800</Data>
				</Cell>
				<Cell ss:StyleID="s21">
					<Data ss:Type="Number">100</Data>
				</Cell>
				<Cell ss:StyleID="s21">
					<Data ss:Type="Number">900</Data>
				</Cell>
				<Cell>
					<Data ss:Type="String">None</Data>
				</Cell>
			</Row>
		</Table>
		<WorksheetOptions
xmlns="urn:schemas-microsoft-com:office:excel">
			<Selected/>
			<FreezePanes/>
			<SplitHorizontal>1</SplitHorizontal>
			<TopRowBottomPane>23</TopRowBottomPane>
			<ActivePane>2</ActivePane>
			<Panes>
				<Pane>
					<Number>3</Number>
				</Pane>
				<Pane>
					<Number>2</Number>
					<ActiveRow>1</ActiveRow>
					<ActiveCol>25</ActiveCol>
	
<RangeSelection>R2C26:R48C26</RangeSelection>
				</Pane>
			</Panes>
			<ProtectObjects>False</ProtectObjects>
			<ProtectScenarios>False</ProtectScenarios>
		</WorksheetOptions>
		<Sorting xmlns="urn:schemas-microsoft-com:office:excel">
			<Sort>Category</Sort>
			<Sort>Make</Sort>
			<Sort>Year</Sort>
		</Sorting>
	</Worksheet>
</Workbook>

Here is the XSL

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" >
	<xsl:output method="xml" indent="yes" encoding="UTF-8"/>


	<xsl:template name="rows" match="/"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" >
		<xsl:element name="Inventory">
			<xsl:for-each select="Workbook/Worksheet/Table/Row">
				<xsl:if test="position() &gt; 1">
				<xsl:for-each select="Cell">
					<xsl:choose>
						<xsl:when test="position() =
1">
							<xsl:element
name="Year"><xsl:value-of select="Data"/></xsl:element>
						</xsl:when>
						<xsl:when test="position() =
2">
							<xsl:element
name="Make"><xsl:value-of select="Data"/></xsl:element>
						</xsl:when>
						<xsl:when test="position() =
3">
							<xsl:element
name="Model"><xsl:value-of select="Data"/></xsl:element>
						</xsl:when>
						<xsl:when test="position() =
4">
							<xsl:element
name="TrimLevel"><xsl:value-of select="Data"/></xsl:element>
						</xsl:when>
						<xsl:when test="position() =
5">
							<xsl:element
name="AskingPrice"><xsl:value-of select="Data"/></xsl:element>
						</xsl:when>
						<xsl:when test="position() =
6">
							<xsl:element
name="Mileage"><xsl:value-of select="Data"/></xsl:element>
						</xsl:when>
						<xsl:when test="position() =
7">
							<xsl:element
name="ExteriorColor"><xsl:value-of select="Data"/></xsl:element>
						</xsl:when>
						<xsl:when test="position() =
8">
							<xsl:element
name="InteriorColor"><xsl:value-of select="Data"/></xsl:element>
						</xsl:when>
						<xsl:when test="position() =
9">
							<xsl:element
name="BodyStyle"><xsl:value-of select="Data"/></xsl:element>
						</xsl:when>
						<xsl:when test="position() =
10">
							<xsl:element
name="Doors"><xsl:value-of select="Data"/></xsl:element>
						</xsl:when>
						<xsl:when test="position() =
11">
							<xsl:element
name="Engine"><xsl:value-of select="Data"/></xsl:element>
						</xsl:when>
						<xsl:when test="position() =
12">
							<xsl:element
name="Transmission"><xsl:value-of select="Data"/></xsl:element>
						</xsl:when>
						<xsl:when test="position() =
13">
							<xsl:element
name="Stereo"><xsl:value-of select="Data"/></xsl:element>
						</xsl:when>
						<xsl:when test="position() =
14">
							<xsl:element
name="Stock"><xsl:value-of select="Data"/></xsl:element>
						</xsl:when>
						<xsl:when test="position() =
15">
							<xsl:element
name="VIN"><xsl:value-of select="Data"/></xsl:element>
						</xsl:when>
						<xsl:when test="position() =
16">
							<xsl:element
name="Options"><xsl:value-of select="Data"/></xsl:element>
						</xsl:when>
						<xsl:when test="position() =
17">
							<xsl:element
name="Category"><xsl:value-of select="Data"/></xsl:element>
						</xsl:when>
						<xsl:when test="position() =
18">
							<xsl:element
name="GeoRegion"><xsl:value-of select="Data"/></xsl:element>
						</xsl:when>
						<xsl:when test="position() =
19">
							<xsl:element
name="Image"><xsl:value-of select="Data"/></xsl:element>
						</xsl:when>
						<xsl:when test="position() =
20">
							<xsl:element
name="InternetSpecials"><xsl:value-of select="Data"/></xsl:element>
						</xsl:when>
						<xsl:when test="position() =
21">
							<xsl:element
name="Date"><xsl:value-of select="Data"/></xsl:element>
						</xsl:when>
						<xsl:when test="position() =
22">
							<xsl:element
name="Color"><xsl:value-of select="Data"/></xsl:element>
						</xsl:when>
						<xsl:when test="position() =
23">
							<xsl:element
name="CarCost"><xsl:value-of select="Data"/></xsl:element>
						</xsl:when>
						<xsl:when test="position() =
24">
							<xsl:element
name="AdditionalExpenses"><xsl:value-of select="Data"/></xsl:element>
						</xsl:when>
						<xsl:when test="position() =
25">
							<xsl:element
name="TotalCost"><xsl:value-of select="Data"/></xsl:element>
						</xsl:when>
						<xsl:when test="position() =
26">
							<xsl:element
name="Notes"><xsl:value-of select="Data"/></xsl:element>
						</xsl:when>
					</xsl:choose>

					<!--<xsl:call-template
name="getUnit"/>					<xsl:element
name="node" ><xsl:value-of select="Data"/></xsl:element>

					
					<xsl:value-of
select="$elementTree/ss:node[position()]//*/name()"/>
						<xsl:for-each
select="./ss:Data">
	 						<xsl:for-each
select="$elementTree/ss:node">  	
	
<xsl:value-of select="$elementTree/node[position()]/name()"></xsl:value-of>
	 						</xsl:for-each>

	 						</xsl:for-each>

					</xsl:element>-->
				</xsl:for-each>		
				</xsl:if>
			</xsl:for-each>
		</xsl:element>
		<xsl:apply-templates />
	</xsl:template>
		
</xsl:stylesheet>

As I said, this works fine with the office namespaces removed.  But since
I'm looking for an automated solution, it's not an option.

Thanks, and I appreciate the expert advice only available in this list.

Curtis

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