+ -
当前位置:首页 → 问答吧 → 请教一个关于xslt解析带命名空间xml的问题

请教一个关于xslt解析带命名空间xml的问题

时间:2010-12-28

来源:互联网

有一个excel生成的xml表格1.xml,用excel.xslt解析,输出sheet1的表格格式
1.xml片段
<Worksheet ss:Name="Sheet1">
  <Table ss:ExpandedColumnCount="9" ss:ExpandedRowCount="3" x:FullColumns="1"
  x:FullRows="1" ss:DefaultColumnWidth="54" ss:DefaultRowHeight="14.25">
  <Row>
  <Cell ss:MergeDown="2" ss:StyleID="s64"><Data ss:Type="String">时间</Data></Cell>
  <Cell ss:MergeAcross="5" ss:StyleID="s64"><Data ss:Type="String">基本信息</Data></Cell>
  <Cell ss:MergeAcross="1" ss:MergeDown="1" ss:StyleID="s64"><Data
  ss:Type="String">其他信息</Data></Cell>
  </Row>
  <Row>
  <Cell ss:Index="2" ss:MergeDown="1" ss:StyleID="s64"><Data ss:Type="String">日期</Data></Cell>
  <Cell ss:MergeAcross="2" ss:StyleID="s64"><Data ss:Type="String">个人信息</Data></Cell>
  <Cell ss:MergeAcross="1" ss:StyleID="s64"><Data ss:Type="String">单位信息</Data></Cell>
  </Row>
  <Row>
  <Cell ss:Index="3" ss:StyleID="s62"><Data ss:Type="String">姓名</Data></Cell>
  <Cell ss:StyleID="s62"><Data ss:Type="String">性别</Data></Cell>
  <Cell ss:StyleID="s62"><Data ss:Type="String">年龄</Data></Cell>
  <Cell ss:StyleID="s62"><Data ss:Type="String">单位名</Data></Cell>
  <Cell ss:StyleID="s62"><Data ss:Type="String">邮编</Data></Cell>
  <Cell ss:StyleID="s62"><Data ss:Type="String">备注1</Data></Cell>
  <Cell ss:StyleID="s62"><Data ss:Type="String">备注2</Data></Cell>
  </Row>
  </Table>
  <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
  <PageSetup>
  <Layout x:Orientation="Landscape"/>
  </PageSetup>
  <Print>
  <ValidPrinterInfo/>
  <PaperSizeIndex>9</PaperSizeIndex>
  <HorizontalResolution>600</HorizontalResolution>
  <VerticalResolution>0</VerticalResolution>
  </Print>
  <Selected/>
  <Panes>
  <Pane>
  <Number>3</Number>
  <ActiveRow>5</ActiveRow>
  <ActiveCol>6</ActiveCol>
  </Pane>
  </Panes>
  <ProtectObjects>False</ProtectObjects>
  <ProtectScenarios>False</ProtectScenarios>
  </WorksheetOptions>
 </Worksheet>
-----------------------------------------------------------
excel.xslt
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" version="1.0">
  <xsl:output method="html"/>
  <xsl:template match="/">
  <table>
  <xsl:for-each select="ss:Workbook/ss:Worksheet/ss:Table/ss:Row">
  <tr>
  <xsl:for-each select="ss:Cell">
  <th style="border:solid 1px #ccc">
  <xsl:if test="@ss:MergeAcross!=''">
  <xsl:attribute name="colspan">
  <xsl:value-of select="@ss:MergeAcross+1"/>
  </xsl:attribute>
  </xsl:if>
  <xsl:if test="@ss:MergeDown!=''">
  <xsl:attribute name="rowspan">
  <xsl:value-of select="@ss:MergeDown+1"/>
  </xsl:attribute>
  </xsl:if>
  <xsl:value-of select="ss:Data" />
  </th>
  </xsl:for-each>
  <xsl:text></xsl:text>
  </tr>
  </xsl:for-each>
  </table>
  </xsl:template>
</xsl:stylesheet>
-------------------------------------------------
输出的1.html
<table xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"> <tr>
  <th style="border:solid 1px #ccc" rowspan="3">时间</th>
  <th style="border:solid 1px #ccc" colspan="6">基本信息</th>
  <th style="border:solid 1px #ccc" colspan="2" rowspan="2">其他信息</th>
  </tr>
  <tr>
  <th style="border:solid 1px #ccc" rowspan="2">日期</th>
  <th style="border:solid 1px #ccc" colspan="3">个人信息</th>
  <th style="border:solid 1px #ccc" colspan="2">单位信息</th>
  </tr>
  <tr>
  <th style="border:solid 1px #ccc">姓名</th>
  <th style="border:solid 1px #ccc">性别</th>
  <th style="border:solid 1px #ccc">年龄</th>
  <th style="border:solid 1px #ccc">单位名</th>
  <th style="border:solid 1px #ccc">邮编</th>
  <th style="border:solid 1px #ccc">备注1</th>
  <th style="border:solid 1px #ccc">备注2</th>
  </tr>
</table>
------------------
如上面红色处,如何能让这个<table xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">不带有命名空间,只输出为<table>,请高手指教

作者: yinmoo82   发布时间: 2010-12-28

try exclude-result-prefixes
refer to http://rosscify.wordpress.com/2008/09/11/remove-xml-namespaces-from-transformed-xml-xsl/

作者: masterz   发布时间: 2010-12-29