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="'
'"/> <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="'%
'"/> <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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] How to read Schema XSD in, Abel Braaksma | Thread | Re: [xsl] Problem with version of X, Andrew Welch |
RE: [xsl] How to read Schema XSD in, wiky | Date | Re: [xsl] Problem with version of X, Andrew Welch |
Month |