IMPORTANT:
this is not a Support Forum! Experienced users might answer from time to time questions posted here. If you need a professional and reliable answer, or if you want to report a bug, please contact Altova Support instead.

How do I add exception to xslt? Options · View
winkimjr2
Posted: Thursday, July 14, 2016 5:30:04 PM
Rank: Member

Joined: 5/26/2016
Posts: 19
Location: Maplewood USA
I have 4 TransactionTypeText being handled by xslt code which include TransactionTypeText='Charge', TransactionTypeText='Payment', TransactionTypeText='Credit', TransactionTypeText='Disbursement'.
The problem is that, this code is not handling other types (TransactionTypeText) that are not one of the the 4 types.
When I try TransactionTypeText='Adjustment', I am getting an error Unknown transaction type Adjustment because I have an exception in my xslt code to handle TransactionTypeText when it is of type other than the 4.

So I would like to modify my code so that it can handle all types of TransactionTypeText.
The requirement is that, to handle (other) TransactionTypeText that are not of type Charge, Credit, Disbursement, Payment, use the following condition:
For TransactionTypeText that are not Charge; Payment; Credit, and Disbursement get amount that is not equal to zero from any of the amount elements. This is because amount can be in any element.

Note: Unlike the 4 types, other types can have amount in any element. The amount for Charge is in ChargeAmount element, amount for Payment is in PaymentAmount element, amount for Disbursement is in DisbursementAmount element, amount for Credit is in CreditAmount. This is not the case for other tpes. So, for other types, I need to get amount from any element that has amount that is great than zero.

Note: For each of the other types, only one of the amount elements can have amount greater than zero.
If there is more than one amount element with amount that is greater than zero, add exception with exception text "Transaction has more than one amount type"

Currently I am only handling (exception) when the TransactionTypeText is not one of the 4 (Charge, Payment, Credit, Disbursement.

This is the specific are of xslt I need to modify
Code:
<xsl:choose>
  <xsl:when test="../TransactionTypeText='Charge'">
    <xsl:value-of select="mscef:formatCurrency(string(ChargeAmount))"/>
  </xsl:when>
  <xsl:when test="../TransactionTypeText='Payment'">
    <xsl:value-of select="mscef:formatCurrency(string(PaymentAmount))"/>
  </xsl:when>
  <xsl:when test="../TransactionTypeText='Credit'">
    <xsl:value-of select="mscef:formatCurrency(string(CreditAmount))"/>
  </xsl:when>
  <xsl:when test="../TransactionTypeText='Disbursement'">
    <xsl:value-of select="mscef:formatCurrency(string(DisbursementAmount))"/>
  </xsl:when>
  <xsl:otherwise>
    <xsl:message terminate="yes">Unknown transaction type. <xsl:value-of select="../TransactionTypeText"/>
    </xsl:message>
  </xsl:otherwise>
</xsl:choose>


Expected output
Code:
<FinancialDetail>
    <FinancialTransaction>
        <TransactionID>1639560336</TransactionID>
        <TransactionTypeText>Charge</TransactionTypeText>
        <TransactionDate>2016-07-11</TransactionDate>
        <TransactionFeeDetail>
            <FeeDetailID>1650110685</FeeDetailID>
            <FeeDetailFeeCodeText code="REST">Restitution</FeeDetailFeeCodeText>
            <FeeDetailFeeAmount>500</FeeDetailFeeAmount>
        </TransactionFeeDetail>
        <TransactionCommentText/>
        <TransactionPaymentCreditTypeText/>
    </FinancialTransaction>
    <FinancialTransaction>
        <TransactionID>1639560337</TransactionID>
        <TransactionTypeText>Adjustment</TransactionTypeText>
        <TransactionDate>2016-07-11</TransactionDate>
        <TransactionFeeDetail>
            <FeeDetailID>1650110685</FeeDetailID>
            <FeeDetailFeeCodeText code="REST">Restitution</FeeDetailFeeCodeText>
            <FeeDetailFeeAmount>-500</FeeDetailFeeAmount>
        </TransactionFeeDetail>
        <TransactionCommentText>Testing</TransactionCommentText>
        <TransactionPaymentCreditTypeText/>
    </FinancialTransaction>
</FinancialDetail>


xslt stylesheet
Code:
<xsl:stylesheet version="1.0" xmlns="http://www.courts.state.mn.us/CourtXML/3" xmlns:msc="http://www.courts.state.mn.us/CourtXML/3" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:mscef="courts.state.mn.us/extfun" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="mscef msxsl msc">
    <xsl:output method="xml" encoding="UTF-8"/>
    <xsl:template name="FinancialDetailType">
        <xsl:for-each select="ancestor::Integration/FinancialDetail/Transaction[count(TransactionFeeDetail[FeeDetailFeeCode='REST'])>0]">
            <FinancialTransaction>
                <TransactionID>
                    <xsl:value-of select="TransactionID"/>
                </TransactionID>
                <TransactionTypeText>
                    <xsl:value-of select="TransactionTypeText"/>
                </TransactionTypeText>
                <TransactionDate>
                    <xsl:value-of select="substring(TransactionDate,1,10)"/>
                </TransactionDate>
                <xsl:for-each select="TransactionFeeDetail[FeeDetailFeeCode='REST']">
                    <TransactionFeeDetail>
                        <FeeDetailID>
                            <xsl:value-of select="FeeDetailID"/>
                        </FeeDetailID>
                        <FeeDetailFeeCodeText>
                            <xsl:attribute name="code">
                                <xsl:value-of select="FeeDetailFeeCode"/>
                            </xsl:attribute>
                            <xsl:value-of select="FeeDetailFeeCodeText"/>
                        </FeeDetailFeeCodeText>
                        <FeeDetailFeeAmount>
                            <xsl:choose>
                                <xsl:when test="../TransactionTypeText='Charge'">
                                    <xsl:value-of select="mscef:formatCurrency(string(ChargeAmount))"/>
                                </xsl:when>
                                <xsl:when test="../TransactionTypeText='Payment'">
                                    <xsl:value-of select="mscef:formatCurrency(string(PaymentAmount))"/>
                                </xsl:when>
                                <xsl:when test="../TransactionTypeText='Credit'">
                                    <xsl:value-of select="mscef:formatCurrency(string(CreditAmount))"/>
                                </xsl:when>
                                <xsl:when test="../TransactionTypeText='Disbursement'">
                                    <xsl:value-of select="mscef:formatCurrency(string(DisbursementAmount))"/>
                                </xsl:when>
                                <xsl:otherwise>
                                    <xsl:message terminate="yes">Unknown transaction type. <xsl:value-of select="../TransactionTypeText"/>
                                    </xsl:message>
                                </xsl:otherwise>
                            </xsl:choose>
                        </FeeDetailFeeAmount>
                    </TransactionFeeDetail>
                </xsl:for-each>
                <TransactionCommentText>
                    <xsl:value-of select="TransactionCommentText"/>
                </TransactionCommentText>
                <TransactionPaymentCreditTypeText>
                    <xsl:value-of select="TransactionPaymentCreditTypeText"/>
                </TransactionPaymentCreditTypeText>
            </FinancialTransaction>
        </xsl:for-each>
    </xsl:template>
    <msxsl:script language="JScript" implements-prefix="mscef">
    <![CDATA[
        
        function formatCurrency(asCurrency){
            asCurrency = asCurrency.replace("\$","");
            asCurrency = asCurrency.replace("\,","");
            return parseFloat(asCurrency);
        }
        function formatTwoDecimalCurrency(asCurrency){
            if(asCurrency.length==0){
            return "";
            }
            asCurrency = asCurrency.replace("\$","");
            asCurrency = asCurrency.replace("\,","");
            return parseFloat(asCurrency).toFixed(2);
        }
    ]]></msxsl:script>
</xsl:stylesheet>


xml document
Code:
<Integration>
    <Case InternalID="1612988653" ID="5226206" xmlns:user="http://tylertechnologies.com">
    </Case>
    <FinancialDetail>
        <Transaction>
            <TransactionID>1621246445</TransactionID>
            <TransactionTypeText>Charge</TransactionTypeText>
            <TransactionDate>2010-06-30T00:00:00</TransactionDate>
            <TransactionFeeDetail>
                <FeeDetailID>1624242662</FeeDetailID>
                <FeeDetailFeeCode>CRMTRAF5</FeeDetailFeeCode>
                <FeeDetailFeeCodeText>Crim/Traffic Surcharge 2005</FeeDetailFeeCodeText>
                <ChargeAmount>72.0000</ChargeAmount>
                <CreditAmount>0.0000</CreditAmount>
                <DisbursementAmount>0.0000</DisbursementAmount>
                <PaymentAmount>0.0000</PaymentAmount>
                <RecipientAccountID>1610014856</RecipientAccountID>
                <NameLast>MN Department of Finance</NameLast>
            </TransactionFeeDetail>
            <TransactionFeeDetail>
                <FeeDetailID>1624242663</FeeDetailID>
                <FeeDetailFeeCode>LAWLIBCR</FeeDetailFeeCode>
                <FeeDetailFeeCodeText>Law Library Criminal</FeeDetailFeeCodeText>
                <ChargeAmount>10.0000</ChargeAmount>
                <CreditAmount>0.0000</CreditAmount>
                <DisbursementAmount>0.0000</DisbursementAmount>
                <PaymentAmount>0.0000</PaymentAmount>
                <RecipientAccountID>1610014856</RecipientAccountID>
                <NameLast>MN Department of Finance</NameLast>
            </TransactionFeeDetail>
            <TransactionFeeDetail>
                <FeeDetailID>1624242664</FeeDetailID>
                <FeeDetailFeeCode>MUNICCTY</FeeDetailFeeCode>
                <FeeDetailFeeCodeText>Municipal Fines-County Share</FeeDetailFeeCodeText>
                <ChargeAmount>233.3800</ChargeAmount>
                <CreditAmount>0.0000</CreditAmount>
                <DisbursementAmount>0.0000</DisbursementAmount>
                <PaymentAmount>0.0000</PaymentAmount>
                <RecipientAccountID>1610014856</RecipientAccountID>
                <NameLast>MN Department of Finance</NameLast>
            </TransactionFeeDetail>
            <TransactionFeeDetail>
                <FeeDetailID>1624242665</FeeDetailID>
                <FeeDetailFeeCode>10CHAS23</FeeDetailFeeCode>
                <FeeDetailFeeCodeText>Chaska (0300) 2/3</FeeDetailFeeCodeText>
                <ChargeAmount>466.6200</ChargeAmount>
                <CreditAmount>0.0000</CreditAmount>
                <DisbursementAmount>0.0000</DisbursementAmount>
                <PaymentAmount>0.0000</PaymentAmount>
                <RecipientAccountID>1610014856</RecipientAccountID>
                <NameLast>MN Department of Finance</NameLast>
            </TransactionFeeDetail>
            <TransactionFeeDetail>
                <FeeDetailID>1624242666</FeeDetailID>
                <FeeDetailFeeCode>CRTCOSTS</FeeDetailFeeCode>
                <FeeDetailFeeCodeText>Court Costs</FeeDetailFeeCodeText>
                <ChargeAmount>3.0000</ChargeAmount>
                <CreditAmount>0.0000</CreditAmount>
                <DisbursementAmount>0.0000</DisbursementAmount>
                <PaymentAmount>0.0000</PaymentAmount>
                <RecipientAccountID>1610014856</RecipientAccountID>
                <NameLast>MN Department of Finance</NameLast>
            </TransactionFeeDetail>
            <TransactionFeeDetail>
                <FeeDetailID>1624242667</FeeDetailID>
                <FeeDetailFeeCode>PROSCOSTS</FeeDetailFeeCode>
                <FeeDetailFeeCodeText>Prosecution Costs</FeeDetailFeeCodeText>
                <ChargeAmount>700.0000</ChargeAmount>
                <CreditAmount>0.0000</CreditAmount>
                <DisbursementAmount>0.0000</DisbursementAmount>
                <PaymentAmount>0.0000</PaymentAmount>
                <RecipientAccountID>1610014856</RecipientAccountID>
                <NameLast>MN Department of Finance</NameLast>
            </TransactionFeeDetail>
        </Transaction>
        <Transaction>
            <TransactionID>1621279946</TransactionID>
            <TransactionTypeText>Charge</TransactionTypeText>
            <TransactionDate>2010-07-06T00:00:00</TransactionDate>
            <TransactionFeeDetail>
                <FeeDetailID>1624281693</FeeDetailID>
                <FeeDetailFeeCode>CRTCOSTS</FeeDetailFeeCode>
                <FeeDetailFeeCodeText>Court Costs</FeeDetailFeeCodeText>
                <ChargeAmount>20.0000</ChargeAmount>
                <CreditAmount>0.0000</CreditAmount>
                <DisbursementAmount>0.0000</DisbursementAmount>
                <PaymentAmount>0.0000</PaymentAmount>
                <RecipientAccountID>1610014856</RecipientAccountID>
                <NameLast>MN Department of Finance</NameLast>
            </TransactionFeeDetail>
        </Transaction>
        <Transaction>
            <TransactionID>1621541452</TransactionID>
            <TransactionTypeText>Payment</TransactionTypeText>
            <TransactionDate>2010-08-06T00:00:00</TransactionDate>
            <TransactionFeeDetail>
                <FeeDetailID>1624242664</FeeDetailID>
                <FeeDetailFeeCode>MUNICCTY</FeeDetailFeeCode>
                <FeeDetailFeeCodeText>Municipal Fines-County Share</FeeDetailFeeCodeText>
                <ChargeAmount>0.0000</ChargeAmount>
                <CreditAmount>0.0000</CreditAmount>
                <DisbursementAmount>0.0000</DisbursementAmount>
                <PaymentAmount>32.2800</PaymentAmount>
                <RecipientAccountID>1610014856</RecipientAccountID>
                <NameLast>MN Department of Finance</NameLast>
            </TransactionFeeDetail>
            <TransactionFeeDetail>
                <FeeDetailID>1624242665</FeeDetailID>
                <FeeDetailFeeCode>10CHAS23</FeeDetailFeeCode>
                <FeeDetailFeeCodeText>Chaska (0300) 2/3</FeeDetailFeeCodeText>
                <ChargeAmount>0.0000</ChargeAmount>
                <CreditAmount>0.0000</CreditAmount>
                <DisbursementAmount>0.0000</DisbursementAmount>
                <PaymentAmount>64.5400</PaymentAmount>
                <RecipientAccountID>1610014856</RecipientAccountID>
                <NameLast>MN Department of Finance</NameLast>
            </TransactionFeeDetail>
            <TransactionFeeDetail>
                <FeeDetailID>1624242666</FeeDetailID>
                <FeeDetailFeeCode>CRTCOSTS</FeeDetailFeeCode>
                <FeeDetailFeeCodeText>Court Costs</FeeDetailFeeCodeText>
                <ChargeAmount>0.0000</ChargeAmount>
                <CreditAmount>0.0000</CreditAmount>
                <DisbursementAmount>0.0000</DisbursementAmount>
                <PaymentAmount>0.4100</PaymentAmount>
                <RecipientAccountID>1610014856</RecipientAccountID>
                <NameLast>MN Department of Finance</NameLast>
            </TransactionFeeDetail>
            <TransactionFeeDetail>
                <FeeDetailID>1624281693</FeeDetailID>
                <FeeDetailFeeCode>CRTCOSTS</FeeDetailFeeCode>
                <FeeDetailFeeCodeText>Court Costs</FeeDetailFeeCodeText>
                <ChargeAmount>0.0000</ChargeAmount>
                <CreditAmount>0.0000</CreditAmount>
                <DisbursementAmount>0.0000</DisbursementAmount>
                <PaymentAmount>2.7700</PaymentAmount>
                <RecipientAccountID>1610014856</RecipientAccountID>
                <NameLast>MN Department of Finance</NameLast>
            </TransactionFeeDetail>
        </Transaction>
        <Transaction>
            <TransactionID>1621746487</TransactionID>
            <TransactionTypeText>Disbursement</TransactionTypeText>
            <TransactionDate>2010-09-01T00:00:00</TransactionDate>
            <TransactionFeeDetail>
                <FeeDetailID>1624242664</FeeDetailID>
                <FeeDetailFeeCode>MUNICCTY</FeeDetailFeeCode>
                <FeeDetailFeeCodeText>Municipal Fines-County Share</FeeDetailFeeCodeText>
                <ChargeAmount>0.0000</ChargeAmount>
                <CreditAmount>0.0000</CreditAmount>
                <DisbursementAmount>32.2800</DisbursementAmount>
                <PaymentAmount>0.0000</PaymentAmount>
                <RecipientAccountID>1610014856</RecipientAccountID>
                <NameLast>MN Department of Finance</NameLast>
            </TransactionFeeDetail>
            <TransactionFeeDetail>
                <FeeDetailID>1624242665</FeeDetailID>
                <FeeDetailFeeCode>10CHAS23</FeeDetailFeeCode>
                <FeeDetailFeeCodeText>Chaska (0300) 2/3</FeeDetailFeeCodeText>
                <ChargeAmount>0.0000</ChargeAmount>
                <CreditAmount>0.0000</CreditAmount>
                <DisbursementAmount>64.5400</DisbursementAmount>
                <PaymentAmount>0.0000</PaymentAmount>
                <RecipientAccountID>1610014856</RecipientAccountID>
                <NameLast>MN Department of Finance</NameLast>
            </TransactionFeeDetail>
            <TransactionFeeDetail>
                <FeeDetailID>1624242666</FeeDetailID>
                <FeeDetailFeeCode>CRTCOSTS</FeeDetailFeeCode>
                <FeeDetailFeeCodeText>Court Costs</FeeDetailFeeCodeText>
                <ChargeAmount>0.0000</ChargeAmount>
                <CreditAmount>0.0000</CreditAmount>
                <DisbursementAmount>0.4100</DisbursementAmount>
                <PaymentAmount>0.0000</PaymentAmount>
                <RecipientAccountID>1610014856</RecipientAccountID>
                <NameLast>MN Department of Finance</NameLast>
            </TransactionFeeDetail>
            <TransactionFeeDetail>
                <FeeDetailID>1624281693</FeeDetailID>
                <FeeDetailFeeCode>CRTCOSTS</FeeDetailFeeCode>
                <FeeDetailFeeCodeText>Court Costs</FeeDetailFeeCodeText>
                <ChargeAmount>0.0000</ChargeAmount>
                <CreditAmount>0.0000</CreditAmount>
                <DisbursementAmount>2.7700</DisbursementAmount>
                <PaymentAmount>0.0000</PaymentAmount>
                <RecipientAccountID>1610014856</RecipientAccountID>
                <NameLast>MN Department of Finance</NameLast>
            </TransactionFeeDetail>
        </Transaction>
        <Transaction>
            <TransactionID>1639560336</TransactionID>
            <TransactionTypeText>Charge</TransactionTypeText>
            <TransactionDate>2016-07-11T00:00:00</TransactionDate>
            <TransactionFeeDetail>
                <FeeDetailID>1650110685</FeeDetailID>
                <FeeDetailFeeCode>REST</FeeDetailFeeCode>
                <FeeDetailFeeCodeText>Restitution</FeeDetailFeeCodeText>
                <ChargeAmount>500.0000</ChargeAmount>
                <CreditAmount>0.0000</CreditAmount>
                <DisbursementAmount>0.0000</DisbursementAmount>
                <PaymentAmount>0.0000</PaymentAmount>
            </TransactionFeeDetail>
        </Transaction>
        <Transaction>
            <TransactionID>1639560337</TransactionID>
            <TransactionCommentText>Testing</TransactionCommentText>
            <TransactionTypeText>Adjustment</TransactionTypeText>
            <TransactionDate>2016-07-11T00:00:00</TransactionDate>
            <TransactionFeeDetail>
                <FeeDetailID>1650110685</FeeDetailID>
                <FeeDetailFeeCode>REST</FeeDetailFeeCode>
                <FeeDetailFeeCodeText>Restitution</FeeDetailFeeCodeText>
                <ChargeAmount>-500.0000</ChargeAmount>
                <CreditAmount>0.0000</CreditAmount>
                <DisbursementAmount>0.0000</DisbursementAmount>
                <PaymentAmount>0.0000</PaymentAmount>
            </TransactionFeeDetail>
        </Transaction>
    </FinancialDetail>
</Integration>

K101
Posted: Friday, July 15, 2016 10:35:13 AM
Rank: Advanced Member

Joined: 2/27/2009
Posts: 565
Your XML example document doesn't appear to include an example of such a transaction, but if there were one I believe I could select it using the following XPath expression. Perhaps that'll point you in the right direction

Code:
//Transaction[ TransactionTypeText != 'Charge' and TransactionTypeText != 'Payment' and TransactionTypeText != 'Credit' and TransactionTypeText != 'Disbursement' ]/TransactionFeeDetail[ count( *[ ends-with( name(), 'Amount' ) ][ . != 0 ] ) > 1 ]
winkimjr2
Posted: Friday, July 15, 2016 1:51:45 PM
Rank: Member

Joined: 5/26/2016
Posts: 19
Location: Maplewood USA
My xml example has the following transaction
Code:
<Transaction>
            <TransactionID>1639560337</TransactionID>
            <TransactionCommentText>Testing</TransactionCommentText>
            <TransactionTypeText>Adjustment</TransactionTypeText>
            <TransactionDate>2016-07-11T00:00:00</TransactionDate>
            <TransactionFeeDetail>
                <FeeDetailID>1650110685</FeeDetailID>
                <FeeDetailFeeCode>REST</FeeDetailFeeCode>
                <FeeDetailFeeCodeText>Restitution</FeeDetailFeeCodeText>
                <ChargeAmount>-500.0000</ChargeAmount>
                <CreditAmount>0.0000</CreditAmount>
                <DisbursementAmount>0.0000</DisbursementAmount>
                <PaymentAmount>0.0000</PaymentAmount>
            </TransactionFeeDetail>
        </Transaction>


So when this transaction type or other types that are not <TransactionTypeText>Credit</TransactionTypeText>, <TransactionTypeText>Disbursement</TransactionTypeText>, <TransactionTypeText>Payment</TransactionTypeText>, <TransactionTypeText>Charge</TransactionTypeText> are found, I want to get the amount from any element with non-zero amount. For this transaction type, the amount is from ChargerAmount element.
So the output would look like this
Code:
<FinancialTransaction>
        <TransactionID>1639560337</TransactionID>
        <TransactionTypeText>Adjustment</TransactionTypeText>
        <TransactionDate>2016-07-11</TransactionDate>
        <TransactionFeeDetail>
            <FeeDetailID>1650110685</FeeDetailID>
            <FeeDetailFeeCodeText code="REST">Restitution</FeeDetailFeeCodeText>
            <FeeDetailFeeAmount>-500</FeeDetailFeeAmount>
        </TransactionFeeDetail>
        <TransactionCommentText>Testing</TransactionCommentText>
        <TransactionPaymentCreditTypeText/>
    </FinancialTransaction>
winkimjr2
Posted: Friday, July 15, 2016 9:05:01 PM
Rank: Member

Joined: 5/26/2016
Posts: 19
Location: Maplewood USA
I resolved this.
Users browsing this topic
guest

Forum Jump
You cannot post new topics in this forum.
You cannot reply to topics in this forum.
You cannot delete your posts in this forum.
You cannot edit your posts in this forum.
You cannot create polls in this forum.
You cannot vote in polls in this forum.

Use of the Altova User Forum(s) is governed by the Altova Terms of Use.