XSLT Transform for Gnucash XML file

Régis Leroy lapagearegis at free.fr
Fri Sep 5 21:08:31 CDT 2003


Personnaly I've been writing a quite big XSL file based on Zach Garner
one (zach at neurosoft.org) which had been published in this mailing list
long before. You can use it to obtain a gnumeric file witj multiple
sheets (diary, one sheet per account, accounts sheet).
It's, to my mind, a quite big piece of work and it can be useful for
others, so here it is. 
there's still some work to do on it, like prices for example. And maybe
an OpenOffice output...
Feel free to contribute, keep in touch on http://xslfactory.free.fr 

Matthew can I reuse your stylesheet on this site?


Le ven 05/09/2003 à 15:59, Derek Atkins a écrit :
> Matthew,
> 
> I just want to note that you've left out a large number of
> (business-feature) namespace definitions here.  I'll leave it
> as an exercise to enumerate the rest.
> 
> -derek
> 
> Matthew Vanecek <mevanecek at yahoo.com> writes:
> 
> > 
> > //----------------SECTION A BEGIN-------------------------
> > <gnc-v2 xmlns:cd="http://www.gnucash.org/XML/cd"
> >         xmlns:book="http://www.gnucash.org/XML/book"
> >         xmlns:gnc="http://www.gnucash.org/XML/gnc"
> >         xmlns:cmdty="http://www.gnucash.org/XML/cmdty"
> >         xmlns:trn="http://www.gnucash.org/XML/trn"
> >         xmlns:split="http://www.gnucash.org/XML/split"
> >         xmlns:act="http://www.gnucash.org/XML/act"
> >         xmlns:price="http://www.gnucash.org/XML/price"
> >         xmlns:ts="http://www.gnucash.org/XML/ts"
> >         xmlns:slot="http://www.gnucash.org/XML/kvpslot"
> >         xmlns:cust="http://www.gnucash.org/XML/cust"
> >         xmlns:addr="http://www.gnucash.org/XML/custaddr">
> > //----------------SECTION A END-------------------------
> > 
> > 
> > _______________________________________________
> > gnucash-devel mailing list
> > gnucash-devel at lists.gnucash.org
> > https://lists.gnucash.org/mailman/listinfo/gnucash-devel
> 
> -- 
>        Derek Atkins, SB '93 MIT EE, SM '95 MIT Media Laboratory
>        Member, MIT Student Information Processing Board  (SIPB)
>        URL: http://web.mit.edu/warlord/    PP-ASEL-IA     N1NWH
>        warlord at MIT.EDU                        PGP key available
> _______________________________________________
> gnucash-devel mailing list
> gnucash-devel at lists.gnucash.org
> https://lists.gnucash.org/mailman/listinfo/gnucash-devel

-------------- next part --------------
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xsl:stylesheet version="1.0"
xmlns:gnc="http://www.gnucash.org/lxr/gnucash/source/src/doc/xml/io-gncxml-version-2.dtd#gnc"
xmlns:cd="http://www.gnucash.org/lxr/gnucash/source/src/doc/xml/io-gncxml-version-2.dtd#cd"
xmlns:act="http://www.gnucash.org/lxr/gnucash/source/src/doc/xml/account-v2.dtdt#act"
xmlns:trn="http://www.gnucash.org/lxr/gnucash/source/src/doc/xml/transactions-v2.dtd#trn"
xmlns:split="http://www.gnucash.org/lxr/gnucash/source/src/doc/xml/transactions-v2.dtdt#split"
xmlns:cmdty="http://www.gnucash.org/lxr/gnucash/source/src/doc/xml/comodity-v2.dtd#cmdty"
xmlns:ts="http://www.gnucash.org/lxr/gnucash/source/src/doc/xml/types.dtd#ts"
xmlns:slots="http://www.gnucash.org/lxr/gnucash/source/src/doc/xml/types.dtd#slots"
xmlns:slot="http://www.gnucash.org/lxr/gnucash/source/src/doc/xml/types.dtd#slot"
xmlns:price="http://www.gnucash.org/lxr/gnucash/source/src/doc/xml/prices-v1.dtd#price"
xmlns:gmr="http://www.gnumeric.org/v10.dtd"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

<xsl:output method="xml" indent="yes" encoding="ISO-8859-1"/> 
<!--
  - GNUCASH_TO_GNUMERIC V0.4
  -
  - Copyright (c) 2002 Zach Garner (zach at neurosoft.org).  
  - 2003 Regis Leroy (lapagearegis at free.fr). All rights reserved.
  -
  - Redistribution and use in source and binary forms, with or without
  - modification, are permitted provided that the following conditions
  - are met:
  - 1. Redistributions of source code must retain the above copyright
  -    notice, this list of conditions and the following disclaimer.
  - 2. Redistributions in binary form must reproduce the above copyright
  -    notice, this list of conditions and the following disclaimer in the
  -    documentation and/or other materials provided with the distribution.
  - 3. All advertising materials mentioning features or use of this software
  -    must display the following acknowledgement:
  -      This product includes software developed by the University of
  -      California, Berkeley and its contributors.
  - 4. Neither the name of the University nor the names of its contributors
  -    may be used to endorse or promote products derived from this software
  -    without specific prior written permission.
  -
  - THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  - ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  - FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  - OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  - HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  - LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  - OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  - SUCH DAMAGE.
  -
  - CHANGELOG:
  - 2003-September-2 : Regis Leroy : release of version 0.5 :
  -    * changing namesaces to show real path to dtd
  -    * adding price namespace and removing the type one
  - 2003-August-20 : Regis Leroy : release of version 0.4 :
  -    * better handling of line numbers in account sheets
  -    * adding code number info on accounts and on account sheets names
  -    * adding some style in output
  - 2003-August-18 : Regis Leroy : release of version 0.3 :
  -    * handling sheets having the same name with numbers
  -    * adding one sheet by account containing his transactions
  -    * handling sheet index in gnumeric XML output
  -    * correcting number of lines for ACCOUNTS sheet
  -    * adding a DIARY sheet with all the transactions
  -    * adding all accounts's info on the account sheet
  -    * adding some gnucash's namespaces
  - 2002 : Zach Garner : release of version 0.2 : 
  -    * extraction of accounts from gnucash to gnumeric
  -    * understanding gnucash namespace bug
  -
  - TODO:
  - * handling the more than 65 564 lines in gnumeric sheets
  - * trying a OOo.org output
  - * adding max rows info for sheets (done for the ACCOUNTS sheet only)
  - * handling complete gnucash DTD (prices for example)
  - 
  - USAGE:
  - As far as we know gnucash XML files don't have a correct namespace
  - definition, you have to correct it before transforming the file.
  - replace <gnc-v2> in your XML gnucash file by theses lines:
<gnc-v2 xmlns:gnc="http://www.gnucash.org/lxr/gnucash/source/src/doc/xml/io-gncxml-version-2.dtd#gnc"
xmlns:cd="http://www.gnucash.org/lxr/gnucash/source/src/doc/xml/io-gncxml-version-2.dtd#cd"
xmlns:act="http://www.gnucash.org/lxr/gnucash/source/src/doc/xml/account-v2.dtdt#act"
xmlns:trn="http://www.gnucash.org/lxr/gnucash/source/src/doc/xml/transactions-v2.dtd#trn"
xmlns:split="http://www.gnucash.org/lxr/gnucash/source/src/doc/xml/transactions-v2.dtdt#split"
xmlns:cmdty="http://www.gnucash.org/lxr/gnucash/source/src/doc/xml/comodity-v2.dtd#cmdty"
xmlns:ts="http://www.gnucash.org/lxr/gnucash/source/src/doc/xml/types.dtd#ts"
xmlns:slots="http://www.gnucash.org/lxr/gnucash/source/src/doc/xml/types.dtd#slots"
xmlns:slot="http://www.gnucash.org/lxr/gnucash/source/src/doc/xml/types.dtd#slot"
xmlns:price="http://www.gnucash.org/lxr/gnucash/source/src/doc/xml/prices-v1.dtd#price">
  - Then you can use this stylesheet like that, for example:
   *  java org.apache.xalan.xslt.Process 
   *     -IN gnucashfile -xsl thisfile.xsl -OUT gnumericfile.gnumeric
 --> 

<!-- ################# KEYS  #################  -->

<xsl:key name="ACCOUNT_ID" match="gnc:account" use="act:id"/>
<xsl:key name="TRANSACTION_ACCOUNT_KEY" match="/gnc-v2/gnc:transaction/trn:splits/trn:split" use="split:account"/>

<!-- try to avoid strange names on sheets  -->
<xsl:strip-space elements="act:Name gmr:SheetName gmr:Name"/>

<!-- ################# ATTRIBUTE SETS  #################  -->
<xsl:attribute-set name="AccountSheetTransactionCell60">
    <xsl:attribute name="ValueType">60</xsl:attribute>
    <xsl:attribute name="Row"><xsl:value-of select="1+position()"/></xsl:attribute>    
</xsl:attribute-set>
<xsl:attribute-set name="AccountSheetTransactionCell">
    <xsl:attribute name="Row"><xsl:value-of select="1+position()"/></xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="AccountSheetCell">
    <xsl:attribute name="ValueType">60</xsl:attribute>
    <xsl:attribute name="Row">0</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="AccountCell">
    <xsl:attribute name="ValueType">60</xsl:attribute>
    <xsl:attribute name="Row"><xsl:number count="gnc:account" level="any"/></xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="TransactionCell60">
    <xsl:attribute name="ValueType">60</xsl:attribute>
    <xsl:attribute name="Row"><xsl:number count="gnc:transaction|trn:split" level="any"/></xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="TransactionCell">
    <xsl:attribute name="Row"><xsl:number count="gnc:transaction|trn:split" level="any"/></xsl:attribute>
</xsl:attribute-set>

<!-- ################# ROOT  #################  -->
<!-- make an xml sheet for gnumeric -->
<xsl:template match="/">
<xsl:message terminate="no">beginning in /</xsl:message>
<gmr:Workbook xmlns="http://www.gnumeric.org" xmlns:gmr="http://www.gnumeric.org/v10.dtd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://www.gnumeric.org/v8.xsd">
  <gmr:Attributes>
    <gmr:Attribute>
      <gmr:name>WorkbookView::show_horizontal_scrollbar</gmr:name>
      <gmr:type>4</gmr:type>
      <gmr:value>TRUE</gmr:value>
    </gmr:Attribute>
    <gmr:Attribute>
      <gmr:name>WorkbookView::show_vertical_scrollbar</gmr:name>
      <gmr:type>4</gmr:type>
      <gmr:value>TRUE</gmr:value>
    </gmr:Attribute>
    <gmr:Attribute>
      <gmr:name>WorkbookView::show_notebook_tabs</gmr:name>
      <gmr:type>4</gmr:type>
      <gmr:value>TRUE</gmr:value>
    </gmr:Attribute>
    <gmr:Attribute>
      <gmr:name>WorkbookView::do_auto_completion</gmr:name>
      <gmr:type>4</gmr:type>
      <gmr:value>TRUE</gmr:value>
    </gmr:Attribute>
  </gmr:Attributes>
  <gmr:Summary>
    <gmr:Item>
      <gmr:name>application</gmr:name>
      <gmr:val-string>gnumeric</gmr:val-string>
    </gmr:Item>
    <gmr:Item>
      <gmr:name>author</gmr:name>
      <gmr:val-string>gnucash_to_gnumeric.xsl</gmr:val-string>
    </gmr:Item>
  </gmr:Summary>
  <gmr:SheetNameIndex>
    <!-- 2 sheets we know **********************************************-->
    <gmr:SheetName>ACCOUNTS</gmr:SheetName>
    <gmr:SheetName>DIARY</gmr:SheetName>
    <!-- here are the other sheet, one for each account ****************-->

    <xsl:apply-templates mode="ACCOUNT_INDEX_MODE"/>

  </gmr:SheetNameIndex>
  <gmr:Names/>
  <gmr:Geometry Width="734" Height="426"/>

  <gmr:Sheets>

    <!--First sheet, the accounts sheet ***********************************-->
    <gmr:Sheet DisplayFormulas="false" HideZero="false" HideGrid="false" HideColHeader="false" HideRowHeader="false" DisplayOutlines="true" OutlineSymbolsBelow="true" OutlineSymbolsRight="true">
      <gmr:Name>ACCOUNTS</gmr:Name>
      <gmr:MaxCol>7</gmr:MaxCol>

      <xsl:apply-templates mode="MAX_ROW_MODE"/>       
      <xsl:element name="gmr:Maxrow"><xsl:value-of select="gnc:count-data[@cd:type='account']"/></xsl:element>

      <gmr:Zoom>1.000000</gmr:Zoom>
      <gmr:Names/>
      <gmr:PrintInformation>
        <gmr:Margins>
          <gmr:top Points="28" PrefUnit="cm"/>
          <gmr:bottom Points="28" PrefUnit="cm"/>
          <gmr:left Points="28" PrefUnit="cm"/>
          <gmr:right Points="28" PrefUnit="cm"/>
          <gmr:header Points="14" PrefUnit="cm"/>
          <gmr:footer Points="14" PrefUnit="cm"/>
        </gmr:Margins>
        <gmr:Scale type="percentage" percentage="100"/>
        <gmr:vcenter value="0"/>
        <gmr:hcenter value="0"/>
        <gmr:grid value="0"/>
        <gmr:even_if_only_styles value="0"/>
        <gmr:monochrome value="0"/>
        <gmr:draft value="0"/>
        <gmr:titles value="0"/>
        <gmr:repeat_top value=""/>
        <gmr:repeat_left value=""/>
        <gmr:order>r_then_d</gmr:order>
        <gmr:orientation>landscape</gmr:orientation>
        <gmr:Header Left="" Middle="&amp;[TAB]" Right=""/>
        <gmr:Footer Left="" Middle="Page &amp;[PAGE]" Right=""/>
        <gmr:paper>A4</gmr:paper>
      </gmr:PrintInformation>
      <gmr:Styles>
        <gmr:StyleRegion startCol="8" startRow="1" endCol="8" endRow="65535">
          <gmr:Style HAlign="1" VAlign="2" WrapText="1" Orient="1" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
            <gmr:Font Unit="9" Bold="0" Italic="0" Underline="0" StrikeThrough="0">Helvetica</gmr:Font>
            <gmr:StyleBorder>
              <gmr:Top Style="1" Color="0:0:0"/>
              <gmr:Bottom Style="0"/>
              <gmr:Left Style="1" Color="0:0:0"/>
              <gmr:Right Style="0"/>
              <gmr:Diagonal Style="0"/>
              <gmr:Rev-Diagonal Style="0"/>
            </gmr:StyleBorder>
          </gmr:Style>
        </gmr:StyleRegion>
        <gmr:StyleRegion startCol="8" startRow="0" endCol="8" endRow="0">
          <gmr:Style HAlign="1" VAlign="2" WrapText="1" Orient="1" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
            <gmr:Font Unit="9" Bold="1" Italic="1" Underline="0" StrikeThrough="0">Helvetica</gmr:Font>
            <gmr:StyleBorder>
              <gmr:Top Style="1" Color="0:0:0"/>
              <gmr:Bottom Style="0"/>
              <gmr:Left Style="1" Color="0:0:0"/>
              <gmr:Right Style="0"/>
              <gmr:Diagonal Style="0"/>
              <gmr:Rev-Diagonal Style="0"/>
            </gmr:StyleBorder>
          </gmr:Style>
        </gmr:StyleRegion>
        <gmr:StyleRegion startCol="0" startRow="0" endCol="7" endRow="0">
          <gmr:Style HAlign="1" VAlign="2" WrapText="0" Orient="1" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
            <gmr:Font Unit="9" Bold="1" Italic="1" Underline="0" StrikeThrough="0">Helvetica</gmr:Font>
            <gmr:StyleBorder>
              <gmr:Top Style="1" Color="0:0:0"/>
              <gmr:Bottom Style="0"/>
              <gmr:Left Style="1" Color="0:0:0"/>
              <gmr:Right Style="0"/>
              <gmr:Diagonal Style="0"/>
              <gmr:Rev-Diagonal Style="0"/>
            </gmr:StyleBorder>
          </gmr:Style>
        </gmr:StyleRegion>
        <gmr:StyleRegion startCol="0" startRow="1" endCol="7" endRow="65535">
          <gmr:Style HAlign="1" VAlign="2" WrapText="0" Orient="1" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
            <gmr:Font Unit="9" Bold="0" Italic="0" Underline="0" StrikeThrough="0">Helvetica</gmr:Font>
            <gmr:StyleBorder>
              <gmr:Top Style="1" Color="0:0:0"/>
              <gmr:Bottom Style="0"/>
              <gmr:Left Style="1" Color="0:0:0"/>
              <gmr:Right Style="0"/>
              <gmr:Diagonal Style="0"/>
              <gmr:Rev-Diagonal Style="0"/>
            </gmr:StyleBorder>
          </gmr:Style>
        </gmr:StyleRegion>
        <gmr:StyleRegion startCol="9" startRow="0" endCol="255" endRow="65535">
          <gmr:Style HAlign="1" VAlign="2" WrapText="0" Orient="1" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
            <gmr:Font Unit="9" Bold="0" Italic="0" Underline="0" StrikeThrough="0">Helvetica</gmr:Font>
            <gmr:StyleBorder>
              <gmr:Top Style="0"/>
              <gmr:Bottom Style="0"/>
              <gmr:Left Style="0"/>
              <gmr:Right Style="0"/>
              <gmr:Diagonal Style="0"/>
              <gmr:Rev-Diagonal Style="0"/>
            </gmr:StyleBorder>
          </gmr:Style>      
       </gmr:StyleRegion>
      </gmr:Styles>
      <gmr:Cols DefaultSizePts="48">
        <gmr:ColInfo No="0" Unit="48" MarginA="2" MarginB="2" Count="2"/>
      </gmr:Cols>
      <gmr:Rows DefaultSizePts="12.8">
        <gmr:RowInfo No="0" Unit="12.8" MarginA="1" MarginB="0"/>
        <gmr:RowInfo No="1" Unit="12.8" MarginA="0" MarginB="0" Count="7"/>
      </gmr:Rows>
      <gmr:Selections CursorCol="0" CursorRow="1">
        <gmr:Selection startCol="0" startRow="1" endCol="0" endRow="1"/>
      </gmr:Selections>
      <gmr:Cells>

          <xsl:apply-templates mode="ACCOUNT_MODE"/>

      </gmr:Cells>
      <gmr:SheetLayout TopLeft="A1"/>
      <gmr:Solver TargetCol="-1" TargetRow="-1" ProblemType="1" Inputs=""/>
    </gmr:Sheet>

    <!--Second sheet, the Diary sheet **************************************-->
    <gmr:Sheet DisplayFormulas="false" HideZero="false" HideGrid="false" HideColHeader="false" HideRowHeader="false" DisplayOutlines="true" OutlineSymbolsBelow="true" OutlineSymbolsRight="true">
      <gmr:Name>DIARY</gmr:Name>
      <gmr:MaxCol>0</gmr:MaxCol>
      <gmr:MaxRow>0</gmr:MaxRow>
      <gmr:Zoom>1.000000</gmr:Zoom>
      <gmr:Names/>
      <gmr:PrintInformation>
        <gmr:Margins>
          <gmr:top Points="28" PrefUnit="cm"/>
          <gmr:bottom Points="28" PrefUnit="cm"/>
          <gmr:left Points="28" PrefUnit="cm"/>
          <gmr:right Points="28" PrefUnit="cm"/>
          <gmr:header Points="14" PrefUnit="cm"/>
          <gmr:footer Points="14" PrefUnit="cm"/>
        </gmr:Margins>
        <gmr:Scale type="percentage" percentage="100"/>
        <gmr:vcenter value="0"/>
        <gmr:hcenter value="0"/>
        <gmr:grid value="0"/>
        <gmr:even_if_only_styles value="0"/>
        <gmr:monochrome value="0"/>
        <gmr:draft value="0"/>
        <gmr:titles value="0"/>
        <gmr:repeat_top value=""/>
        <gmr:repeat_left value=""/>
        <gmr:order>r_then_d</gmr:order>
        <gmr:orientation>landscape</gmr:orientation>
        <gmr:Header Left="" Middle="&amp;[TAB]" Right=""/>
        <gmr:Footer Left="" Middle="Page &amp;[PAGE]" Right=""/>
        <gmr:paper>A4</gmr:paper>
      </gmr:PrintInformation>
      <gmr:Styles>
        <gmr:StyleRegion startCol="0" startRow="0" endCol="8" endRow="0">
          <gmr:Style HAlign="1" VAlign="2" WrapText="0" Orient="1" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
            <gmr:Font Unit="9" Bold="1" Italic="1" Underline="0" StrikeThrough="0">Helvetica</gmr:Font>
            <gmr:StyleBorder>
              <gmr:Top Style="1" Color="0:0:0"/>
              <gmr:Bottom Style="0"/>
              <gmr:Left Style="1" Color="0:0:0"/>
              <gmr:Right Style="0"/>
              <gmr:Diagonal Style="0"/>
              <gmr:Rev-Diagonal Style="0"/>
            </gmr:StyleBorder>
          </gmr:Style>
        </gmr:StyleRegion>
        <gmr:StyleRegion startCol="0" startRow="1" endCol="8" endRow="65535">
          <gmr:Style HAlign="1" VAlign="2" WrapText="0" Orient="1" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
            <gmr:Font Unit="9" Bold="0" Italic="0" Underline="0" StrikeThrough="0">Helvetica</gmr:Font>
            <gmr:StyleBorder>
              <gmr:Top Style="1" Color="0:0:0"/>
              <gmr:Bottom Style="0"/>
              <gmr:Left Style="1" Color="0:0:0"/>
              <gmr:Right Style="0"/>
              <gmr:Diagonal Style="0"/>
              <gmr:Rev-Diagonal Style="0"/>
            </gmr:StyleBorder>
          </gmr:Style>
        </gmr:StyleRegion> 
        <gmr:StyleRegion startCol="9" startRow="0" endCol="255" endRow="65535">
          <gmr:Style HAlign="1" VAlign="2" WrapText="0" Orient="1" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
            <gmr:Font Unit="9" Bold="0" Italic="0" Underline="0" StrikeThrough="0">Helvetica</gmr:Font>
            <gmr:StyleBorder>
              <gmr:Top Style="0"/>
              <gmr:Bottom Style="0"/>
              <gmr:Left Style="0"/>
              <gmr:Right Style="0"/>
              <gmr:Diagonal Style="0"/>
              <gmr:Rev-Diagonal Style="0"/>
            </gmr:StyleBorder>
          </gmr:Style>
        </gmr:StyleRegion>
      </gmr:Styles>
      <gmr:Cols DefaultSizePts="48">
        <gmr:ColInfo No="0" Unit="82.5" MarginA="2" MarginB="2" HardSize="1"/>
      </gmr:Cols>
      <gmr:Rows DefaultSizePts="12.8">
        <gmr:RowInfo No="0" Unit="12.8" MarginA="1" MarginB="0"/>
      </gmr:Rows>
      <gmr:Selections CursorCol="0" CursorRow="1">
        <gmr:Selection startCol="0" startRow="1" endCol="0" endRow="1"/>
      </gmr:Selections>
      <gmr:Cells>

        <xsl:apply-templates mode="DIARY_MODE"/>

      </gmr:Cells>
      <gmr:SheetLayout TopLeft="A1"/>
      <gmr:Solver TargetCol="-1" TargetRow="-1" ProblemType="1" Inputs=""/>
    </gmr:Sheet>
    
    <!--All the other sheets, accounts sheets ****************************-->
    <xsl:apply-templates mode="ACCOUNT_SHEET_MODE"/>

  </gmr:Sheets>
  <gmr:UIData SelectedTab="1"/>
</gmr:Workbook>
</xsl:template> 
<!-- End of the gnumeric xml doc, now starting xsl stuff-->

<!-- ################# ACCOUNT SHEET MODE ################  --> 

<xsl:template match="gnc-v2" mode="ACCOUNT_SHEET_MODE">
    <xsl:message terminate="no">gnc-v2 - ACCOUNT SHEET</xsl:message>
    <xsl:apply-templates mode="ACCOUNT_SHEET_MODE"/>
</xsl:template>

<xsl:template match="gnc:account" mode="ACCOUNT_SHEET_MODE">
    <xsl:message terminate="no">gnc:account - ACCOUNT_SHEET <xsl:value-of select="act:name"/></xsl:message>
<gmr:Sheet DisplayFormulas="false" HideZero="false" HideGrid="false" HideColHeader="false" HideRowHeader="false" DisplayOutlines="true" OutlineSymbolsBelow="true" OutlineSymbolsRight="true">
    <xsl:element name="gmr:Name">
                <xsl:number count="gnc:account" level="any"/>_<xsl:value-of select="act:code"/>_<xsl:value-of select="act:name"/>
    </xsl:element>
      <gmr:MaxCol>0</gmr:MaxCol>
      <gmr:MaxRow>0</gmr:MaxRow>
      <gmr:Zoom>1.000000</gmr:Zoom>
      <gmr:Names/>
      <gmr:PrintInformation>
        <gmr:Margins>
          <gmr:top Points="28" PrefUnit="cm"/>
          <gmr:bottom Points="28" PrefUnit="cm"/>
          <gmr:left Points="28" PrefUnit="cm"/>
          <gmr:right Points="28" PrefUnit="cm"/>
          <gmr:header Points="14" PrefUnit="cm"/>
          <gmr:footer Points="14" PrefUnit="cm"/>
        </gmr:Margins>
        <gmr:Scale type="percentage" percentage="100"/>
        <gmr:vcenter value="0"/>
        <gmr:hcenter value="0"/>
        <gmr:grid value="0"/>
        <gmr:even_if_only_styles value="0"/>
        <gmr:monochrome value="0"/>
        <gmr:draft value="0"/>
        <gmr:titles value="0"/>
        <gmr:repeat_top value=""/>
        <gmr:repeat_left value=""/>
        <gmr:order>r_then_d</gmr:order>
        <gmr:orientation>landscape</gmr:orientation>
        <gmr:Header Left="" Middle="&amp;[TAB]" Right=""/>
        <gmr:Footer Left="" Middle="Page &amp;[PAGE]" Right=""/>
        <gmr:paper>A4</gmr:paper>
      </gmr:PrintInformation>
      <gmr:Styles>
        <gmr:StyleRegion startCol="0" startRow="0" endCol="5" endRow="0">
          <gmr:Style HAlign="1" VAlign="2" WrapText="0" Orient="1" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
            <gmr:Font Unit="9" Bold="1" Italic="1" Underline="0" StrikeThrough="0">Helvetica</gmr:Font>
            <gmr:StyleBorder>
              <gmr:Top Style="1" Color="0:0:0"/>
              <gmr:Bottom Style="0"/>
              <gmr:Left Style="1" Color="0:0:0"/>
              <gmr:Right Style="0"/>
              <gmr:Diagonal Style="0"/>
              <gmr:Rev-Diagonal Style="0"/>
            </gmr:StyleBorder>
          </gmr:Style>
        </gmr:StyleRegion>
        <gmr:StyleRegion startCol="6" startRow="0" endCol="255" endRow="65535">
          <gmr:Style HAlign="1" VAlign="2" WrapText="0" Orient="1" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
            <gmr:Font Unit="9" Bold="0" Italic="0" Underline="0" StrikeThrough="0">Helvetica</gmr:Font>
            <gmr:StyleBorder>
              <gmr:Top Style="0"/>
              <gmr:Bottom Style="0"/>
              <gmr:Left Style="0"/>
              <gmr:Right Style="0"/>
              <gmr:Diagonal Style="0"/>
              <gmr:Rev-Diagonal Style="0"/>
            </gmr:StyleBorder>
          </gmr:Style>
        </gmr:StyleRegion>
        <gmr:StyleRegion startCol="0" startRow="1" endCol="7" endRow="1">
          <gmr:Style HAlign="1" VAlign="2" WrapText="0" Orient="1" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
            <gmr:Font Unit="9" Bold="1" Italic="1" Underline="0" StrikeThrough="0">Helvetica</gmr:Font>
            <gmr:StyleBorder>
              <gmr:Top Style="1" Color="0:0:0"/>
              <gmr:Bottom Style="0"/>
              <gmr:Left Style="1" Color="0:0:0"/>
              <gmr:Right Style="0"/>
              <gmr:Diagonal Style="0"/>
              <gmr:Rev-Diagonal Style="0"/>
            </gmr:StyleBorder>
          </gmr:Style>
        </gmr:StyleRegion>
        <gmr:StyleRegion startCol="8" startRow="1" endCol="255" endRow="1">
          <gmr:Style HAlign="1" VAlign="2" WrapText="0" Orient="1" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
            <gmr:Font Unit="9" Bold="0" Italic="0" Underline="0" StrikeThrough="0">Helvetica</gmr:Font>
            <gmr:StyleBorder>
              <gmr:Top Style="0"/>
              <gmr:Bottom Style="0"/>
              <gmr:Left Style="0"/>
              <gmr:Right Style="0"/>
              <gmr:Diagonal Style="0"/>
              <gmr:Rev-Diagonal Style="0"/>
            </gmr:StyleBorder>
          </gmr:Style>
        </gmr:StyleRegion>
        <gmr:StyleRegion startCol="0" startRow="2" endCol="7" endRow="65535">
          <gmr:Style HAlign="1" VAlign="2" WrapText="0" Orient="1" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
            <gmr:Font Unit="9" Bold="0" Italic="0" Underline="0" StrikeThrough="0">Helvetica</gmr:Font>
            <gmr:StyleBorder>
              <gmr:Top Style="1" Color="0:0:0"/>
              <gmr:Bottom Style="0"/>
              <gmr:Left Style="1" Color="0:0:0"/>
              <gmr:Right Style="0"/>
              <gmr:Diagonal Style="0"/>
              <gmr:Rev-Diagonal Style="0"/>
            </gmr:StyleBorder>
          </gmr:Style>
        </gmr:StyleRegion>
        <gmr:StyleRegion startCol="8" startRow="2" endCol="255" endRow="65535">
          <gmr:Style HAlign="1" VAlign="2" WrapText="0" Orient="1" Shade="0" Indent="0" Locked="1" Hidden="0" Fore="0:0:0" Back="FFFF:FFFF:FFFF" PatternColor="0:0:0" Format="General">
            <gmr:Font Unit="9" Bold="0" Italic="0" Underline="0" StrikeThrough="0">Helvetica</gmr:Font>
            <gmr:StyleBorder>
              <gmr:Top Style="0"/>
              <gmr:Bottom Style="0"/>
              <gmr:Left Style="0"/>
              <gmr:Right Style="0"/>
              <gmr:Diagonal Style="0"/>
              <gmr:Rev-Diagonal Style="0"/>
            </gmr:StyleBorder>
          </gmr:Style>
        </gmr:StyleRegion>
      </gmr:Styles>
      <gmr:Cols DefaultSizePts="48">
        <gmr:ColInfo No="0" Unit="82.5" MarginA="2" MarginB="2" HardSize="1"/>
      </gmr:Cols>
      <gmr:Rows DefaultSizePts="12.8">
        <gmr:RowInfo No="0" Unit="12.8" MarginA="1" MarginB="0"/>
      </gmr:Rows>
      <gmr:Selections CursorCol="0" CursorRow="1">
        <gmr:Selection startCol="0" startRow="1" endCol="0" endRow="1"/>
      </gmr:Selections>
      <gmr:Cells>
        <xsl:element name="gmr:Cell" use-attribute-sets="AccountSheetCell">
	        <xsl:attribute name="Col">0</xsl:attribute>name: <xsl:value-of select="act:name"/></xsl:element>
        <xsl:element name="gmr:Cell" use-attribute-sets="AccountSheetCell">
	        <xsl:attribute name="Col">1</xsl:attribute>type: <xsl:value-of select="act:type"/></xsl:element>
        <xsl:element name="gmr:Cell" use-attribute-sets="AccountSheetCell">
	        <xsl:attribute name="Col">2</xsl:attribute>description: <xsl:value-of select="act:description"/></xsl:element>
        <xsl:element name="gmr:Cell" use-attribute-sets="AccountSheetCell">
	        <xsl:attribute name="Col">3</xsl:attribute>parent name: <xsl:value-of select="key('ACCOUNT_ID',act:parent)/act:name"/></xsl:element>
        <xsl:element name="gmr:Cell" use-attribute-sets="AccountSheetCell">
	        <xsl:attribute name="Col">4</xsl:attribute>cmdty id: <xsl:value-of select="act:currency/cmdty:id"/></xsl:element>
        <xsl:element name="gmr:Cell" use-attribute-sets="AccountSheetCell">
	        <xsl:attribute name="Col">5</xsl:attribute>currency-scu: <xsl:value-of select="act:currency-scu"/></xsl:element>
        <xsl:element name="gmr:Cell">
	    <xsl:attribute name="Col">0</xsl:attribute><xsl:attribute name="Row">1</xsl:attribute>transaction Id</xsl:element>
        <xsl:element name="gmr:Cell">
	    <xsl:attribute name="Col">1</xsl:attribute><xsl:attribute name="Row">1</xsl:attribute>Date Posted</xsl:element>
        <xsl:element name="gmr:Cell">
	    <xsl:attribute name="Col">2</xsl:attribute><xsl:attribute name="Row">1</xsl:attribute>Date Entered</xsl:element>
        <xsl:element name="gmr:Cell">
	    <xsl:attribute name="Col">3</xsl:attribute><xsl:attribute name="Row">1</xsl:attribute>Description</xsl:element>
        <xsl:element name="gmr:Cell">
	    <xsl:attribute name="Col">4</xsl:attribute><xsl:attribute name="Row">1</xsl:attribute>Value</xsl:element>
        <xsl:element name="gmr:Cell">
	    <xsl:attribute name="Col">5</xsl:attribute><xsl:attribute name="Row">1</xsl:attribute>Quantity</xsl:element>
        <xsl:element name="gmr:Cell">
	    <xsl:attribute name="Col">6</xsl:attribute><xsl:attribute name="Row">1</xsl:attribute>Reconciled State</xsl:element>
        <xsl:element name="gmr:Cell">
	    <xsl:attribute name="Col">7</xsl:attribute><xsl:attribute name="Row">1</xsl:attribute>Reconciled Date</xsl:element>
        <xsl:variable name="mytransaclist" select="key('TRANSACTION_ACCOUNT_KEY',act:id)"/>
        <xsl:for-each select="$mytransaclist">
            <xsl:sort select="substring(../../trn:date-posted/ts:date,1,19)"/>
            <xsl:element name="gmr:Cell" use-attribute-sets="AccountSheetTransactionCell60">
                <xsl:attribute name="Col">0</xsl:attribute><xsl:value-of select="../../trn:id"/></xsl:element>
            <xsl:element name="gmr:Cell" use-attribute-sets="AccountSheetTransactionCell60">
	        <xsl:attribute name="Col">1</xsl:attribute><xsl:value-of select="substring(../../trn:date-posted/ts:date,1,19)"/></xsl:element>
            <xsl:element name="gmr:Cell" use-attribute-sets="AccountSheetTransactionCell60">
	        <xsl:attribute name="Col">2</xsl:attribute><xsl:value-of select="substring(../../trn:date-entered/ts:date,1,19)"/></xsl:element>
            <xsl:element name="gmr:Cell" use-attribute-sets="AccountSheetTransactionCell60">
	        <xsl:attribute name="Col">3</xsl:attribute><xsl:value-of select="../../trn:description"/></xsl:element>
            <xsl:element name="gmr:Cell" use-attribute-sets="AccountSheetTransactionCell">
	        <xsl:attribute name="Col">4</xsl:attribute>=<xsl:value-of select="split:value"/></xsl:element>
            <xsl:element name="gmr:Cell" use-attribute-sets="AccountSheetTransactionCell">
	        <xsl:attribute name="Col">5</xsl:attribute>=<xsl:value-of select="split:quantity"/></xsl:element>
    	    <xsl:element name="gmr:Cell" use-attribute-sets="AccountSheetTransactionCell60">
	        <xsl:attribute name="Col">6</xsl:attribute><xsl:value-of select="split:reconciled-state"/></xsl:element>
    	    <xsl:element name="gmr:Cell" use-attribute-sets="AccountSheetTransactionCell60">
	        <xsl:attribute name="Col">7</xsl:attribute><xsl:value-of select="substring(split:reconcile-date/ts:date,1,19)"/></xsl:element>
        </xsl:for-each>
      </gmr:Cells>
      <gmr:SheetLayout TopLeft="A1"/>
      <gmr:Solver TargetCol="-1" TargetRow="-1" ProblemType="1" Inputs=""/>
    </gmr:Sheet>
</xsl:template>

<xsl:template match="gnc:count-data" mode="ACCOUNT_SHEET_MODE"></xsl:template>
<xsl:template match="gnc:transaction" mode="ACCOUNT_SHEET_MODE"></xsl:template>

<!-- ################# MAX ROW MODE ############  -->
<xsl:template match="//gnc-v2/gnc:account" mode="MAX_ROW_MODE"></xsl:template>

<xsl:template match="gnc:count-data[@cd:type='account']" mode="MAX_ROW_MODE">
<xsl:element name="gmr:Maxrow">
<xsl:value-of select="gnc:count-data"/>
    <xsl:apply-templates mode="ACCOUNT_MODE"/>
</xsl:element></xsl:template>
<xsl:template match="gnc:count-data[@cd:type='transaction']" mode="MAX_ROW_MODE"></xsl:template>
<xsl:template match="gnc:transaction" mode="MAX_ROW_MODE"></xsl:template>


<!-- ################# ACCOUNT INDEX MODE ############  -->
<xsl:template match="//gnc-v2/gnc:account" mode="ACCOUNT_INDEX_MODE"><xsl:message terminate="no">gnc:account - ACCOUNT_SHEET_INDEX <xsl:value-of select="act:name"/></xsl:message>
    <xsl:element name="gmr:SheetName"><xsl:number count="gnc:account" level="any"/>_<xsl:value-of select="act:code"/>_<xsl:value-of select="act:name"/></xsl:element>
</xsl:template>
<xsl:template match="gnc:count-data" mode="ACCOUNT_INDEX_MODE"></xsl:template>
<xsl:template match="gnc:transaction" mode="ACCOUNT_INDEX_MODE"></xsl:template>


<!-- ################# ACCOUNT MODE #################  -->

<xsl:template match="gnc-v2" mode="ACCOUNT_MODE">
    <xsl:message terminate="no">gnc-v2 - ACCOUNT</xsl:message>
    <gmr:Cell xmlns:gmr="http://www.gnumeric.org/v10.dtd" Row="0" Col="0" ValueType="60">Id</gmr:Cell>
    <gmr:Cell xmlns:gmr="http://www.gnumeric.org/v10.dtd" Row="0" Col="1" ValueType="60">Code</gmr:Cell>
    <gmr:Cell xmlns:gmr="http://www.gnumeric.org/v10.dtd" Row="0" Col="2" ValueType="60">Type</gmr:Cell>
    <gmr:Cell xmlns:gmr="http://www.gnumeric.org/v10.dtd" Row="0" Col="3" ValueType="60">Name</gmr:Cell>
    <gmr:Cell xmlns:gmr="http://www.gnumeric.org/v10.dtd" Row="0" Col="4" ValueType="60">Description</gmr:Cell>
    <gmr:Cell xmlns:gmr="http://www.gnumeric.org/v10.dtd" Row="0" Col="5" ValueType="60">Parent</gmr:Cell>
    <gmr:Cell xmlns:gmr="http://www.gnumeric.org/v10.dtd" Row="0" Col="6" ValueType="60">Currency Id</gmr:Cell>
    <gmr:Cell xmlns:gmr="http://www.gnumeric.org/v10.dtd" Row="0" Col="7" ValueType="60">Currency-Scu</gmr:Cell>
    <gmr:Cell xmlns:gmr="http://www.gnumeric.org/v10.dtd" Row="0" Col="8" ValueType="60">Others</gmr:Cell>
    <xsl:apply-templates mode="ACCOUNT_MODE"/>
</xsl:template>

<xsl:template match="gnc:count-data[@cd:type='transaction']" mode="ACCOUNT_MODE"></xsl:template>
<xsl:template match="gnc:count-data[@cd:type='account']" mode="ACCOUNT_MODE">
    <xsl:message terminate="no">gnc:count-data - ACCOUNT</xsl:message>
</xsl:template>

<xsl:template match="gnc:account" mode="ACCOUNT_MODE">
        <xsl:message terminate="no">gnc:account - ACCOUNT <xsl:value-of select="act:name"/></xsl:message>
        <xsl:element name="gmr:Cell" use-attribute-sets="AccountCell">
	        <xsl:attribute name="Col">0</xsl:attribute><xsl:value-of select="act:id"/>
        </xsl:element>
        <xsl:element name="gmr:Cell" use-attribute-sets="AccountCell">
	        <xsl:attribute name="Col">1</xsl:attribute><xsl:value-of select="act:code"/>
        </xsl:element>
        <xsl:element name="gmr:Cell" use-attribute-sets="AccountCell">
	        <xsl:attribute name="Col">2</xsl:attribute><xsl:value-of select="act:type"/>
        </xsl:element>
        <xsl:element name="gmr:Cell" use-attribute-sets="AccountCell">
	        <xsl:attribute name="Col">3</xsl:attribute><xsl:value-of select="act:name"/>
        </xsl:element>
        <xsl:element name="gmr:Cell" use-attribute-sets="AccountCell">
	        <xsl:attribute name="Col">4</xsl:attribute><xsl:value-of select="act:description"/>
        </xsl:element>
        <xsl:element name="gmr:Cell" use-attribute-sets="AccountCell">
	        <xsl:attribute name="Col">5</xsl:attribute><xsl:value-of select="key('ACCOUNT_ID',act:parent)/act:name"/>
        </xsl:element>
        <xsl:element name="gmr:Cell" use-attribute-sets="AccountCell">
	        <xsl:attribute name="Col">6</xsl:attribute><xsl:value-of select="act:currency/cmdty:space"/>-<xsl:value-of select="act:currency/cmdty:id"/>
        </xsl:element>
        <xsl:element name="gmr:Cell" use-attribute-sets="AccountCell">
	        <xsl:attribute name="Col">7</xsl:attribute><xsl:value-of select="act:currency-scu"/>
        </xsl:element>
	<xsl:element name="gmr:Cell" use-attribute-sets="AccountCell">
            <xsl:attribute name="Col">8</xsl:attribute>
            <xsl:for-each select="act:slots/slot">
	        <xsl:value-of select="slot:key"/>::<xsl:value-of select="slot:value"/>|
            </xsl:for-each>
	</xsl:element>
</xsl:template> 

<xsl:template match="gnc:transaction" mode="ACCOUNT_MODE"></xsl:template>

<!-- ################## MODE DIARY ################     -->

<xsl:template match="gnc-v2" mode="DIARY_MODE">
    <xsl:message terminate="no">gnc-v2 - DIARY</xsl:message>
    <gmr:Cell xmlns:gmr="http://www.gnumeric.org/v10.dtd" Row="0" Col="0" ValueType="60">Transaction Id</gmr:Cell>
    <gmr:Cell xmlns:gmr="http://www.gnumeric.org/v10.dtd" Row="0" Col="1" ValueType="60">Date Posted</gmr:Cell>
    <gmr:Cell xmlns:gmr="http://www.gnumeric.org/v10.dtd" Row="0" Col="2" ValueType="60">Date Entered</gmr:Cell>
    <gmr:Cell xmlns:gmr="http://www.gnumeric.org/v10.dtd" Row="0" Col="3" ValueType="60">Description</gmr:Cell>
    <gmr:Cell xmlns:gmr="http://www.gnumeric.org/v10.dtd" Row="0" Col="4" ValueType="60">Valeur</gmr:Cell>
    <gmr:Cell xmlns:gmr="http://www.gnumeric.org/v10.dtd" Row="0" Col="5" ValueType="60">Quantity</gmr:Cell>
    <gmr:Cell xmlns:gmr="http://www.gnumeric.org/v10.dtd" Row="0" Col="6" ValueType="60">Account</gmr:Cell>
    <gmr:Cell xmlns:gmr="http://www.gnumeric.org/v10.dtd" Row="0" Col="7" ValueType="60">Reconciled State</gmr:Cell>
    <gmr:Cell xmlns:gmr="http://www.gnumeric.org/v10.dtd" Row="0" Col="8" ValueType="60">Reconciled Date</gmr:Cell>
    <xsl:apply-templates mode="DIARY_MODE"/>
</xsl:template>

<xsl:template match="gnc:count-data[@cd:type='account']" mode="DIARY_MODE"></xsl:template>
<xsl:template match="gnc:count-data[@cd:type='transaction']" mode="DIARY_MODE">
    <xsl:message terminate="no">gnc:count-data - DIARY</xsl:message>
</xsl:template>

<xsl:template match="gnc:account" mode="DIARY_MODE"></xsl:template>
<xsl:template match="gnc:transaction" mode="DIARY_MODE">
    <xsl:message terminate="no">gnc:transaction - DIARY <xsl:number level="any"/></xsl:message>
    <xsl:element name="gmr:Cell" use-attribute-sets="TransactionCell60">
	    <xsl:attribute name="Col">0</xsl:attribute><xsl:value-of select="trn:id"/>
    </xsl:element>
    <xsl:element name="gmr:Cell" use-attribute-sets="TransactionCell60">
	    <xsl:attribute name="Col">1</xsl:attribute><xsl:value-of select="substring(trn:date-posted/ts:date,1,19)"/>
    </xsl:element>
    <xsl:element name="gmr:Cell" use-attribute-sets="TransactionCell60">
	    <xsl:attribute name="Col">2</xsl:attribute><xsl:value-of select="substring(trn:date-entered/ts:date,1,19)"/>
    </xsl:element>
    <xsl:element name="gmr:Cell" use-attribute-sets="TransactionCell60">
	    <xsl:attribute name="Col">3</xsl:attribute><xsl:value-of select="trn:description"/>
    </xsl:element>	
    <xsl:for-each select="trn:splits/trn:split">
	<xsl:element name="gmr:Cell" use-attribute-sets="TransactionCell">
	        <xsl:attribute name="Col">4</xsl:attribute>=<xsl:value-of select="split:value"/>
        </xsl:element>
        <xsl:element name="gmr:Cell" use-attribute-sets="TransactionCell">
	        <xsl:attribute name="Col">5</xsl:attribute>=<xsl:value-of select="split:quantity"/>
        </xsl:element>
    	<xsl:element name="gmr:Cell" use-attribute-sets="TransactionCell60">
	        <xsl:attribute name="Col">6</xsl:attribute><xsl:value-of select="key('ACCOUNT_ID',split:account)/act:name"/>
        </xsl:element>
    	<xsl:element name="gmr:Cell" use-attribute-sets="TransactionCell60">
	        <xsl:attribute name="Col">7</xsl:attribute><xsl:value-of select="split:reconciled-state"/>
        </xsl:element>
    	<xsl:element name="gmr:Cell" use-attribute-sets="TransactionCell60">
	        <xsl:attribute name="Col">8</xsl:attribute><xsl:value-of select="substring(split:reconcile-date/ts:date,1,19)"/>
        </xsl:element>
    </xsl:for-each>
</xsl:template> 

</xsl:stylesheet>


More information about the gnucash-devel mailing list