xsl-list
[Top] [All Lists]

FW: Problem with namespaces

2005-08-04 11:09:52
 

-----Original Message-----
From: Professional Content LLC 
[mailto:cdfisher(_at_)vps1(_dot_)procontent(_dot_)org] 
Sent: 04 August 2005 18:14
To: mike(_at_)saxonica(_dot_)com
Cc: cdfisher(_at_)procontent(_dot_)net
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



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>