+ -
当前位置:首页 → 问答吧 → 复杂的XML转换问题

复杂的XML转换问题

时间:2011-10-09

来源:互联网

请帮忙写一个xslt将下面的xml转换成我需要的xml:
转换前:
<Worksheet ss:Name="Sheet1">
<Table ss:ExpandedColumnCount="4" ss:ExpandedRowCount="4" x:FullColumns="1" x:FullRows="1" ss:StyleID="s81" ss:DefaultColumnWidth="54" ss:DefaultRowHeight="13.5">
<Row>
<Cell ss:MergeAcross="1" ss:StyleID="s79">
<Data ss:Type="String">科目名称</Data>
</Cell>
<Cell ss:StyleID="s80">
<Data ss:Type="String">成本要素</Data>
</Cell>
<Cell ss:StyleID="s80">
<Data ss:Type="String">费用属性</Data>
</Cell>
</Row>
<Row>
<Cell ss:MergeAcross="1" ss:StyleID="s82">
<Data ss:Type="String">内燃机车小修</Data>
</Cell>
<Cell ss:StyleID="s83"/>
<Cell ss:StyleID="s83">
<Data ss:Type="String">生产费用</Data>
</Cell>
</Row>
<Row ss:Height="27">
<Cell ss:StyleID="s83"/>
<Cell ss:StyleID="s84">
<Data ss:Type="String">内燃机车小修</Data>
</Cell>
<Cell ss:StyleID="s83">
<Data ss:Type="String">材料</Data>
</Cell>
<Cell ss:StyleID="s83"/>
</Row>
<Row ss:Height="27">
<Cell ss:StyleID="s83"/>
<Cell ss:StyleID="s84">
<Data ss:Type="String">内燃机车配件大修</Data>
</Cell>
<Cell ss:StyleID="s83">
<Data ss:Type="String">其他</Data>
</Cell>
<Cell ss:StyleID="s83"/>
</Row>
</Table>
</Worksheet>
转换后:
<Worksheet>
<Row Name="内燃机车小修" FYStyle="生产费用">
<Cell Name="内燃机车小修" Style="材料"/>
<Cell Name="内燃机车配件大修" Style="其他"/>
</Row>
</Worksheet>

作者: robin_1   发布时间: 2011-10-09

XML code

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
<Worksheet>
    <xsl:apply-templates select="//Row[position()>1]"/>
</Worksheet>
  </xsl:template>

<xsl:template match="Row">
<xsl:if test="current()[Cell[1]/Data]">
<Row>
    <xsl:attribute name="Name"><xsl:value-of select="Cell[1]/Data"/></xsl:attribute>
    <xsl:attribute name="FYStyle"><xsl:value-of select="Cell[3]/Data"/></xsl:attribute>
</Row>
</xsl:if>
<xsl:if test="not(current()[Cell[1]/Data])">
    <Cell>
        <xsl:attribute name="Name"><xsl:value-of select="Cell[2]/Data"/></xsl:attribute>
        <xsl:attribute name="Style"><xsl:value-of select="Cell[3]/Data"/></xsl:attribute>
    </Cell>
</xsl:if>
</xsl:template>

</xsl:stylesheet>


作者: hookee   发布时间: 2011-10-10

不好意思,看错了,上面不对。

作者: hookee   发布时间: 2011-10-10

这个原始xml数据库有点毛病吧?

作者: magicleey1124   发布时间: 2011-10-10

这么晚,还帮忙,真是万分感谢。

作者: robin_1   发布时间: 2011-10-10

自己在顶一下

作者: robin_1   发布时间: 2011-10-10