Subject: [xsl] FW: Xslt that worked for fop0.20.2 no longer works at later versions From: "Hesselberth, Jan" <Jan.Hesselberth@xxxxxxxxxxxxxxxxxx> Date: Thu, 24 Apr 2008 10:36:43 +0100 |
______________________________________________ From: Hesselberth, Jan Sent: 24 April 2008 10:35 To: 'xsl-list@xxxxxxxxxxxxxxxxxxxxxx' Subject: Xslt that worked for fop0.20.2 no longer works at later versions Sorry, It's difficult being unable to send attachments. I have been using fop 0.20.2 to produce pdf documents from xml using xsl. The batch file for the process runs java -Xms32m -Xmx256m -cp d:\fop-0.20.2\build\fop.jar;d:\fop-0.20.2\lib\batik.jar;d:\fop-0.20.2\li b\xalan-2.0.0.jar;d:\fop-0.20.2\lib\xerces-1.2.3.jar;d:\fop-0.20.2\lib\a valon-framework-4.0.jar;d:\fop-0.20.2\lib\logkit-1.0b4.jar;d:\fop-0.20.2 \lib\jimi-1.0.jar org.apache.fop.apps.Fop %1 %2 %3 %4 %5 %6 %7 %8 I am trying to upgrade to a later version of fop such as fop-0.94 and I am getting different results in the pdf. This is due to the generated .fo being different. The original document looked something like this but it's lost all it's formatting in copying. From: AA029 To: AA027 7777Y-04750 1 -22,221.15 -22,221.15 -68.78 Total -22,221.15 -22,221.15 -68.78 8888D-04238 1 -74,144.82 -74,144.82 -229.48 Total -73,033.52 -74,144.82 -229.48 9999F-04086 1 -36,469.80 -36,469.80 0.00 Account element not up to date Total -36,469.80 -36,469.80 0.00 9999K-02810 1 -64,926.50 -64,926.50 -177.83 Total -64,926.50 -64,926.50 -177.83 . . . Total Movement Acct: 6 -211,843.08 -212,954.38 -579.70 When I run under fop-0.94 using these jars the output is heading and one record set per page. fop.jar fop-sandbox.jar build\fop-hyph.jar xml-apis-1.3.02.jar xercesImpl-2.7.1.jar xalan-2.7.0.jar serializer-2.7.0.jar batik-all-1.6.jar xmlgraphics-commons-1.2.jar avalon-framework-4.2.0.jar commons-io-1.3.1.jar commons-logging-1.0.4.jar jimi-1.0.jar jai_core.jar jai_codec.jar fop-hyph.jar From: AA029 To: AA027 7777Y-04750 1 -22,221.15 -22,221.15 -68.78 Total -22,221.15 -22,221.15 -68.78 Total Movement Acct: 0 0.00 0.00 0.00 From: AA029 To: AA027 8888D-04238 1 -74,144.82 -74,144.82 -229.48 Total -73,033.52 -74,144.82 -229.48 Total Movement Acct: 0 0.00 0.00 0.00 From: AA029 To: AA027 9999F-04086 1 -36,469.80 -36,469.80 0.00 Account element not up to date Total -36,469.80 -36,469.80 0.00 Total Movement Acct: 0 0.00 0.00 0.00 The problem seems to be with locally declared variables within an xsl:for-each loop. I declare a variable globally, then set the value locally just before the </xsl:for-each> When the processing moves back to the start on the xsl:for-each, the variable has the value of the global variable. Also the test for position no longer works - it seems to use the position prior to the sort. The loop that produces this output is below. <xsl:template name="assetResults"> <xsl:for-each select="//property[@type='MoveAssetSuccess']"> <xsl:sort select="./property[@name='sourceSPV']" data-type="text" order="ascending"/> <xsl:sort select="./property[@name='targetSPV']" data-type="text" order="ascending"/> <xsl:sort select="concat(substring(property[@name='mfAccNo'],1,5),substring(proper ty[@name='mfAccNo'],8,5),substring(property[@name='mfAccNo'],6,2))"/> <fo:table space-after="10pt"> <fo:table-column column-width="3.5cm"/> <fo:table-column column-width="2cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="6cm"/> <fo:table-body> <xsl:variable name="spv" select="concat(./property[@name='sourceSPV'],./property[@name='targetSPV '])"/> <xsl:choose> <xsl:when test="position()=1"> <fo:table-row keep-together="always"> <fo:table-cell> <fo:block text-align="left" font-family="sans-serif" line-height="14pt" font-size="10pt" font-weight="bold"> <xsl:text>From: </xsl:text><xsl:value-of select="./property[@name='sourceSPV']"/> </fo:block> </fo:table-cell> <fo:table-cell> <fo:block text-align="left" font-family="sans-serif" line-height="14pt" font-size="10pt" font-weight="bold"> <xsl:text>To: </xsl:text><xsl:value-of select="./property[@name='targetSPV']"/> </fo:block> </fo:table-cell> </fo:table-row> </xsl:when> <xsl:otherwise> <xsl:if test="concat(./property[@name='sourceSPV'],./property[@name='targetSPV'] ) != $lastSPV"> <fo:table-row keep-together="always"> Do some total processing </fo:table-row> <fo:table-row break-before="page"> <fo:table-cell> <fo:block text-align="left" font-family="sans-serif" line-height="14pt" font-size="10pt" font-weight="bold"> <xsl:text>From: </xsl:text><xsl:value-of select="./property[@name='sourceSPV']"/> </fo:block> </fo:table-cell> <fo:table-cell> <fo:block text-align="left" font-family="sans-serif" line-height="14pt" font-size="10pt" font-weight="bold"> <xsl:text>To: </xsl:text><xsl:value-of select="./property[@name='targetSPV']"/> </fo:block> </fo:table-cell> </fo:table-row> </xsl:if> </xsl:otherwise> </xsl:choose> <!--fo:table-row keep-with-previous="keep"--> <!--fo:table-cell keep-with-previous="keep"> <fo:block space-before.optimum="5pt" space-after.optimum="5pt" font-size="10pt" text-align="left"> <xsl:apply-templates select="./property[@name='mfAccNo']"/> </fo:block> </fo:table-cell> </fo:table-row--> <xsl:for-each select="descendant::property[@type='AccountElementFinancialInformationVO ']"> <xsl:variable name="elementNo" select="./property[@name='accountElementNumber']"/> <fo:table-row keep-together="always"> <fo:table-cell> <xsl:if test="ancestor::property[@type='MoveAssetSuccess']/descendant::property[ @name='mfAccNo'] != $lastacc"> <fo:block space-before.optimum="5pt" space-after.optimum="5pt" font-size="10pt" text-align="left"> <xsl:apply-templates select="ancestor::property[@type='MoveAssetSuccess']/descendant::propert y[@name='mfAccNo']"/> </fo:block> </xsl:if> </fo:table-cell> <!--fo:table-row keep-with-previous="keep"> <fo:table-cell> </fo:table-cell--> <fo:table-cell> <fo:block space-before.optimum="5pt" space-after.optimum="5pt" font-size="10pt" text-align="right"> <xsl:value-of select="$elementNo"/> </fo:block> </fo:table-cell> <fo:table-cell> <fo:block space-before.optimum="5pt" space-after.optimum="5pt" font-size="10pt" text-align="right"> <xsl:choose> <xsl:when test="contains(./property[@name='currentBalance'],'E')">0.00</xsl:when> <xsl:otherwise> <xsl:value-of select="format-number(translate(./property[@name='currentBalance'],'- ;.','-.'),'#,.00')"/> </xsl:otherwise> </xsl:choose> </fo:block> </fo:table-cell> Process the rest of the cells in the same way </fo:table-row> <xsl:variable name="lastacc" select="ancestor::property[@type='MoveAssetSuccess']/descendant::propert y[@name='mfAccNo']"/> </xsl:for-each> <fo:table-row keep-together="keep"> <fo:table-cell> </fo:table-cell> <fo:table-cell> <fo:block space-before.optimum="5pt" space-after.optimum="5pt" font-size="10pt" text-align="right"> Total </fo:block> </fo:table-cell> Process the rest of the cells in the same way </fo:table-row> <xsl:if test="position() = last()"> <fo:table-row keep-together="always"> <fo:table-cell> <fo:block space-before.optimum="5pt" space-after.optimum="5pt" font-size="10pt" text-align="left" border-after-style="solid" border-after-width="1pt" border-top-style="solid" border-top-width="1pt"> Total Movement </fo:block> </fo:table-cell> Process the rest of the cells in the same way </fo:table-row> </xsl:if> </fo:table-body> </fo:table> <xsl:variable name="lastSPV" select="concat(./property[@name='sourceSPV'],./property[@name='targetSPV '])"/> <xsl:variable name="followingSPV" select="concat(following::property[@name='sourceSPV'],following::propert y[@name='targetSPV'])"/> </xsl:for-each> </xsl:template> Here is some sample xml that can be used with the xsl in the original post. <?xml version="1.0" encoding="UTF-8"?> <moveAssetBatchResults> <property type="MoveAssetResultCVO"> <property name="moveAssetResults" type="ArrayList"> <property type="MoveAssetSuccess"> <property name="movement" type="String">SUBSTITUTION</property> <property name="capitalBalance" type="Double">-36469.799999999996</property> <property name="clasAccNo" type="String">123456</property> <property name="cofAccountElementFinancialInformationVOs" type="ArrayList"> <property type="AccountElementFinancialInformationVO"> <property name="capitalBalance" type="Double">-36469.799999999996</property> <property name="clasAccountNumber" type="String">123456</property> <property name="capPeriodStartDate" type="Date">2007-12-08 00:00:00.0</property> <property name="currentBalance" type="Double">-36469.8</property> <property name="capPeriodEndDate" type="Date">2008-01-07 00:00:00.0</property> <property name="accruedInterest" type="null"/> <property name="mainframeAccountNumber" type="String">9999F-04086</property> <property name="interestRate" type="Double">9.84</property> <property name="accountElementNumber" type="Integer">1</property> </property> </property> <property name="interestROToDate" type="Double">0.0</property> <property name="mfAccNo" type="String">9999F-04086</property> <property name="currentBalance" type="Double">-36469.8</property> <property name="targetSPV" type="String">AA027</property> <property name="cofUnallocatedTransactionVOs" type="ArrayList"/> <property name="unallocatedFundsAmount" type="Double">0.0</property> <property name="cofSecuritisationProcessErrorVOs" type="ArrayList"> <property type="SecuritisationProcessErrorVO"> <property name="errorText" type="String">Account element not up to date</property> <property name="accountElementNumber" type="Integer">1</property> <property name="clasAccountNumber" type="String">70139475</property> <property name="mainframeAccountNumber" type="String">9999F-04086</property> </property> </property> <property name="sourceSPV" type="String">AA029</property> </property> <property type="MoveAssetSuccess"> <property name="movement" type="String">SUBSTITUTION</property> <property name="capitalBalance" type="Double">-12694.000000000002</property> <property name="clasAccNo" type="String">12346</property> <property name="cofAccountElementFinancialInformationVOs" type="ArrayList"> <property type="AccountElementFinancialInformationVO"> <property name="capitalBalance" type="Double">-12694.000000000002</property> <property name="clasAccountNumber" type="String">12346</property> <property name="capPeriodStartDate" type="Date">2007-12-15 00:00:00.0</property> <property name="currentBalance" type="Double">-12694.0</property> <property name="capPeriodEndDate" type="Date">2008-01-14 00:00:00.0</property> <property name="accruedInterest" type="Double">-96.77</property> <property name="mainframeAccountNumber" type="String">9999K-02957</property> <property name="interestRate" type="Double">9.34</property> <property name="accountElementNumber" type="Integer">1</property> </property> </property> <property name="interestROToDate" type="Double">-96.77</property> <property name="mfAccNo" type="String">9999K-02957</property> <property name="currentBalance" type="Double">-12694.0</property> <property name="targetSPV" type="String">AA027</property> <property name="cofUnallocatedTransactionVOs" type="ArrayList"/> <property name="unallocatedFundsAmount" type="Double">0.0</property> <property name="cofSecuritisationProcessErrorVOs" type="ArrayList"/> <property name="sourceSPV" type="String">AA029</property> </property> <property type="MoveAssetSuccess"> <property name="movement" type="String">SUBSTITUTION</property> <property name="capitalBalance" type="Double">-64926.5</property> <property name="clasAccNo" type="String">23456</property> <property name="cofAccountElementFinancialInformationVOs" type="ArrayList"> <property type="AccountElementFinancialInformationVO"> <property name="capitalBalance" type="Double">-64926.5</property> <property name="clasAccountNumber" type="String">23456</property> <property name="capPeriodStartDate" type="Date">2008-01-01 00:00:00.0</property> <property name="currentBalance" type="Double">-64926.5</property> <property name="capPeriodEndDate" type="Date">2008-01-31 00:00:00.0</property> <property name="accruedInterest" type="Double">-177.83</property> <property name="mainframeAccountNumber" type="String">9999K-02810</property> <property name="interestRate" type="Double">7.69</property> <property name="accountElementNumber" type="Integer">1</property> </property> </property> <property name="interestROToDate" type="Double">-177.83</property> <property name="mfAccNo" type="String">9999K-02810</property> <property name="currentBalance" type="Double">-64926.5</property> <property name="targetSPV" type="String">AA027</property> <property name="cofUnallocatedTransactionVOs" type="ArrayList"/> <property name="unallocatedFundsAmount" type="Double">0.0</property> <property name="cofSecuritisationProcessErrorVOs" type="ArrayList"/> <property name="sourceSPV" type="String">AA029</property> </property> <property type="MoveAssetSuccess"> <property name="movement" type="String">SUBSTITUTION</property> <property name="capitalBalance" type="Double">-22221.149999999998</property> <property name="clasAccNo" type="String">44553</property> <property name="cofAccountElementFinancialInformationVOs" type="ArrayList"> <property type="AccountElementFinancialInformationVO"> <property name="capitalBalance" type="Double">-22221.149999999998</property> <property name="clasAccountNumber" type="String">44553</property> <property name="capPeriodStartDate" type="Date">2008-01-01 00:00:00.0</property> <property name="currentBalance" type="Double">-22221.15</property> <property name="capPeriodEndDate" type="Date">2008-01-31 00:00:00.0</property> <property name="accruedInterest" type="Double">-68.78</property> <property name="mainframeAccountNumber" type="String">7777Y-04750</property> <property name="interestRate" type="Double">8.690000000000001</property> <property name="accountElementNumber" type="Integer">1</property> </property> </property> <property name="interestROToDate" type="Double">-68.78</property> <property name="mfAccNo" type="String">7777Y-04750</property> <property name="currentBalance" type="Double">-22221.15</property> <property name="targetSPV" type="String">AA027</property> <property name="cofUnallocatedTransactionVOs" type="ArrayList"/> <property name="unallocatedFundsAmount" type="Double">0.0</property> <property name="cofSecuritisationProcessErrorVOs" type="ArrayList"/> <property name="sourceSPV" type="String">AA029</property> </property> <property type="MoveAssetSuccess"> <property name="movement" type="String">SUBSTITUTION</property> <property name="capitalBalance" type="Double">-18926.800000000003</property> <property name="clasAccNo" type="String">66554</property> <property name="cofAccountElementFinancialInformationVOs" type="ArrayList"> <property type="AccountElementFinancialInformationVO"> <property name="capitalBalance" type="Double">-18926.800000000003</property> <property name="clasAccountNumber" type="String">66554</property> <property name="capPeriodStartDate" type="Date">2008-01-01 00:00:00.0</property> <property name="currentBalance" type="Double">-18926.8</property> <property name="capPeriodEndDate" type="Date">2008-01-31 00:00:00.0</property> <property name="accruedInterest" type="Double">-51.84</property> <property name="mainframeAccountNumber" type="String">5566W-04468</property> <property name="interestRate" type="Double">7.69</property> <property name="accountElementNumber" type="Integer">1</property> </property> </property> <property name="interestROToDate" type="Double">-51.84</property> <property name="mfAccNo" type="String">5566W-04468</property> <property name="currentBalance" type="Double">-18926.8</property> <property name="targetSPV" type="String">AA027</property> <property name="cofUnallocatedTransactionVOs" type="ArrayList"/> <property name="unallocatedFundsAmount" type="Double">0.0</property> <property name="cofSecuritisationProcessErrorVOs" type="ArrayList"/> <property name="sourceSPV" type="String">BB029</property> </property> <property type="MoveAssetSuccess"> <property name="movement" type="String">SUBSTITUTION</property> <property name="capitalBalance" type="Double">-32507.850000000002</property> <property name="clasAccNo" type="String">99887</property> <property name="cofAccountElementFinancialInformationVOs" type="ArrayList"> <property type="AccountElementFinancialInformationVO"> <property name="capitalBalance" type="Double">-22588.11</property> <property name="clasAccountNumber" type="String">99887</property> <property name="capPeriodStartDate" type="Date">2008-01-01 00:00:00.0</property> <property name="currentBalance" type="Double">-22588.11</property> <property name="capPeriodEndDate" type="Date">2008-01-31 00:00:00.0</property> <property name="accruedInterest" type="Double">-61.87</property> <property name="mainframeAccountNumber" type="String">7788K-04892</property> <property name="interestRate" type="Double">7.69</property> <property name="accountElementNumber" type="Integer">1</property> </property> <property type="AccountElementFinancialInformationVO"> <property name="capitalBalance" type="Double">-9919.740000000002</property> <property name="clasAccountNumber" type="String">99887</property> <property name="capPeriodStartDate" type="Date">2008-01-01 00:00:00.0</property> <property name="currentBalance" type="Double">-9919.74</property> <property name="capPeriodEndDate" type="Date">2008-01-31 00:00:00.0</property> <property name="accruedInterest" type="Double">-30.7</property> <property name="mainframeAccountNumber" type="String">7788K-04892</property> <property name="interestRate" type="Double">8.690000000000001</property> <property name="accountElementNumber" type="Integer">2</property> </property> </property> <property name="interestROToDate" type="Double">-92.57</property> <property name="mfAccNo" type="String">7788K-04892</property> <property name="currentBalance" type="Double">-32507.85</property> <property name="targetSPV" type="String">BB027</property> <property name="cofUnallocatedTransactionVOs" type="ArrayList"/> <property name="unallocatedFundsAmount" type="Double">0.0</property> <property name="cofSecuritisationProcessErrorVOs" type="ArrayList"/> <property name="sourceSPV" type="String">AA029</property> </property> </property> </property> </moveAssetBatchResults> Any help appreciated. Regards Jan LEGAL NOTICE The information contained in this e-mail and any attachments are private and confidential. This message is solely intended for a particular recipient, if you are not the intended recipient you are prohibited from storing, copying, disseminating or using the information in any way. If you received this e-mail in error please notify the sender immediately. E-mail transmission cannot be guaranteed to be secure or error-free as information could be intercepted, corrupted, lost, destroyed, arrive late or incomplete, or contain viruses. The sender therefore does not accept liability for any errors, viruses or omissions in the contents of this message, which arise as a result of transmission. This e-mail is not intended to create legally binding commitments on behalf of Northern Rock plc, nor do its contents reflect the corporate views or policies of Northern Rock plc. Northern Rock plc, Registered Office Northern Rock House Gosforth Newcastle upon Tyne NE3 4PL. Registered in England, number 3273685. Telephone No: 0191 2857191 Northern Rock plc is authorised and regulated by the Financial Services Authority for deposit-taking; advising on and arranging mortgages and general insurance; and for introducing life assurance and investments. ______________________________________________________________________ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email ______________________________________________________________________
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] FW: Xslt that worked for , Michael Kay | Thread | Re: [xsl] FW: Xslt that worked for , J.Pietschmann |
[xsl] RE: [xml-dev] IRIs - Question, Michael Kay | Date | [xsl] Re: [xml-dev] IRIs - Question, bryan rasmussen |
Month |