我需要转换Excel XML电子表格,然后我可以将其导入另一个程序。使用普通的XML文档我没有问题,但Excel XML文档是另一回事。我遇到问题的地方是从每个单元格中提取所需的数据 必须有一些我不知道的咒语,这将允许我遍历树以获取数据。 以下是我的样式表的一部分:
<xsl:template match="ss:Table">
<xsl:for-each select="ss:Row">
<Reload>
<xsl:value-of select="ss:Cell/ss:Data"/>
</Reload>
<vio_sta-id>
<xsl:value-of select="ss:Cell/ss:Data"/>
</vio_sta-id>
<vio-first>
<xsl:value-of select="ss:Cell/ss:Data"/>
</vio-first>
<vio-middle>
<xsl:value-of select="ss:Cell/ss:Data"/>
</vio-middle>
<vio-last>
<xsl:value-of select="ss:Cell/ss:Data"/>
</vio-last>
这是我收到的文件中的“行”。
<ss:Row>
<ss:Cell><Data ss:Type="String">Reload</Data></ss:Cell>
<ss:Cell><Data ss:Type="Number">21</Data></ss:Cell>
<ss:Cell><Data ss:Type="String">ANTHONY</Data></ss:Cell>
<ss:Cell><Data ss:Type="String"></Data></ss:Cell>
<ss:Cell><Data ss:Type="String">VALDEZ</Data></ss:Cell>
<ss:Cell><Data ss:Type="String">01/28/1982</Data></ss:Cell>
<ss:Cell><Data ss:Type="String">07318386</Data></ss:Cell>
<ss:Cell><Data ss:Type="String">000-00-0000</Data></ss:Cell>
<ss:Cell><Data ss:Type="String">Blank Field</Data></ss:Cell>
<ss:Cell><Data ss:Type="String">638 W BAETZ</Data></ss:Cell>
<ss:Cell><Data ss:Type="String"></Data></ss:Cell>
<ss:Cell><Data ss:Type="String">SAN ANTONIO</Data></ss:Cell>
<ss:Cell><Data ss:Type="String">TX</Data></ss:Cell>
<ss:Cell><Data ss:Type="String">78221</Data></ss:Cell>
<ss:Cell><Data ss:Type="String">06/21/1999</Data></ss:Cell>
<ss:Cell><Data ss:Type="String">3259</Data></ss:Cell>
<ss:Cell><Data ss:Type="Number">165.00</Data></ss:Cell>
<ss:Cell><Data ss:Type="Number">0.00</Data></ss:Cell>
<ss:Cell><Data ss:Type="Number">0.00</Data></ss:Cell>
<ss:Cell><Data ss:Type="String">8880</Data></ss:Cell>
<ss:Cell><Data ss:Type="String">New</Data></ss:Cell>
<ss:Cell><Data ss:Type="String">00/00/0000</Data></ss:Cell>
<ss:Cell><Data ss:Type="String">PENDING</Data></ss:Cell>
<ss:Cell><Data ss:Type="String">FRED NIETO JR.</Data></ss:Cell>
<ss:Cell><Data ss:Type="String">ZIMMERMAN #700</Data></ss:Cell>
<ss:Cell><Data ss:Type="String">EXP. 1-99::NEW::0</Data></ss:Cell>
<ss:Cell><Data ss:Type="Number">10</Data></ss:Cell>
<ss:Cell><Data ss:Type="Number">5</Data></ss:Cell>
我的输出包括来自第一个单元格的数据反复重复。不知何故,我需要读取节点集然后前进到下一个...
谢谢
答案 0 :(得分:0)
<强>更新即可。我在第一次阅读时错过了你的最后一句话。
您的方法有两个基本问题:
Data
元素。您的模板应如下所示:
<xsl:for-each select="ss:Row">
<Reload>
<xsl:value-of select="ss:Cell[1]/ss:Data"/>
</Reload>
<vio_sta-id>
<xsl:value-of select="ss:Cell[2]/ss:Data"/>
</vio_sta-id>
<!-- etc -->
</xsl:for-each>
(原始答案。如果仍然有助于理解,请留下这个。)
Data
元素没有前缀:
<ss:Cell><Data ss:Type="String">06/21/1999</Data></ss:Cell>
但您的选择器前缀为ss
<xsl:value-of select="ss:Cell/ss:Data"/>
除非默认命名空间恰好与ss
前缀具有相同的URI,否则这将无效。
尝试将选择器重写为
<xsl:value-of select="ss:Cell/Data"/>