[xsl] Problem with version of XSL(Please reply soon)

Subject: [xsl] Problem with version of XSL(Please reply soon)
From: lakshmi mrudula <mrudula_lakshmi@xxxxxxxxx>
Date: Thu, 29 Nov 2007 01:05:34 +1300 (NZDT)
Hi,

We have the an XSL that is  given below. When we try
to run this file using Stylus studio, it works fine.
Its able to convert the input XML. But when we try to
execute the same XSL using java code in eclipse and
pointing to the same XML converters.jar of Stylus, its
giving the following exception:

TransformerConfigurationException
ERROR:  'line 194: Unsupported XSL element
'for-each-group'.'
FATAL ERROR:  'Could not compile stylesheet'
Exception in thread "main" Feb 28, 2007 3:03:42 PM
com.unisys.trans.shared.util.response.LocalText
getResourceString
ERROR: LOG_ID_1249 from
com.unisys.trans.shared.util.response.LocalText.getResourceString(LocalText.java:118)
Feb 28, 2007 3:03:42 PM
com.unisys.trans.shared.util.jmx.JmxControl <clinit>
ERROR: LOG_ID_1257 from
com.unisys.trans.shared.util.jmx.JmxControl.<clinit>(JmxControl.java:68)
javax.naming.NameNotFoundException: remaining name:
env/jmx/runtime
	at
weblogic.j2eeclient.SimpleContext.resolve(SimpleContext.java:35)
	at
weblogic.j2eeclient.SimpleContext.resolve(SimpleContext.java:39)
	at
weblogic.j2eeclient.SimpleContext.lookup(SimpleContext.java:59)
	at
weblogic.j2eeclient.SimpleContext.lookup(SimpleContext.java:59)
	at
weblogic.j2eeclient.SimpleContext.lookup(SimpleContext.java:64)
	at
javax.naming.InitialContext.lookup(InitialContext.java:351)
	at
com.unisys.trans.shared.util.jmx.JmxControl.<clinit>(JmxControl.java:61)
	at
com.unisys.trans.shared.util.logging.LoggingMonitor.<init>(LoggingMonitor.java:139)
	at
com.unisys.trans.shared.util.logging.LoggingMonitor.<clinit>(LoggingMonitor.java:27)
	at
com.unisys.trans.shared.util.logging.SharedLogger.<clinit>(SharedLogger.java:41)
	at
com.unisys.trans.shared.util.response.LocalText.getResourceString(LocalText.java:118)
	at
com.unisys.trans.shared.util.response.LocalText.getText(LocalText.java:60)
	at
com.unisys.trans.shared.util.response.ResponseData.getReasonCodeMessage(ResponseData.java:1191)
	at
com.unisys.trans.shared.util.response.SharedException.getMessage(SharedException.java:135)
	at
java.lang.Throwable.getLocalizedMessage(Throwable.java:267)
	at java.lang.Throwable.toString(Throwable.java:344)
	at java.lang.String.valueOf(String.java:2577)
	at java.io.PrintStream.print(PrintStream.java:616)
	at java.io.PrintStream.println(PrintStream.java:753)
	at
java.lang.Throwable.printStackTrace(Throwable.java:462)
	at
java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:987)
	at
java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:978)
	at
java.lang.Thread.dispatchUncaughtException(Thread.java:1778)
Feb 28, 2007 3:03:43 PM
com.unisys.trans.shared.util.response.LocalText
getResourceString
ERROR: LOG_ID_1249 from
com.unisys.trans.shared.util.response.LocalText.getResourceString(LocalText.java:118)
com.unisys.trans.shared.util.response.SharedException:
ReasonCode[0] ApplicationID[0] Message:SHAREDUTIL269:
An error has occurred. The system cannot find the
TextBundle for application number 0.
	at client4.getTransformer(client4.java:125)
	at client4.convertsendingmessage(client4.java:72)
	at client4.main(client4.java:48)



We dont have any clue why its able to convert using
stylus but not with java code.
As far as my understanding its problem with the
version. But in that case it should not be able to
convert using Stylus also. 

Code we are using and the input XML are also given
below.

Can you please let us know what could be done for this
problem?


<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
xmlns:p1="http://ihp271:7001/aircore/bkg/hwpres.xsd";>
	<xsl:output indent="yes"/>
	<xsl:variable name="controlInfo">
			<CompanyId/>
			<ReservationControlNumber/>
			<ReservationControlType/>
			<FirstDate/>
			<Time/>
	</xsl:variable>
	<xsl:template match="/">
		<IATA>
			<UNB>
				<xsl:if
test="p1:Hwpres/InterchangeHeader/SyntaxIdentifier/syntaxIdentifier[normalize-space()]
|
p1:Hwpres/InterchangeHeader/SyntaxIdentifier/syntaxVersionNumber[normalize-space()]">
					<UNB01>
						<xsl:if
test="p1:Hwpres/InterchangeHeader/SyntaxIdentifier/syntaxIdentifier[normalize-space()]">
							<UNB0101>
								<xsl:value-of
select="p1:Hwpres/InterchangeHeader/SyntaxIdentifier/syntaxIdentifier"/>
							</UNB0101>
						</xsl:if>
						<xsl:if
test="p1:Hwpres/InterchangeHeader/SyntaxIdentifier/syntaxVersionNumber[normalize-space()]">
							<UNB0102>
								<xsl:value-of
select="p1:Hwpres/InterchangeHeader/SyntaxIdentifier/syntaxVersionNumber"/>
							</UNB0102>
						</xsl:if>
					</UNB01>
				</xsl:if>
				<xsl:if
test="p1:Hwpres/InterchangeHeader/InterchangeSender/senderIdentification[normalize-space()]
|
p1:Hwpres/InterchangeHeader/InterchangeSender/partnerIdCodeQualifier[normalize-space()]
|
p1:Hwpres/InterchangeHeader/InterchangeSender/addressForReverseRouting[normalize-space()]">
					<UNB02>
						<xsl:if
test="p1:Hwpres/InterchangeHeader/InterchangeSender/senderIdentification[normalize-space()]">
							<UNB0201>
								<xsl:value-of
select="p1:Hwpres/InterchangeHeader/InterchangeSender/senderIdentification"/>
							</UNB0201>
						</xsl:if>
						<xsl:if
test="p1:Hwpres/InterchangeHeader/InterchangeSender/partnerIdCodeQualifier[normalize-space()]">
							<UNB0202>
								<xsl:value-of
select="p1:Hwpres/InterchangeHeader/InterchangeSender/partnerIdCodeQualifier"/>
							</UNB0202>
						</xsl:if>
						<xsl:if
test="p1:Hwpres/InterchangeHeader/InterchangeSender/addressForReverseRouting[normalize-space()]">
							<UNB0203>
								<xsl:value-of
select="p1:Hwpres/InterchangeHeader/InterchangeSender/addressForReverseRouting"/>
							</UNB0203>
						</xsl:if>
					</UNB02>
				</xsl:if>
				<xsl:if
test="p1:Hwpres/InterchangeHeader/InterchangeRecipient/recipientIdentification[normalize-space()]
|
p1:Hwpres/InterchangeHeader/InterchangeRecipient/identCodeQualifier[normalize-space()]
|
p1:Hwpres/InterchangeHeader/InterchangeRecipient/routingAddress[normalize-space()]">
					<UNB03>
						<xsl:if
test="p1:Hwpres/InterchangeHeader/InterchangeRecipient/recipientIdentification[normalize-space()]">
							<UNB0301>
								<xsl:value-of
select="p1:Hwpres/InterchangeHeader/InterchangeRecipient/recipientIdentification"/>
							</UNB0301>
						</xsl:if>
						<xsl:if
test="p1:Hwpres/InterchangeHeader/InterchangeRecipient/identCodeQualifier[normalize-space()]">
							<UNB0302>
								<xsl:value-of
select="p1:Hwpres/InterchangeHeader/InterchangeRecipient/identCodeQualifier"/>
							</UNB0302>
						</xsl:if>
						<xsl:if
test="p1:Hwpres/InterchangeHeader/InterchangeRecipient/routingAddress[normalize-space()]">
							<UNB0303>
								<xsl:value-of
select="p1:Hwpres/InterchangeHeader/InterchangeRecipient/routingAddress"/>
							</UNB0303>
						</xsl:if>
					</UNB03>
				</xsl:if>
				<xsl:if
test="p1:Hwpres/InterchangeHeader/DateTimePreparation/date[normalize-space()]
|
p1:Hwpres/InterchangeHeader/DateTimePreparation/time[normalize-space()]">
					<UNB04>
						<xsl:if
test="p1:Hwpres/InterchangeHeader/DateTimePreparation/time[normalize-space()]">
							<UNB0401>
								<xsl:value-of
select="p1:Hwpres/InterchangeHeader/DateTimePreparation/date"/>
							</UNB0401>
						</xsl:if>
						<xsl:if
test="p1:Hwpres/InterchangeHeader/DateTimePreparation/time[normalize-space()]">
							<UNB0402>
								<xsl:value-of
select="p1:Hwpres/InterchangeHeader/DateTimePreparation/time"/>
							</UNB0402>
						</xsl:if>
					</UNB04>
				</xsl:if>
				<xsl:if
test="p1:Hwpres/InterchangeHeader/interchangeControlReference[normalize-space()]">
					<UNB05>
						<xsl:value-of
select="p1:Hwpres/InterchangeHeader/interchangeControlReference"/>
					</UNB05>
				</xsl:if>
				<xsl:if
test="p1:Hwpres/InterchangeHeader/RecipientsReference/RecipientsReference[normalize-space()]
|
p1:Hwpres/InterchangeHeader/RecipientsReference/RecipientsReferenceQualifier[normalize-space()]">
					<UNB06>
						<xsl:if
test="p1:Hwpres/InterchangeHeader/RecipientsReference/RecipientsReference[normalize-space()]">
							<UNB0601>
								<xsl:value-of
select="p1:Hwpres/InterchangeHeader/RecipientsReference/RecipientsReference"/>
							</UNB0601>
						</xsl:if>
						<xsl:if
test="p1:Hwpres/InterchangeHeader/RecipientsReference/RecipientsReferenceQualifier[normalize-space()]">
							<UNB0602>
								<xsl:value-of
select="p1:Hwpres/InterchangeHeader/RecipientsReference/RecipientsReferenceQualifier"/>
							</UNB0602>
						</xsl:if>
					</UNB06>
				</xsl:if>
				<xsl:if
test="p1:Hwpres/InterchangeHeader/ApplicationReference[normalize-space()]">
					<UNB07>
						<xsl:value-of
select="p1:Hwpres/InterchangeHeader/ApplicationReference"/>
					</UNB07>
				</xsl:if>
				<xsl:if
test="p1:Hwpres/InterchangeHeader/processingPriorityCode[normalize-space()]">
					<UNB08>
						<xsl:value-of
select="p1:Hwpres/InterchangeHeader/processingPriorityCode"/>
					</UNB08>
				</xsl:if>
			</UNB>

			<xsl:for-each select="p1:Hwpres">
				<HWPRES>
					<UNH>
						<xsl:if
test="MessageHeader/messageReference[normalize-space()]">
							<UNH01>
								<xsl:value-of
select="MessageHeader/messageReference"/>
							</UNH01>
						</xsl:if>
						<xsl:if
test="MessageHeader/MessageIdentifier/messageType[normalize-space()]
|
MessageHeader/MessageIdentifier/messageVersionNumber[normalize-space()]
|
MessageHeader/MessageIdentifier/messageReleaseNumber[normalize-space()]
|
MessageHeader/MessageIdentifier/controllingAgency[normalize-space()]">
							<UNH02>
								<xsl:if
test="MessageHeader/MessageIdentifier/messageType[normalize-space()]">
									<UNH0201>
										<xsl:value-of
select="MessageHeader/MessageIdentifier/messageType"/>
									</UNH0201>
								</xsl:if>
								<xsl:if
test="MessageHeader/MessageIdentifier/messageVersionNumber[normalize-space()]">
									<UNH0202>
										<xsl:value-of
select="translate(MessageHeader/MessageIdentifier/messageVersionNumber,'04','96')"/>
									</UNH0202>
								</xsl:if>
								<xsl:if
test="MessageHeader/MessageIdentifier/messageReleaseNumber[normalize-space()]">
									<UNH0203>
										<xsl:value-of
select="translate(MessageHeader/MessageIdentifier/messageReleaseNumber,'1','2')"/>
									</UNH0203>
								</xsl:if>
								<xsl:if
test="MessageHeader/MessageIdentifier/controllingAgency[normalize-space()]">
									<UNH0204>
										<xsl:value-of
select="MessageHeader/MessageIdentifier/controllingAgency"/>
									</UNH0204>
								</xsl:if>
							</UNH02>
						</xsl:if>
						<xsl:if
test="MessageHeader/commonAccessReference[normalize-space()]">
							<UNH03>
								<xsl:value-of
select="MessageHeader/commonAccessReference"/>
							</UNH03>
						</xsl:if>
						<xsl:if
test="MessageHeader/StatusOfTheTransfer/SequenceOfTransfers[normalize-space()]
|
MessageHeader/StatusOfTheTransfer/FirstAndLastTransfer[normalize-space()]">
							<UNH04>
								<xsl:if
test="MessageHeader/StatusOfTheTransfer/SequenceOfTransfers[normalize-space()]">
									<UNH0401>
										<xsl:value-of
select="MessageHeader/StatusOfTheTransfer/SequenceOfTransfers"/>
									</UNH0401>
								</xsl:if>
								<xsl:if
test="MessageHeader/StatusOfTheTransfer/FirstAndLastTransfer[normalize-space()]">
									<UNH0402>
										<xsl:value-of
select="MessageHeader/StatusOfTheTransfer/FirstAndLastTransfer"/>
									</UNH0402>
								</xsl:if>
							</UNH04>
						</xsl:if>
					</UNH>

					<MSG>
						<MSG01>
							<xsl:if
test="MessageActionDetailsSegment/BusinessFunction[normalize-space()]">
								<MSG0101>
									<xsl:value-of
select="MessageActionDetailsSegment/BusinessFunction"/>
								</MSG0101>
							</xsl:if>
							<xsl:if
test="MessageActionDetailsSegment/MessageFunction[normalize-space()]">
								<MSG0102>
									<xsl:value-of
select="MessageActionDetailsSegment/MessageFunction"/>
								</MSG0102>
							</xsl:if>
							<xsl:for-each
select="MessageActionDetailsSegment/SubMessageFunction">
								<xsl:if
test="../SubMessageFunction[normalize-space()]">
									<xsl:variable
name="elementName">MSG0<xsl:number
value="position()+103"/></xsl:variable>
									<xsl:element name="{$elementName}">
										<xsl:value-of select="."/>
									</xsl:element>
								</xsl:if>
							</xsl:for-each>
						</MSG01>
						<xsl:if
test="MessageActionDetailsSegment/ResponseType[normalize-space()]">
							<MSG02>
								<xsl:value-of
select="MessageActionDetailsSegment/ResponseType"/>
							</MSG02>
						</xsl:if>
					</MSG>

					<xsl:if
test="ReservationControlInformationSegment[normalize-space()]">
					<RCI>
						<xsl:for-each-group
select="ReservationControlInformationSegment/*"
group-starting-with="CompanyId">
							<xsl:variable
name="aReservationControlInformation">RCI<xsl:number
value="position()" format="01"/></xsl:variable>
							<xsl:element
name="{$aReservationControlInformation}">
								<xsl:for-each select="$controlInfo/*">
									<xsl:variable
name="aReservationControlInformationNew">
										<xsl:value-of
select="$aReservationControlInformation"/>
										<xsl:number value="position()" format="01"/>
									</xsl:variable>
									<xsl:if test="current-group()[local-name() =
local-name(current())]">
									<xsl:element
name="{$aReservationControlInformationNew}">
										<xsl:value-of
select="current-group()[local-name() =
local-name(current())]"/>
									</xsl:element>
									</xsl:if>
								</xsl:for-each>
							</xsl:element>
						</xsl:for-each-group>
					</RCI>
					</xsl:if>

					<xsl:if test="Group1">
						<xsl:for-each select="Group1">
							<GROUP_1>
								<ERC>
									<ERC01>
										<ERC0101>
											<xsl:value-of
select="ApplicationErrorInformationSegment/ApplicationErrorCode"/>
										</ERC0101>
										<xsl:if
test="ApplicationErrorInformationSegment/CodeListQualifier[normalize-space()]">
											<ERC0102>
												<xsl:value-of
select="ApplicationErrorInformationSegment/CodeListQualifier"/>
											</ERC0102>
										</xsl:if>
										<xsl:if
test="ApplicationErrorInformationSegment/CodeListAgencyCode[normalize-space()]">
											<ERC0103>
												<xsl:value-of
select="ApplicationErrorInformationSegment/CodeListAgencyCode"/>
											</ERC0103>
										</xsl:if>
									</ERC01>
								</ERC>

								<xsl:if
test="InteractiveFreeTextSegment[normalize-space()]">
									<IFT>
										<xsl:if
test="InteractiveFreeTextSegment/TextSubjectQualifier[normalize-space()]
|
InteractiveFreeTextSegment/InformationType[normalize-space()]
|
InteractiveFreeTextSegment/StatusCode[normalize-space()]
|
InteractiveFreeTextSegment/CompanyId[normalize-space()]
|
InteractiveFreeTextSegment/Language[normalize-space()]">
											<IFT01>
												<IFT0101>
													<xsl:value-of
select="InteractiveFreeTextSegment/TextSubjectQualifier"/>
												</IFT0101>
												<xsl:if
test="InteractiveFreeTextSegment/InformationType[normalize-space()]">
													<IFT0102>
														<xsl:value-of
select="InteractiveFreeTextSegment/InformationType"/>
													</IFT0102>
												</xsl:if>
												<xsl:if
test="InteractiveFreeTextSegment/StatusCode[normalize-space()]">
													<IFT0103>
														<xsl:value-of
select="InteractiveFreeTextSegment/StatusCode"/>
													</IFT0103>
												</xsl:if>
												<xsl:if
test="InteractiveFreeTextSegment/CompanyId[normalize-space()]">
													<IFT0104>
														<xsl:value-of
select="InteractiveFreeTextSegment/CompanyId"/>
													</IFT0104>
												</xsl:if>
												<xsl:if
test="InteractiveFreeTextSegment/Language[normalize-space()]">
													<IFT0105>
														<xsl:value-of
select="InteractiveFreeTextSegment/Language"/>
													</IFT0105>
												</xsl:if>
											</IFT01>
										</xsl:if>
										<xsl:for-each
select="InteractiveFreeTextSegment/FreeText">
											<xsl:if
test="../FreeText[normalize-space()]">
												<xsl:variable
name="aFreeText">IFT<xsl:number value="position()+01"
format="01"/></xsl:variable>
												<xsl:element name="{$aFreeText}">
													<xsl:value-of select="."/>
												</xsl:element>
											</xsl:if>
										</xsl:for-each>
									</IFT>
								</xsl:if>
							</GROUP_1>
						</xsl:for-each>
					</xsl:if>

					<xsl:if
test="LongTextStringSegment[normalize-space()]">
						<LTS>
							<xsl:if
test="LongTextStringSegment/TextStringDetails[normalize-space()]">
								<LTS01>
									<xsl:call-template name="string-replace">
										<xsl:with-param name="from"
select="'&#xA;'"/>
										<xsl:with-param name="to" select="''"/>
										<xsl:with-param name="string"
select="LongTextStringSegment/TextStringDetails"/>
									</xsl:call-template>
								</LTS01>
							</xsl:if>
						</LTS>
					</xsl:if>

					<UNT>
						<xsl:if
test="MessageTrailerSegment/NumberOfSegmentsInAMessage[normalize-space()]">
							<UNT01>
								<xsl:value-of
select="MessageTrailerSegment/NumberOfSegmentsInAMessage"/>
							</UNT01>
						</xsl:if>
						<xsl:if
test="MessageTrailerSegment/MessageReferenceNumber[normalize-space()]">
							<UNT02>
								<xsl:value-of
select="MessageTrailerSegment/MessageReferenceNumber"/>
							</UNT02>
						</xsl:if>
					</UNT>
				</HWPRES>
			</xsl:for-each>
			<UNZ>
				<xsl:if
test="p1:Hwpres/InterchangeTrailerSegment/InterchangeControlCount[normalize-space()]">
					<UNZ01>
						<xsl:value-of
select="p1:Hwpres/InterchangeTrailerSegment/InterchangeControlCount"/>
					</UNZ01>
				</xsl:if>
				<xsl:if
test="p1:Hwpres/InterchangeTrailerSegment/InterchangeControlReference[normalize-space()]">
					<UNZ02>
						<xsl:value-of
select="p1:Hwpres/InterchangeTrailerSegment/InterchangeControlReference"/>
					</UNZ02>
				</xsl:if>
			</UNZ>
		</IATA>
	</xsl:template>

	<!-- replace all occurences of the character(s)
`from'
		     by the string `to' in the string `string'.-->
	<xsl:template name="string-replace">
		<xsl:param name="string"/>
		<xsl:param name="from"/>
		<xsl:param name="to"/>
		<xsl:choose>
			<xsl:when test="contains($string,$from)">
				<xsl:value-of select="'%&#xA;'"/>
				<xsl:value-of
select="substring-before($string,$from)"/>
				<xsl:value-of select="$to"/>
				<xsl:call-template name="string-replace">
					<xsl:with-param name="string"
select="substring-after($string,$from)"/>
					<xsl:with-param name="from" select="$from"/>
					<xsl:with-param name="to" select="$to"/>
				</xsl:call-template>
			</xsl:when>
			<xsl:otherwise>
				<xsl:variable name="finalString">
					<xsl:value-of select="$string"/>%;</xsl:variable>
				<xsl:value-of select="$finalString"/>
			</xsl:otherwise>
		</xsl:choose>
	</xsl:template>
</xsl:stylesheet



InputXML:

<?xml version="1.0" encoding="UTF-8"?>
<p1:Hwpres
xmlns:p1="http://ihp271:7001/aircore/bkg/hwpres.xsd";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
<InterchangeHeader>
<interchangeControlReference>XA10b48</interchangeControlReference>
<SyntaxIdentifier>
<syntaxIdentifier>IATA</syntaxIdentifier>
<syntaxVersionNumber>1</syntaxVersionNumber>
</SyntaxIdentifier>
<InterchangeSender>
<senderIdentification>XA</senderIdentification>
</InterchangeSender>
<InterchangeRecipient>
<recipientIdentification>NW</recipientIdentification>
</InterchangeRecipient>
<DateTimePreparation>
<date>71011</date>
<time>1348</time>
</DateTimePreparation>
</InterchangeHeader>
<MessageHeader>
<MessageIdentifier>
<messageType>HWPRES</messageType>
<messageVersionNumber>96</messageVersionNumber>
<messageReleaseNumber>2</messageReleaseNumber>
<controllingAgency>IA</controllingAgency>
</MessageIdentifier>
<messageReference>1</messageReference>
</MessageHeader>
<MessageActionDetailsSegment>
<BusinessFunction>1</BusinessFunction>
<MessageFunction>1</MessageFunction>
<SubMessageFunction>1</SubMessageFunction>
<ResponseType>3</ResponseType>
</MessageActionDetailsSegment>
<ReservationControlInformationSegment>
<CompanyId>AAH</CompanyId>
<ReservationControlNumber>ABC456789</ReservationControlNumber>

<CompanyId>AAA</CompanyId>
<ReservationControlNumber>ABC12345</ReservationControlNumber>
<ReservationControlType>B</ReservationControlType>
<FirstDate>12OCT2007</FirstDate>
<Time>2234</Time>
</ReservationControlInformationSegment>
<Group1>
<ApplicationErrorInformationSegment>
<ApplicationErrorCode>1</ApplicationErrorCode>
<CodeListQualifier>EC</CodeListQualifier>
<CodeListAgencyCode>2</CodeListAgencyCode>
</ApplicationErrorInformationSegment>
<InteractiveFreeTextSegment>
<TextSubjectQualifier>1</TextSubjectQualifier>
<InformationType>1</InformationType>
<StatusCode>PRP</StatusCode>
<CompanyId>AAH</CompanyId>
<Language>AB</Language>
</InteractiveFreeTextSegment>
</Group1>
<LongTextStringSegment>
<TextStringDetails>A</TextStringDetails>
</LongTextStringSegment>
<MessageTrailerSegment>
<NumberOfMessageSegments>7</NumberOfMessageSegments>
<MessageReferenceNumber>1</MessageReferenceNumber>
</MessageTrailerSegment>
</p1:Hwpres>


Code:

//package com.stylusstudio.samples;
import java.io.*;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import javax.xml.transform.sax.*;
import javax.xml.transform.*;
import
com.unisys.trans.shared.util.response.ResponseData;
import
com.unisys.trans.shared.util.response.SharedException;
import
com.unisys.trans.shared.util.startup.ControlFileLocator;
import
com.unisys.trans.shared.validator.SharedValidationConstants;
import com.ddtek.xmlconverter.*;
import com.ddtek.xmlconverter.exception.*;

public class client4 {

    static boolean isAPIUnlocked = false;

    static String exampleDir = "C:\\test_stylus" +
File.separator;

    public static void main(String args[]) throws
SharedException, TransformerException, IOException {
        System.out.println("isAPIUnlocked" +
isAPIUnlocked);
        System.setProperty("propertyFileDirectory",
           
"FILE:C:\\bea\\user_projects\\domains\\aircoredomain\\aircore\\properties");

        System.setProperty("controlFileDirectory",
           
"FILE:C:\\bea\\user_projects\\domains\\aircoredomain\\aircore\\properties");

        System.out.println("creating file");

        File temp = new File(exampleDir +
"Aircore_HWPRES.xml");
        String abcd = getFileContents(temp);
         //abcd = abcd.replaceAll("p1:", "");

        System.out.println("start");

       File tempedi = new File(exampleDir +
"DCQCKI_2.edi");
        String abc = getFileContents(tempedi);

        new client4().convertsendingmessage(abcd,
"96.2");
     //  new client4().convertrecievingmessage(abc,
"96.2");
    }

    private Object convertsendingmessage(Object pXML,
String version) throws SharedException {
        OutputStream outStream = new
ByteArrayOutputStream();
        ResponseData aRespData = new ResponseData();
        try {
            System.out.println("intermediate xml is "
+ pXML);

            ConverterFactory factory = new
ConverterFactory();

            // Set up the converter; as
converterSource is a SAXSource, this
            // doesn't actually
            // start the conversion process until
events are fired through
            // converterSource
            Converter fromXml =
factory.newConvertFromXML("converter:EDI");
            // the SAX source used by the converter to
receive SAX events
            SAXSource converterSource = new
SAXSource();

            // the final result after the Converter
            StreamResult converterResult = new
StreamResult(outStream);
            fromXml.convert(converterSource,
converterResult);

            Transformer xslt = getTransformer();

            // Sources pointing to XSLT source and XML
input
            StreamSource xsltInput = new
StreamSource(new StringReader((String) pXML));

            // Set up the SAXResult used by the XSLT
processor as output
            // Bind xsltResult's SAX handler to the
converterSource content
            // handler
            SAXResult xsltResult = new
SAXResult(converterSource.getXMLReader().getContentHandler());

            xslt.transform(xsltInput, xsltResult);

            System.out.println("output string for new
version of stylus is " + outStream.toString());
        }
        catch (ConverterException c) {
            System.out.println("ConverterException");
            throw new SharedException(aRespData);
        }
        catch (TransformerException t) {
           
System.out.println("TransformerException");
            t.printStackTrace();
            throw new SharedException(aRespData);
        }
        return outStream.toString();
    }

    private static String getFilePath(String
aFileName) {
        String aPropertyPath =
ControlFileLocator.getPropertyFileDirectory();
        aPropertyPath =
aPropertyPath.replaceAll("properties", "resources");
        StringBuffer aStringBuffer = new
StringBuffer(aPropertyPath);
        aStringBuffer.append("/StylusTransformers");
       
aStringBuffer.append(System.getProperties().getProperty(SharedValidationConstants.FILE_SEPERATOR));
        aStringBuffer.append(aFileName);
        int bLength = aStringBuffer.indexOf(":");
        aPropertyPath =
aStringBuffer.substring(bLength + 1);
        return aPropertyPath;
    }

    private Transformer getTransformer() throws
SharedException {

        ResponseData aRespData = new ResponseData();
        Transformer xslt;
        try {
            // String path =
getFilePath("PAOREQ_EDI_96-2.XSL");
            StreamSource xsltSource = new
StreamSource(exampleDir + "HWPRES_EDI_96-2.xsl");
            // Set up the XSLT transformer, and start
the processing; that will
            // implicitly
            // also start the fromXml converter firing
SAX events to it
            TransformerFactory transformerFactory =
TransformerFactory.newInstance();
            xslt =
transformerFactory.newTransformer(xsltSource);
        }
        catch (TransformerConfigurationException t) {
           
System.out.println("TransformerConfigurationException");
            throw new SharedException(aRespData);
        }
        return xslt;
    }

    private Object convertrecievingmessage(Object
pEDI, String version) throws SharedException,
                TransformerException, IOException {
        System.out.println("EDI is " + pEDI);
        ByteArrayInputStream aByteArrayInputStream =
new ByteArrayInputStream(((String) pEDI).getBytes());
        StreamSource converterSource = new
StreamSource(aByteArrayInputStream);
        ConverterFactory factory = new
ConverterFactory();
        // this creates the converter, without
starting it yet
        ConvertToXML toXml =
factory.newConvertToXML("converter:EDI");

        // Get a SAXSource object from ConvertToXML;
this will be used by the
        // transformer
        // to register its own content handler and
listeners
        SAXSource converterResult =
toXml.getSAXSource(converterSource);

        // XSLT source and XML result of the XSLT
processing
        StreamSource xsltSource = new
StreamSource(exampleDir + "HWPRES_EDI_96-2.xsl");
        // Create a TransformerFactory and the XSLT
Transformer
        TransformerFactory transformerFactory =
TransformerFactory.newInstance();
        Transformer xslt =
transformerFactory.newTransformer(xsltSource);

        OutputStream outStream = new
ByteArrayOutputStream();
        StreamResult xsltResult = new
StreamResult(outStream);
        // Run the transformation; this will properly
register into the
        // converter SAXSource object
        // so that SAX events are fired to the XSLT
transformer; the transformer
        // implicity starts
        // the conversion process
        xslt.transform(converterResult, xsltResult);
        System.out.println("output xml is " +
outStream.toString());
        return outStream.toString();
    }

    /**
     * Fetch the entire contents of a text file, and
return it in a String. This
     * style of implementation does not throw
Exceptions to the caller.
     * 
     * @param aFile is a file which already exists and
can be read.
     */
    static public String getFileContents(File aFile) {
        // ...checks on aFile are elided
        StringBuffer contents = new StringBuffer();

        // declared here only to make visible to
finally clause
        BufferedReader input = null;
        try {
            // use buffering, reading one line at a
time
            // FileReader always assumes default
encoding is OK!
            input = new BufferedReader(new
FileReader(aFile));
            String line = null; // not declared within
while loop
            /*
             * readLine is a bit quirky : it returns
the content of a line MINUS
             * the newline. it returns null only for
the END of the stream. it
             * returns an empty String if two newlines
appear in a row.
             */
            while ((line = input.readLine()) != null)
{
                contents.append(line);
               
contents.append(System.getProperty("line.separator"));
            }
        }
        catch (FileNotFoundException ex) {
            ex.printStackTrace();
        }
        catch (IOException ex) {
            ex.printStackTrace();
        }
        finally {
            try {
                if (input != null) {
                    // flush and close both "input"
and its underlying
                    // FileReader
                    input.close();
                }
            }
            catch (IOException ex) {
                ex.printStackTrace();
            }
        }
        return contents.toString();
    }
}

Send instant messages to your online friends http://au.messenger.yahoo.com 

Current Thread