XSL-process in C XML-parser

L.S.
I get a memory-leak when executing xslprocess in a loop without initiating my input-xml and xsl-contexts.:
xctx=xmlinit( ) /* (xml invoer initialiseren) */
xslctx=xmlinit( ) /* (xsl invoer initialiseren) */
for (i=0;i<10;i++) {
resctx=xmlinit( ) /* (xml uitvoer initialiseren) */
free(result);
xslprocess(xctx, xslctx, resctx, &result))
xmlterm(resctx);
xmlterm(xctx);
xmlterm(xslctx);
There is no leak, when I initiate both contexts within the loop like this:
for (i=0;i<10;i++) {
xctx=xmlinit( ) /* (xml invoer initialiseren) */
xslctx=xmlinit( ) /* (xsl invoer initialiseren) */
resctx=xmlinit( ) /* (xml uitvoer initialiseren) */
free(result);
xslprocess(xctx, xslctx, resctx, &result))
xmlterm(xctx);
xmlterm(xslctx);
xmlterm(resctx);
Is this a bug ? Or is there an explanation ??
Regards,
Rik

The xml- and xsl-source look normal (there is no import or include). When I look in the process-table I see the size of the process increasing.
XML:
<body>
<addCustomer>
<CustomerDetail>
<CustomerName>
<Name>Diederik Lakerveld</Name>
</CustomerName>
<MobielNummer>
<telephoneNumber>31123456789</telephoneNumber>
</MobielNummer>
</CustomerDetail>
</addCustomer>
</body>
XSL:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="*|@*|comment()|processing-instruction()|text()">
<xsl:copy>
<xsl:apply-templates
select="*|@*|comment()|processing-instruction()|text()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="telephoneNumber">
<xsl:copy>
<xsl:variable name="d" select="."/>
<xsl:value-of select="concat('06-', substring(string($d),3,9))"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Regards,
Rik

Similar Messages

  • Message processing failed in XML parser

    This is IDoc to file integration. When I test (WE19), I did not put any value in the 'Quantity' field (which is 6 characters long).In the message mapping I put a condition to see if the value is empty then put zero, and it did not give any error. I have given all the fixed field lengths in the file adapter but still getting the following error:
    Message processing failed. Cause: com.sap.aii.af.ra.ms.api.RecoverableException: Exception in XML Parser (format problem?):'java.lang.Exception: Message processing failed in XML parser: 'java.lang.Exception: Column value 'TABLERO DE CONTROL' too long (>6 for 2. column) - must stop', probably configuration error in file adapter (XML parser error)': java.lang.Exception: Exception in XML Parser (format problem?):'java.lang.Exception: Message processing failed in XML parser: 'java.lang.Exception: Column value 'TABLERO DE CONTROL' too long (>6 for 2. column) - must stop', probably configuration error in file adapter (XML parser error)'

    When I enter value in the 'Quantity' field, the integration works fine. The value 'tablero de control' is the 'Description'  which is the next field. My Content Conversion is like;
    Field1, Field2, Quantity, Description
    (where Field1 and Field2 are mandatory and Quantity and Description are optional)
    When I provide all 4 values, the integration work just fine, when I do not provide 'Quantity' it fails.

  • Non-English characters processed correctly by XML Parser 2 XSLT?

    I'm trying to transform an XML document (parsed as an XMLDocmument) using an XSL stylesheet (parsed as an XSLStylesheet) and the XSLProcessor class in Java, I encounter the following problem:
    Non-US characters such as German umlauts, stored in the XML in &#xxx; style, are not processed properly. "|" (&#252;), for example, comes out as "C<". Is this a bug in the XSLProcessor class or am I doing something wrong? I'm using this stylesheet declaration:
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml1/strict"> Or should I mess with the encoding attribute of the ?xml ...? PI?
    tia
    John Smith

    I have not specified any encoding.
    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="completeproduct.xsl"?>
    <PRODUCT connection="demosample" xmlns:xsql="urn:oracle-xsql">
    <xsql:query>
    select * from products
    </xsql:query>
    should i specify encoding
    null

  • Xsl processor and xml parser?

    Hello,
    Can someone tell me wich is the xsl processor and the xml parser used by Livecycle ES? And their versions?
    Thank you

    XML Parser parses the text representation of an XML 1.0-compliant document to make the document's information set -- elements, attributes, text, comments, processing instructions, namespace declarations -- available for access to a comptuter program.
    Without a parser, a program cannot make heads or tails of the tree of information contained in your tags.
    An XSL Processor is a program that takes an XML Document as input, along with an XSLT transformation definition (also known as a stylesheet), and effects the transformation of the source document as instructed by the stylesheet. This might mean transforming:
    <ROWSET>
    <ROW>
    <ENAME>Steve</ENAME>
    </ROW>
    </ROWSET>
    into
    <human-resources>
    <employee name="Steve"/>
    </human-resources>
    or alternatively into:
    <html>
    <body>
    <b>Steve</b>
    </body>
    </html>
    In both cases, the source XML document
    is the same, but when transformed by
    one stylesheet, it might become
    the <human-resources> XML document.
    When transformed by another stylesheet,
    it can become pretty HTML.
    To put the two terms in context, an XSL processor uses an XML parser to read the source XML document and to read the XSL transformation definition (aka stylesheet) -- since it, too, is an XML document -- and then it proceeds to transform the source into the target.

  • Exception in XML Parser

    Hi all,
    I have a file-XI-file scenario.
    In this scenario the Transport Protocol used is FTP.
    The remote sender and the receiver system have Golden FTP server installed.
    The xml file is getting properly picked from the sender system. The format of this file is:
    <?xml version="1.0" encoding="UTF-8" ?>
    <ns:file_mt xmlns:ns="http://namespace4BPM1">
      <file_type>binary</file_type>
      <file_name>input</file_name>
      <file_ext>txt</file_ext>
      <content_dt>
      <firstname>neetu</firstname>
      <middlename>k</middlename>
      <lastname>gupta</lastname>
      </content_dt>
    </ns:file_mt>
    But the reciever file adapter is giving the following error:
    Receiver Adapter v1027 for Party '', Service 'Receiver_Service':
    Configured at 10:21:05 2006-06-05
    Last message processing started 10:21:35 2006-06-05, Error: Message processing failed with java.lang.Throwable: ftp access error: java.lang.Exception: Exception in XML Parser (format problem?):'java.lang.Exception: Message processing failed in XML parser: 'Conversion configuration error: Unknown structure 'ns:file_mt' found in document', probably configuration error in file adapter (XML parser error)'
    The parameters specified in the receiver adapter are:
    Connect mode: per file transfer
    Transfer mode: Binary
    put file: directly
    file type : binary
    I also tried sending the file after removing the structure 'ns:file_mt', but it gave the structure missing error message.
    Pls if anybody could guide me as to what should be done.
    Thanks in advance.
    Regards
    Neetu

    check the document name in file adapter configuration channel and message type name of the interface and name space..both should have same name...
    check thz blog for more inputs
    /people/venkat.donela/blog/2005/03/02/introduction-to-simplefile-xi-filescenario-and-complete-walk-through-for-starterspart1
    /people/venkat.donela/blog/2005/03/03/introduction-to-simple-file-xi-filescenario-and-complete-walk-through-for-starterspart2
    Go through them and cross check ur config..

  • Oracle.xml.parser.v2.XSLException: XSL-1045

    I'm trying to migrate from 8.1.6 to 8.1.7. In 8.1.6, I have a working java stored procedure that implements an extended namespace in XSL. I deployed the same working code in 8.1.7 and got the following error.
    processor.processXSL(styleSheet,xmlDoc)>>
    oracle.xml.parser.v2.XSLException: XSL-1045:
    Extension function error: Class not found 'com/redknife/util/xslExtend'
    The xslExtend class is loaded via loadjava and resolves with no errors. Is there a difference between the 8.1.6 implementation and 8.1.7?
    - Craig

    I've recreated the database and the instance...I've loaded all the classes and they are valid... The exact code set works in 8.1.6 but not in 8.1.7.
    Here lies the difference. In 8.1.6, I loaded the xmlparserv2.jar, but hoping for the natively compiled version being preloaded in 8.1.7, I did not load it. The error then occurs. I did a dropjava on the xmlparserv2.jar, and then a loadjava, and now it works.
    My assumption is that it was the natively compiled xml parser that made the difference. Once I removed it, and replaced it with byte code, everything worked.
    Hope I'm wrong... Craig

  • Error processing request in sax parser  No 'action' attribute found in XML

    Hi All,
            I am doing a FILE to JDBC Scenario.  I just want to send a data from file to Sql Db table. For this I have written a stored procedure to insert the row in a table.
    This is the message mapping for FILE to JDBC ….
    Sender                                                                   Receiver
    *FILESENDER_MT  1..1    FILESENDER_DT     * SPRECEIVER_MT    1..1
        .NO                    1..1    xsd:string                    * Statement           1..1   string
        .Name                1..1    xsd:string                      *user_PROC       1..1                                                                               
    action            1..1required
                                                                                *No                                                                               
    isInput        1..1  string
                                                                                    type           1..1  string
                                                                                *Name
                                                                                    isInput        1..1  string
                                                                                    type           1..1  string 
    Mapped Values....
    Statement is mapped with <b>FILESENDER_MT</b>
    action attribute is mapped with "<b>EXECUTE</b>" Constant
    No is mapped with <b>NO</b>
    Name is mapped with <b>Name</b>
    for both isInput is mapped with <b>TRUE</b>
    for both type is mapped with <b>CHAR</b>
    Here is the my stored procedure.....
    CREATE PROCEDURE [dbo].[user_PROC]
    @NO char(10),  @Name char(10)  AS
    insert into FILE2JDBC values('a','ab')
    GO
    when i run this stored procedure in Sql directly it was executed successfully....
    I have checked In SXMB_MONI status is showing green...
    xml messages from SXMB_MONI ....
    this is the message from payloads of Inbound Message
    <PRE> <?xml version="1.0" encoding="UTF-8" ?>
    - <ns0:FILESENDER_MT xmlns:ns0="http://www.prospectadelhi.com/DELHI_FILE2JDBC">
      <NO>111</NO>
      <NAME>murthy</NAME>
      </ns0:FILESENDER_MT></PRE>
    this is the message from payloads of Request Message Mapping
    <?xml version="1.0" encoding="UTF-8" ?>
    - <ns0:SPRECEIVER_MT xmlns:ns0="http://www.prospectadelhi.com/DELHI_FILE2JDBC">
    - <Statement>
    - <user_PROC>
      <action>EXECUTE</action>
    - <NO>
      <isInput>TRUE</isInput>
      <type>CHAR</type>
      </NO>
    - <Name>
      <isInput>TRUE</isInput>
      <type>CHAR</type>
      </Name>
      </user_PROC>
      </Statement>
      </ns0:SPRECEIVER_MT>
    this is the error showing in runtime workbench>component monitoring->communication channel monitoring-->Receiver Communication Channel....
    <b>Error while parsing or executing XML-SQL document: Error processing request in sax parser: No 'action' attribute found in XML document (attribute "action" missing or wrong XML structure)</b>
    Can any body tell me whether the problem is in Mapping or in Data Type Structure..
    Please resolve this issue....
    Thanks in Advance,
    Murthy.

    <?xml version="1.0" encoding="UTF-8" ?>
    - <ns0:SPRECEIVER_MT xmlns:ns0="http://www.prospectadelhi.com/DELHI_FILE2JDBC">
    - <Statement>
    <b>- <user_PROC>
    <action>EXECUTE</action></b>
    - <NO>
    <isInput>TRUE</isInput>
    <type>CHAR</type>
    </NO>
    - <Name>
    <isInput>TRUE</isInput>
    <type>CHAR</type>
    </Name>
    </user_PROC>
    </Statement>
    </ns0:SPRECEIVER_MT>
    The Action should be a Attribute of Element user_Proc as,
    <?xml version="1.0" encoding="UTF-8" ?>
    - <ns0:SPRECEIVER_MT xmlns:ns0="http://www.prospectadelhi.com/DELHI_FILE2JDBC">
    - <Statement>
    <b>- <user_PROC action="Execute"></b>- <NO>
    <isInput>TRUE</isInput>
    <type>CHAR</type>
    </NO>
    - <Name>
    <isInput>TRUE</isInput>
    <type>CHAR</type>
    </Name>
    </user_PROC>
    </Statement>
    </ns0:SPRECEIVER_MT>
    Likewise isInput and Type should be Attributes and not Elements .
    Regards
    Bhavesh

  • Attempt to process file failed with Exception in XML Parser-format problem

    Hi all,
    Iam getting an unusual error in the J2EE stack in XI.
    And the message is:
    006-11-30 17:31:07 Error Attempt to process file failed with Exception in XML Parser (format problem?):'com.sap.engine.lib.xml.parser.NestedSAXParserException: Fatal Error: com.sap.engine.lib.xml.parser.ParserException: Invalid char #0xf(:main:, row:1, col:1044002)(:main:, row=1, col=1044002) -> com.sap.engine.lib.xml.parser.ParserException: Invalid char #0xf(:main:, row:1, col:1044002)' 2006-11-30 17:31:07 Error Exception caught by adapter framework: null 2006-11-30 17:31:07 Error Delivery of the message to the application using connection AFW failed, due to: RecoverableException.
    My scenerio iam posting IDOC to a flat file with content conversion in the receiver side,the mapping got executed successfully and in the audit log i found that the error was after the 'Start converting XML document content to plain text'.
    This means that error occured during content conversion of XML to the prescribed file format.
    Can anyone suggest any better approach using which we may trace the junk data in IDoc. Manual adhoc approach could take time and is error prone.
    Thanks in advance...
    karun

    Hi Bhavesh,
    Thanks for the early reply. I checked the mapping and everything is fine and the output is also in valid XML format.
    The audit log shows that the mapping got executed successfully and the error is after the step 'Start converting XML document content to plain text '. Is there any constraint in the file adapter regarding the message size for parsing.
    2006-11-30 17:30:50 Success Transfer: "BIN" mode, size 2912595 bytes, character encoding -
    2006-11-30 17:30:50 Success Start converting XML document content to plain text
    2006-11-30 17:31:07 Error Attempt to process file failed with Exception in XML Parser (format problem?):'com.sap.engine.lib.xml.parser.NestedSAXParserException: Fatal Error: com.sap.engine.lib.xml.parser.ParserException: Invalid char #0xf(:main:, row:1, col:1044002)(:main:, row=1, col=1044002) -> com.sap.engine.lib.xml.parser.ParserException: Invalid char #0xf(:main:, row:1, col:1044002)'
    2006-11-30 17:31:07 Error Exception caught by adapter framework: null
    2006-11-30 17:31:07 Error Delivery of the message to the application using connection AFW failed, due to: RecoverableException.
    2006-11-30 17:31:07 Success The asynchronous message was successfully scheduled to be delivered at Thu Nov 30 17:36:07 GMT 2006.
    2006-11-30 17:31:07 Success The message status set to WAIT.
    2006-11-30 17:31:08 Success Acknowledgement creation triggered for type: SystemErrorAck
    2006-11-30 17:31:08 Success Acknowledgement sent successfully for type: SystemErrorAck
    2006-11-30 17:36:08 Success Retrying to deliver message to the application. Retry: 1

  • ORA-31011: XML parsing failed ORA-19202: Error occurred in XML processing

    Hi,
    I am trying to update an already existing Sales Order through PO Change Inbound 860. When i am performing changes in the line quantity and scheduled ship date with operation code as "Update" then it is successfully updating the Order and also we are able to generate the POAck for the updated sales order lines. But when i am rejecting one of the PO change lines by checking rejected flag, then order is getting imported successfully(I mean sales order is getting updated successfully) but during the POAck Generation i.e. 865 its raising "*ORA-31011: XML parsing failed ORA-19202: Error occurred in XML processing LPX-00103: Warning: document structure does not match DTD Error at line 1*" at XML Gateway. we are using XML Gateway to process the orders, can somebody help me to get rid of this issue. Thanks in advance.
    Thanks,
    Sunil Chauhan

    Hi Kishan
    Thanks for the reply.
    Because this is an outbound transaction so i can not provide you the XML file as we are facing issue to generate the same. Also we are using oracle seeded PO outbound Ack map.
    In addition i can provide you the DTD file.
    <!-- ==================================================== -->
    <!ENTITY % RESOURCES SYSTEM "oagis_resources.dtd">
    %RESOURCES;
    <!-- ==================================================== -->
    <!ELEMENT ACKNOWLEDGE_PO_008 (CNTROLAREA, DATAAREA+)>
    <!ATTLIST VERB
         value CDATA #FIXED "ACKNOWLEDGE"
    >
    <!ATTLIST NOUN
         value CDATA #FIXED "PO"
    >
    <!ATTLIST REVISION
         value CDATA #FIXED "008"
    >
    <!ELEMENT DATAAREA (ACKNOWLEDGE_PO)
    >
    <!ELEMENT ACKNOWLEDGE_PO (POORDERHDR, POORDERLIN*)
    >
    <!ELEMENT POORDERHDR ((%DATETIME.DOCUMENT;)?, (%OPERAMT.EXTENDED.T;)?, POID, POTYPE, ACKREQUEST?, CONTRACTB?, CONTRACTS?, DESCRIPTN?, NOTES*, OPRAMTAUTH?, PORELEASE?, TAXWHEXMPT?, USERAREA?, ACKHEADER, ATTCHREF*, CHARGE*, PARTNER*, POTERM*)
    >
    <!ELEMENT ACKHEADER (SENDER, (%DATETIME.PROMDELV;)?, (%DATETIME.PROMSHIP;)?, ACKCODE, DESCRIPTN?, NOTES*, SALESORDID?, USERAREA?)
    >
    <!ELEMENT POTERM (DESCRIPTN?, TERMID?, ((DAYOFMONTH, PROXMONTH) | DAYSNUM), ((%OPERAMT.EXTENDED.T;) | (%QUANTITY.PERCENT;)), USERAREA?)
    >
    <!ELEMENT POORDERLIN ((%QUANTITY.ORDERED;), (%DATETIME.NEEDDELV;)?, (%OPERAMT.UNIT.T;)?, POLINENUM, DRAWING?, HAZRDMATL?, ITEMRV?, ITEMRVX?, NOTES*, PACKING?, POLNSTATUS?, TAXWHEXMPT?, ((DESCRIPTN, ITEM?, ITEMX?, UPC?) | (ITEM, ITEMX?, UPC?) | (ITEMX, UPC?) | (UPC)), USERAREA?, ACKLINE*, ATTCHREF*, CHARGE*, DISTRIBUTN*, PARTNER*, POTERM*, POSUBLINE*, POLINESCHD*)
    >
    <!ELEMENT ACKLINE ((%DATETIME.PROMDELV;)?, (%DATETIME.PROMSHIP;)?, (%QUANTITY.ORDERED;)?, ACKCODE, NOTES*, SALESORDID?, USERAREA?)
    >
    <!ELEMENT POSUBLINE ((%QUANTITY.ITEM;), DRAWING?, ITEMRV?, ITEMRVX?, PSBLINENUM?, ((DESCRIPTN, ITEM?, ITEMX?, UPC?) | (ITEM, ITEMX?, UPC?) | (ITEMX, UPC?) | (UPC)), USERAREA?)>
    <!ELEMENT POLINESCHD ((%DATETIME.NEEDDELV;), (%QUANTITY.ORDERED;), DESCRIPTN?, PSCLINENUM?, USERAREA?)
    >
    Thanks,S
    --Sunil                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

  • ORA-31011: XML parsing failed ORA-19202: Error occurred in XML processing L

    Hi There,
    I am trying to load XML data [Given Below] into a table using "Load XML Data" option.
    <?xml version="1.0"?>
    <ROWSET>
    <ROW>
    <ID>13</ID>
    <TYPE_SEQ>8</TYPE_SEQ>
    <TYPE>B749</TYPE>
    <TYPE_DESC>B758</_TYPE_DESC>
    <EFFECTIVE_FROM>2099-01-01</EFFECTIVE_FROM>
    <EFFECTIVE_TO>2099-01-01</EFFECTIVE_TO>
    <CREATED_BY>958344</CREATED_BY>
    <CREATED_ON>2099-01-01</CREATED_ON>
    <UPDATED_BY>172283</UPDATED_BY>
    <UPDATED_ON>2099-01-01</UPDATED_ON>
    </ROW>
    </ROWSET>
    It throws the following error.
    ORA-31011: XML parsing failed ORA-19202: Error occurred in XML processing LPX-00222: error received from SAX callback function
    Can any one advice the solution please.
    -Sudheer.

    Hi Sudheer,
    This is caused by the date format you are using. Probably it is not matching with your NLS settings. Check your NLS settings, what the date format is, and use that in the XML.
    Check it with this code:
    SELECT XMLELEMENT("date", sysdate) FROM dual;Make sure, you have your NLS_DATE settings in the same format.
    Check it with:
    SELECT * FROM v$nls_parameters WHERE parameter = 'NLS_DATE_FORMAT'And then make sure it is the same by setting for example:
      ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD';Greetings,
    Rutger

  • Oracle.xml.parser.v2.XSLException: XSL-1009: Attribute 'xsl:version' not found in 'RO

    I'm using the oracle.xml.parser.v2. The files (xml, xsl) are:
    <?xml version="1.0" ?>
    <?xml-stylesheet type="text/xsl" href="king.xsl" ?>
    <ROWSET>
    <ROW>
    <EMPNO>7839</EMPNO>
    <ENAME>KING</ENAME>
    </ROW>
    </ROWSET>
    <?xml version="1.0"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="xml" indent="yes"/>
    <xsl:template match="/">
    <INVITATION>
    <TO>
    <xsl:value-of select="ROWSET/ROW/ENAME"/>
    <xsl:text> &; FAMILY </xsl:text>
    </TO>
    </INVITATION>
    </xsl:template>
    </xsl:stylesheet>
    The error is: oracle.xml.parser.v2.XSLException: XSL-1009: Attribute 'xsl:version' not found in 'ROWSET'.
    The files are well formed (tested with XML Spy 3.5). Can you see what's the problem? or is it a bug with the parser?
    help,
    Alberto
    null

    I encountered the same problem. When I change the order of the XML and XSL files, i am the same problem.
    Perhaps it's the environment AIX 4.3.3, JDK IBM 1.2.2 with JIT disable (because when JIT is enable some other problems become)??
    How can i resolve this bug ?
    Thanks.
    null

  • XML parser + XSL engine

    Hi everyone
    I'm using Solaris 2.6 with workshop version 4.2
    What XML parser and XSL engine can I use ? (precompiled for my platform if possible)
    Thanks in advance
    Vincent Croquette

    Multiplatform free XML parser:
    ftp://ftp.gnome.org/pub/GNOME/stable/sources/libxml
    Documentation:
    ftp://rpmfind.net/pub/libxml/libxml-docs.tar.gz
    C++ interface for libxml:
    http://www.lusis.org/~ari/xml++/libxml++.tar.gz

  • Swapping XML Parser and XSLT to Xalan 2.7.0 - Not Working (OC4J 10.1.3)

    Hi-
    I'm trying to use the latest Xercies/Xalan classes in OC4J 10.1.3 as described in the How-To swap XML Parsers document:
    http://www.oracle.com/technology/tech/java/oc4j/1013/how_to/how-to-swapxmlparser/doc/readme.html
    What I can see happening is that the oracle.xml shared library is successfully 'turned off', but the xalan libraries are not added. Instead, the default xml classes that are distributed with the JDK become visible. For instance, using a slightly modified version of the index.jsp page from the how-to, I get this result:
    ------ Output from JSP page ----------------
    TransformerFactory Instance: org.apache.xalan.processor.TransformerFactoryImpl
    Transformer Instance: org.apache.xalan.transformer.TransformerIdentityImpl
    Transformer Version: Xalan Java 2.4.1 (!!)
    What I expect is for that last line to say version 2.7.0, which is the version of the xalan.jar included in my shared library (code to add that line to the how-to shown below).
    I suspect what is happening is that the class loader is simply not letting a shared library override a system library - to do that you probably need to place the jar files in system endorsed directory.
    Has anyone gotten this how-to to work - actually replacing the XML parser/transform classes with the latest Xalan classes? Are you sure it is seeing the current version you placed in the shared library?
    Thanks,
    Eric Everman
    ---- My modified getXSLTDetails() method in the index.jsp page of the how-to -------
    <!-- Additional Import -->
    <%@ page import="org.apache.xalan.Version" %>
    public static String getXSLTDetails()
    Transformer transformer=null;
    TransformerFactory transformerfactory = TransformerFactory.newInstance();
         Version ver = null;
         String br = "<" + "br" + ">"; //otherwise the otn forum chocks on the break.
    try
    transformer = transformerfactory.newTransformer();
              ver = (Version) transformer.getClass().forName("org.apache.xalan.Version").newInstance();
              String ret_val =
                   "TransformerFactory Instance: "+transformerfactory.getClass().getName() + br +
                   "Transformer Instance: "+transformer.getClass().getName() + br;
              if (ver != null) {
                   ret_val = ret_val + "Transformer Version: " + ver.getVersion() + br;
              } else {
                   ret_val = ret_val + "Transformer Version not Available" + br;
              return ret_val;
    catch (Exception e)
    e.printStackTrace();
    return e.getMessage();
    }--------------------------------------------------------------------

    Steve - Thanks for responding on this.
    The Xalan SQL extension is built into Xalan. The most painless way to try it out is to run it via JEdit: www.jedit.org
    JEdit a OS Java application with a fairly painless install process (I'm assuming you already have a current JRE installed). Once its installed, you'll need to install the XSLT plugin - in JEdit goto Plugins | Plugin Manager | Install and pick the XSLT plugin. You'll need the Oracle JDBC classes on your classpath - this can be done by copying the oracle_jdbc4.jar into the [JEdit install directory]/jars directory.
    Restart to load that jar and you should be all set.
    I included a sample XSLT page at the bottom of this post that is somewhat of a template transform for the SQL extension - its more complicated then it needs to be, but it does some nice things with the results of the query. Save it as a file and make the appropriate changes to the 'datasource' parameter near the top of the file.
    Then in JEdit, open the file and make sure the XSLT plugin is visible (Plugins | XSLT | XSLT Processor Toggle - or alternately dock it in the window via global prefs). In the XSLT plugin: Allow the current buffer to be used as the source, Add that same file as a stylesheet via the '+' button, and pick a result file at the bottom. Then click the 'Transform XML' button.
    Troubleshooting: I seem to remember having some classpath errors when I tried this on windows, but others have had it work w/o issues. I do remeber that the XSLT plugin had a popup window that gave a pretty good explaintion of the problem, if it occurs. Also, for some reason the XSLT plugin will not create a new file for the output, so its often best to create a file first, then choose it as the output. Of course, you can always run a transformation from the command line or w/in an applicatoin. Full docs on the Xalan SQL extension can be found at: http://xml.apache.org/xalan-j/extensionslib.html#sql
    Here is my sample XSLT transform using the SQL extension:
    <?xml version="1.0" encoding="UTF-8" ?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
              xmlns:sql="http://xml.apache.org/xalan/sql"
              xmlns:str="http://exslt.org/strings"
              xmlns:xalan="http://xml.apache.org/xalan"
              extension-element-prefixes="sql str xalan">
         <xsl:output indent="yes"/>
         <xsl:param name="driver">oracle.jdbc.OracleDriver</xsl:param>
         <xsl:param name="datasource">jdbc:oracle:thin:jqpublic/jqpublic@server_name:1521:dbname</xsl:param>
         <xsl:param name="jndiDatasource"><!-- jndi source for production use w/in enterprise environment --></xsl:param>
         <xsl:param name="debug">true</xsl:param>
         <xsl:variable name="connection" select="sql:new()"/>
         <xsl:variable name="uppercase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
         <xsl:variable name="lowercase" select="'abcdefghijklmnopqrstuvwxyz'"/>
         <!--
              The query:  You could pass parameters in to this query to build a where clause, but here is a simple example.
              Also, its nice to wrap the query with a max row number to prevent huge results.
         -->
         <xsl:param name="query">
         select * from (
      SELECT
              'One' FIELD_1,
              'Two' FIELD_2
         FROM DUAL
         ) where rownum < 100
         </xsl:param>
         <!-- Essentially, create a XConnection object -->
         <xsl:variable name="connection" select="sql:new()"/>
         <xsl:template match="/">
        <xsl:choose><!-- Connect using JNDI -->
          <xsl:when test="$jndiDatasource != ''">
            <xsl:if test="not(sql:connect($connection, $jndiDatasource))">
              <xsl:message>Failed to connect to db via jndi connection</xsl:message>
              <xsl:comment>Failed to connect to db via jndi connection</xsl:comment>
              <xsl:if test="$debug = 'true'">
                <xsl:copy-of select="sql:getError($connection)/ext-error"/>
              </xsl:if>
            </xsl:if>
          </xsl:when>
          <xsl:otherwise><!-- Connect using connection string -->
            <xsl:if test="not(sql:connect($connection, $driver, $datasource))">
              <xsl:message>Failed to connect to db via driver/url connection</xsl:message>
              <xsl:comment>Failed to connect to db via driver/url connection</xsl:comment>
              <xsl:if test="$debug = 'true'">
                <xsl:copy-of select="sql:getError($connection)/ext-error"/>
              </xsl:if>
            </xsl:if>
          </xsl:otherwise>
        </xsl:choose>
              <!--
              The results of the query.  The rowset is brought back in 'streaming' mode,
              so its not possible to ask it for the number of rows, or to check for zero
              rows.  There is a switch to disable streaming mode, but this requires all
              rows to be brought into memory.
              -->
              <xsl:variable name="table" select="sql:query($connection, $query)"/>
              <xsl:if test="not($table)">
                   <xsl:message>Error in Query</xsl:message>
                   <xsl:copy-of select="sql:getError($connection)/ext-error"/>
              </xsl:if>
              <page>
                   <!-- Your xalan environment -->
                   <xsl:copy-of select="xalan:checkEnvironment()"/>
                   <!-- Build a bunch of metadata about the rows -->
                   <meta>
                        <cols>
                             <xsl:apply-templates select="$table/sql/metadata/column-header"/>
                        </cols>
                   </meta>
                   <rowset>
                        <!--
                             With streaming results, you must use the apply-temmplates contruct,
                             not for-each, since for-each seems to attempt to count the rows, which
                             returns zero.
                        -->
                        <xsl:apply-templates select="$table/sql/row-set"/>
                   </rowset>
              </page>
              <xsl:value-of select="sql:close($connection)"/><!-- Always close -->
         </xsl:template>
         <xsl:template match="row">
              <row>
                   <xsl:apply-templates select="col"/>
              </row>
         </xsl:template>
         <xsl:template match="column-header">
              <col>
                   <xsl:attribute name="type">
                        <xsl:value-of select="@column-typename"/>
                   </xsl:attribute>
                   <xsl:attribute name="display-name">
                        <xsl:call-template name="create-display-name"/>
                   </xsl:attribute>
                   <xsl:value-of select="@column-name"/>
              </col>
         </xsl:template>
         <!-- Convert column names to proper caps: MY_FIELD becomes My Field -->
         <xsl:template name="create-display-name">
              <xsl:variable name="col-name">
                   <xsl:for-each select="str:tokenize(@column-name, '_')">
                        <xsl:value-of
                             select="concat(translate(substring(., 1, 1), $lowercase, $uppercase), translate(substring(.,2), $uppercase, $lowercase), ' ')"/>
                   </xsl:for-each>
              </xsl:variable>
              <xsl:value-of select="substring($col-name, 1, string-length($col-name) - 1)"/>
         </xsl:template>
         <!-- Creates data columns named 'col' with a column-name attribute -->
         <xsl:template match="col">
              <col>
                   <xsl:attribute name="column-name"><xsl:value-of select="@column-name"/></xsl:attribute>
                   <xsl:value-of select="."/>
              </col>
         </xsl:template>
    </xsl:stylesheet>

  • Nls support with oracle xml parser in java

    I'm using The JAXP interface to manipulate xml with xsl. the implementation that I use is Oracle xml parser.
    My xml contains a lot of hebrew chars, and in the result stream each char translated into 5-6 chars, which makes the result to be 5-6 times bigger than it suppose to be, and harder for me to debug my application.
    The client's browser shows the results well.
    How can I make the transformator to transform the hebrew chars to hebrew char istead of longer and not readable string ?

    Oracle XML Team wrote:
    : Stephen Flinter (guest) wrote:
    : : Environment: WinNT 4.0/SP4, Apache 1.3.6, JServ 1.0, Oracle
    : 8.1.5
    : : I have downloaded the new Java v2 XML Parser (2.0.2), and
    have
    : : replaced the wrapper.classpath entry in my jserv.properties
    : file
    : : with the path to the new parser.
    : : When I rerun the "Employee Page" demo, I get the following
    : : exception message:
    : : [15/09/1999 11:02:22:974 GMT] java.lang.NoSuchMethodError:
    : : oracle.xml.parser.v2.XSLProcessor: method
    : : processXSL
    : (Loracle/xml/parser/v2/XSLStylesheet;Loracle/xml/parser
    : : /v2/XMLDocument;)Lorg/w3c/dom/DocumentFragment; not found
    : : at oracle.xml.xsql.XSLHelper.process(XSLHelper.java:34)
    : : at oracle.xml.xsql.XSQLServlet.doGet(XSQLServlet.java,
    : : Compiled Code)
    : : at
    : : javax.servlet.http.HttpServlet.service(HttpServlet.java:499)
    : : at
    : : javax.servlet.http.HttpServlet.service(HttpServlet.java:588)
    : : at
    : : org.apache.jserv.JServConnection.processRequest
    : (JServConnection.j
    : : ava)
    : : at
    : : org.apache.jserv.JServConnection.run(JServConnection.java)
    : : at java.lang.Thread.run(Thread.java:479)
    : : This demo was works fine with the parser shipped with the
    : : xsql_servlet download.
    : : Regards,
    : : Steve
    : Version 2.0.2 uses the August XSLT WD which is incompatible
    with
    : the April WD on which our previous releases including the demos
    : were based.
    : Oracle XML Team
    : http://technet.oracle.com
    : Oracle Technology Network
    Hi,
    Can someone from the Oracle XML Team point us to a fix so we can
    continue our testing???
    Steve...
    null

  • Bug in Oracle XML Parser?

    I have run the same .xsql page using the same .xsl style sheet via URL/Browser and programmatically as referenced in Steve's book. The problem is, the .xsql runs fine via the browser; however, if I call that same file programmatically I get this:
    *** Oracle XSQL Programmatic Page Processor 1.0.4.1 (Production)
    XSQL-005: XSQL page is not well-formed.
    XML parse error at line 5, char 10
    End tag does not match start tag 'META'. ***
    Now I've validated the .xsl using 3 different XML editors including JDeveloper. All return the file as well-formed. By the way, there are no META tags in the style sheet or the xsql page! Bug?
    Regards,
    Craig
    null

    What happening here is the following:
    When you run through the browser, the http request invokes the XSQL Servlet, the XSQL page template is found (typically in the cache if it's the 2nd or subsequent time you're asking for the page), and then the result is returned. Everything fine.
    When you run through the XSQLRequest class, you are providing a URL to the "raw" XSQL page of "http://foo/bar.xsql". The XSQL Page processor fetches what it's expecting to be the "raw" template XSQL page by retrieving the resource at the given URL. However, since the URL ends with *.xsql, the request for the *.xsql file does NOT return the raw XSQL page template that the XSQLRequest class is expecting, but instead the server processes the template on the server side and returns the result of processing the bar.xsql page to the XSQLRequest class. Since apparently your XSLT stylesheet if producing HTML, what the XSQLRequest class sees for the "raw" XSQL page template is actually the resulting HTML produced by the web server and since this is not wellformed XML, it gives this error.
    The solution, either provide the URL to the bar.xsql page as a file URL, or change the extension on the template page to any extension other than *.xsql so that the template won't get processed by the web server before its delivered.

Maybe you are looking for