[xsl] XSLT convert xml file to Excle Question III

Subject: [xsl] XSLT convert xml file to Excle Question III
From: "Karen Yang" <kyang94@xxxxxxxxx>
Date: Tue, 20 Jun 2006 17:38:26 -0400
Hi,

Thanks again for those who have replied to me. I appreciate it.

Unfortunately, I'm still struggling with the XSLT program. Have been
working on it quite some days, been to several websites and read part
of the "XSLT cookbook", but still can't make it out. Anyway, here is
my problem, I've pasted the XML source, current xslt file, and
expected output (I just can't get the NoteDetail node out). Since the
deadline is approaching (I guess my boss may look for othre source if
I still couldn't have a solution by early tomorrow), any of your
reply/help are greatly appreciated.

Thanks in advance,

Karen.

---------------
XML source:

<?xml version="1.0" encoding="utf-8"?>
<TAX_CASH_FLOW_ANALYSIS UpdateDateTime="2006-06-13T11:26:09.0000000-04:00">
<TaxCashFlowUnit>
   <NoteDetail>
     <Collateral>AGGREGATE</Collateral>
     <NoteDescription>PREMIUM</NoteDescription>
     <OrigBalance>745850848.91000021</OrigBalance>
     <OrigCoupon>10.053240586085408</OrigCoupon>
     <Price>0</Price>
     <PricePct>0</PricePct>
     <PricewAI>0</PricewAI>
     <PricewAIPct>0</PricewAIPct>
     <CFYield>8.1523988348202181</CFYield>
     <BEY>0</BEY>
   </NoteDetail>
   <TaxCashFlowDetail>
     <EndingAIP>786593727.21233881</EndingAIP>
     <PV>786593727.21233881</PV>
     <PrecapOID>0</PrecapOID>
     <OID>0</OID>
     <RemainingOID>-35744066.285386205</RemainingOID>
     <TaxableIncome>0</TaxableIncome>
     <QtrInt>0</QtrInt>
     <QtrOID>0</QtrOID>
     <QtrIncome>0</QtrIncome>
     <QSI>0</QSI>
     <NQSI>0</NQSI>
     <Principal>0</Principal>
     <CurrentBalance>745850848.91000021</CurrentBalance>
     <MarketDF>0</MarketDF>
   </TaxCashFlowDetail>
   <TaxCashFlowDetail>
     <EndingAIP>786593727.21233881</EndingAIP>
     <PV>786593727.21233881</PV>
     <PrecapOID>0</PrecapOID>
     <OID>0</OID>
     <RemainingOID>-35744066.285386205</RemainingOID>
     <TaxableIncome>0</TaxableIncome>
     <QtrInt>0</QtrInt>
     <QtrOID>0</QtrOID>
     <QtrIncome>0</QtrIncome>
     <QSI>0</QSI>
     <NQSI>0</NQSI>
     <Principal>0</Principal>
     <CurrentBalance>745850848.91000021</CurrentBalance>
     <MarketDF>0</MarketDF>
   </TaxCashFlowDetail>
   <TaxCashFlowDetail>
     <EndingAIP>786593727.21233881</EndingAIP>
     <PV>786593727.21233881</PV>
     <PrecapOID>0</PrecapOID>
     <OID>0</OID>
     <RemainingOID>-35744066.285386205</RemainingOID>
     <TaxableIncome>0</TaxableIncome>
     <QtrInt>0</QtrInt>
     <QtrOID>0</QtrOID>
     <QtrIncome>0</QtrIncome>
     <QSI>0</QSI>
     <NQSI>0</NQSI>
     <Principal>0</Principal>
     <CurrentBalance>745850848.91000021</CurrentBalance>
     <MarketDF>0</MarketDF>
   </TaxCashFlowDetail>
   </TaxCashFlowUnit>
</TAX_CASH_FLOW_ANALYSIS>

-----------------
xslt file:

<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet version="1.0"
   xmlns="urn:schemas-microsoft-com:office:spreadsheet"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:user="urn:my-scripts"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" >

<xsl:template match="/">
 <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";>
	<Worksheet>
	<xsl:attribute name="ss:Name">
	<xsl:value-of select="name(/*/*)"/>
	</xsl:attribute>
   <Table x:FullColumns="1" x:FullRows="1">
	<xsl:apply-templates/>
   </Table>
	</Worksheet>
	</Workbook>
</xsl:template>

<xsl:template match="TAX_CASH_FLOW_ANALYSIS/TaxCashFlowUnit/NoteDetail">
<xsl:for-each select="*/*">
<Row>
<Cell><Data ss:Type="String"><xsl:value-of select="local-name()"/></Data></Cell>
<Cell ss:Index="3"><Data ss:Type="String"><xsl:value-of
select="*/."/></Data></Cell>
</Row>
</xsl:for-each>
</xsl:template>


<xsl:template match="TAX_CASH_FLOW_ANALYSIS/TaxCashFlowUnit"> <Row> <xsl:for-each select="*[position() = 2]/*"> <Cell><Data ss:Type="String"> <xsl:value-of select="local-name()"/> </Data></Cell> </xsl:for-each> </Row> <xsl:apply-templates/> </xsl:template>

<xsl:template match="TAX_CASH_FLOW_ANALYSIS/TaxCashFlowUnit/TaxCashFlowDetail">
 <Row>
   <xsl:apply-templates/>
 </Row>
</xsl:template>

<xsl:template match="TAX_CASH_FLOW_ANALYSIS/TaxCashFlowUnit/TaxCashFlowDetail/*">
 <Cell><Data ss:Type="String">
   <xsl:value-of select="."/>
 </Data></Cell>
</xsl:template>

</xsl:stylesheet>

-------------
Desired output, would be in Excel, but just to put it as text for easy
to see. (nodedetail as header, and TaxCashFlowDetail as the table
part, also not all children under nodedetail would show up, just the
following 5)

Collateral	AGGREGATE
Description:	PREMIUM
Original Balance	745850848.9
Original Coupon	10.5324059
Cash Flow Yield:	8.15239883


EndingAIP PV PrecapOID OID RemainingOID TaxableIncome QtrInt QtrOID QtrIncome QSI NQSI Principal CurrentBalance MarketDF 786593727.21233881 786593727.21233881 0 0 -35744066.285386205 0 0 0 0 0 0 0 745850848.91000021 0 786593727.21233881 786593727.21233881 0 0 -35744066.285386205 0 0 0 0 0 0 0 745850848.91000021 0 786593727.21233881 786593727.21233881 0 0 -35744066.285386205 0 0 0 0 0 0 0 745850848.91000021 0

Current Thread