Subject: Re: [xsl] Convert XML to Excel using XSLT Question II. From: "Karen Yang" <kyang94@xxxxxxxxx> Date: Tue, 20 Jun 2006 11:35:52 -0400 |
Thank you for your reply, Michael. I'm still a bit confused about the "apply-templates". Now I think <xsl:template match="blah"> means the template will apply to "blah" tag in XML, i.e. when the XML is reading "blah" tag out, it'll find the template and run it, right? If so, why we still need to trigger the "apply-template"? Also, in some cases, the "apply-template" is not used, for the example, in below code, then what does this part do?
<xsl:template match="/*/*/*/*"> <Cell><Data ss:Type="String"> <xsl:value-of select="."/> </Data></Cell> </xsl:template>
Also, just by calling <xsl:apply-tmeplate/>, will this apply to the current tag or what would this apply against?
Karen. On 6/19/06, Michael Kay <mike@xxxxxxxxxxxx> wrote:
> In the code I attached, in line 22, if I put > <xsl:apply-templates select = "/"> then a infinite loop will > occur. How does it come a loop? I couldn't understand.
apply-templates selects a node, in this case the root node, and looks for a template rule matching that node, typically the one that specifies match="/". If this template rule includes the instruction apply-templates select="/" then the same thing happens again, and again....
Also, > the result Excel/XML file have the output of "<Cell > xmlns="urn:schemas-microsoft-com:office:spreadsheet"><Data > ss:Type="String" > xmlns="urn:schemas-microsoft-com:office:spreadsheet">0</Data></Cell>", > I don't understand how come the cell element has the xmlns attribute? > How did this happen?
Your stylesheet has a default namespace xmlns="urn:schemas-microsoft-com:office:spreadsheet". So the <Cell> element in the stylesheet is really <{urn:schemas-microsoft-com:office:spreadsheet}Cell>, because an unprefixed element name is qualified by the default namespace. The effect of a literal result element like <Cell> is to create an element in the result document with the same name, that is <{urn:schemas-microsoft-com:office:spreadsheet}Cell>. But of course this isn't real XML syntax, so when it gets output as XML it becomes <Cell xmlns="urn:schemas-microsoft-com:office:spreadsheet">.
Remember that your stylesheet is responsible for creating elements in the right namespace; the serializer takes care of generating the namespace declarations to achieve this.
Michael Kay http://www.saxonica.com/
> > Below is the xslt code and xml source code. > > Thanks again for your help. > > Karen. > --------- > <?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> --> > <xsl:apply-templates/> > <!-- </Worksheet> --> > </Workbook> > </xsl:template> > > <!-- > <xsl:template match="/*/*"> > <Worksheet> > <xsl:attribute name="ss:Name"> > <xsl:value-of select="name(/*/*)"/> > </xsl:attribute> > <xsl:apply-templates/> > </Worksheet> > </xsl:template> > --> > <!--<xsl:template match="NoteDetail"> > test > <xsl:apply-templates/> > </xsl:template> > --> > > <xsl:template match="TAX_CASH_FLOW_ANALYSIS/TaxCashFlowUnit"> > <Table x:FullColumns="1" x:FullRows="1"> > <Row> > <xsl:for-each select="*[position() = 1]/*"> > <Cell><Data ss:Type="String"> > <xsl:value-of select="local-name()"/> > </Data></Cell> > </xsl:for-each> > </Row> > <xsl:apply-templates/> > </Table> > </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> > > -------------------- > xml source: > > <?xml version="1.0" encoding="utf-8"?> > <TAX_CASH_FLOW_ANALYSIS > UpdateDateTime="2006-06-13T11:26:09.0000000-04:00"> > <TaxCashFlowUnit> > <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>
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Convert XML to Excel usin, Michael Kay | Thread | Re: [xsl] Convert XML to Excel usin, CyberSpace Industrie |
Re: [xsl] <!DOCTYPE, David Carlisle | Date | Re: [xsl] <!DOCTYPE, Chad Chelius |
Month |