Wrox Programmer Forums
Go Back   Wrox Programmer Forums > XML > XSLT
|
XSLT General questions and answers about XSLT. For issues strictly specific to the book XSLT 1.1 Programmers Reference, please post to that forum instead.
Welcome to the p2p.wrox.com Forums.

You are currently viewing the XSLT section of the Wrox Programmer to Programmer discussions. This is a community of software programmers and website developers including Wrox book authors and readers. New member registration was closed in 2019. New posts were shut off and the site was archived into this static format as of October 1, 2020. If you require technical support for a Wrox book please contact http://hub.wiley.com
 
Old July 13th, 2016, 03:42 PM
Friend of Wrox
 
Join Date: Apr 2013
Posts: 101
Thanks: 14
Thanked 0 Times in 0 Posts
Default How do I display output for additional required elements?

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.

Current xslt code that handles TransactionTypeText
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 code
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
Code:
<?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>

Last edited by winkimjr2; July 14th, 2016 at 12:51 PM.. Reason: Clarified what I am trying to do and added xslt code that is handling 4 TransactionTypeText
 
Old July 18th, 2016, 03:02 PM
Friend of Wrox
 
Join Date: Apr 2013
Posts: 101
Thanks: 14
Thanked 0 Times in 0 Posts
Default

I have resolved this





Similar Threads
Thread Thread Starter Forum Replies Last Post
Elements (EMPTY) and Attributes #Required Ian ORourke XML 10 July 14th, 2016 10:07 PM
SQL XML Explicit (Output file required) Neal SQL Server 2005 0 August 4th, 2008 03:04 AM
How to write T-SQL to retrieve the required Output anilkumar.dwivedi SQL Language 3 June 26th, 2008 12:37 AM
Adding Additional Namespace and Prefixing Elements hangon XSLT 6 November 5th, 2007 09:29 PM
Failed opening required 'elements.php' (include_p paddy PHP Databases 3 July 31st, 2003 02:13 PM





Powered by vBulletin®
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Copyright (c) 2020 John Wiley & Sons, Inc.