winkimjr2 Posted July 13, 2016 Share Posted July 13, 2016 My xslt code is returning correct output when TransactionTypeText='Charge', TransactionTypeText='Payment', TransactionTypeText='Credit', and TransactionTypeText='Disbursement'. However if the xml document has TransactionTypeText that is other than these 4, I am getting an error. For example, when TransactionTypeText='Adjustment', I am getting an error Unknown transaction type. Adjustment. I would like to add code so I also get the output when TransactionTypeText is other than Charge, Payment, Credit or Disbursement. When the TranscationTypeText is not any of the 4, I would like to get the amounts from any of the source columns from the xml document. For each row, only one of the sourse columns should have a non-zero value. If a row has more than one non-zero source columns, I return an exception which is in my xslt stylesheet How do I modify my xslt code to handle all TransactionTypeText=xyz? Here is my output for xml document without Adjustment element. This is correct or expected output <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> </FinancialDetail> xslt 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> My xml document <?xml version="1.0" encoding="UTF-8"?> <Pipeline xmlns=""> <SourceXML> <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> </SourceXML> <CourtXML/> <CaseOptions xmlns="http://www.courts.state.mn.us/CourtXML/3"> <FinancialSummary> <SelectedIndicator>true</SelectedIndicator> </FinancialSummary> <FinancialDetail> <SelectedIndicator>true</SelectedIndicator> </FinancialDetail> </CaseOptions> </Pipeline> Link to comment Share on other sites More sharing options...
Ingolme Posted July 13, 2016 Share Posted July 13, 2016 The part of the code that is doing that is here: <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> Link to comment Share on other sites More sharing options...
winkimjr2 Posted July 14, 2016 Author Share Posted July 14, 2016 Hello Foxy Mod, You are right. However I am not sure how to add more code so that for example the code handles all TransactionTypeText other than the 4 being handled currently. E.g <TransactionTypeText>Adjustment</TransactionTypeText> is generating an error. Link to comment Share on other sites More sharing options...
Ingolme Posted July 14, 2016 Share Posted July 14, 2016 You just need to add another <xsl:when> condition. <xsl:when test="../TransactionTypeText='Adjustment'"> Do you understand XSL? If not, you should go through the XSL tutorials at W3schools.com. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now