TransformerConfigurationException (Unknown expression at EOF: *|/.)
Hi There,
I'm using java in the database & the XDK to receive xml, transform it using XSL (stored in a DB table) and insert / update tables as appropriate.
This has been working fine for a couple of years, but recently, following a server upgrade it has stopped working with the following error:
javax.xml.transform.TransformerConfigurationException: XSL-1000: (Fatal Error)
Error while parsing XSL file (Unknown expression at EOF: *|/.).
This happens whenever we try & use the XSL to transform the incoming XML. Before the upgrade, this was working fine. The server in question was upgraded from 8.1.7 (32bit) to 9.2.0.3 (64 bit). I've had it working on other 9i servers of different types, but none have had this problem. I've even tried dropping / re-creating / re-loading with no effects.
There's nothing wrong with the XSL that I can see - it's well formed, and read ok by a number of viewers / editors.
Here's the details of this problem server:
oracle enterprise 9.2.0.3
Sun 420R running solaris 8
XDK 9.2.0.1
java 1.3.1
Any help / suggestions are much appreciated,
thanks in advance,
Brian Hobbs
Hi Deepak, sorry - here's one of the XSL files:
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml"/>
<!-- Stylesheet to prevent update of audit and status columns -->
<!-- Identity transformation copies input to output -->
<xsl:template match="node()">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<!-- Block any attempt to change these fields -->
<xsl:template match="AUDITCREATEDUSERID"/>
<xsl:template match="AUDITCREATEDTIME"/>
<xsl:template match="AUDITMODIFIEDUSERID"/>
<xsl:template match="AUDITMODIFIEDTIME"/>
<xsl:template match="DELETEDSTATUS"/>
</xsl:stylesheet>
basically, all I'm doing is stripping off 5 fields from the XML that aren't needed.
Similar Messages
-
[9i] poor performance with XMLType.transform
Hello,
I've got a problem with the Oracle function XMLType.transform.
When I try to apply a XSL to a big XML, it is very very slow, and it evens consumes all the CPU, and other users are not able to work until the processing is complete...
So I was wondering if my XSL was corrupted, but it does not seem so, because when i apply it with Internet Explorer (by just double-clicking on the .xml), it is immediately applied. I've also even tried with oraxsl, and the processing is quick and good.
So, i tried to use XDB, but it does not work, maybe I should upgrade to a newer version of XDB?
Please find the ZIP file here :
http://perso.modulonet.fr/~tleoutre/Oracle/samples.zip
Please find in this file :
1) The XSL file k_xsl.xsl
2) The "big" XML file big_xml.xml
Here you can try to apply the XSL on the XML with Internet Explorer : processing is very quick...
3) The batch file transform.bat
Here you can launch it, it calls oraxsl, and produces a result very quickly...
4) The SQL file test_xsl_with_xmltype_transform.sql.
You can try to launch it... First, it applies the same XSL with a little XML, and it's OK... And then, it applies the XSL to the same big XML as in point 1), and then, it takes a lot of time and CPU...
5) The SQL file test_xsl_with_xdb_1.sql ...
On my server, it fails... So I tried to change the XSL in the next point :
6) The SQL file test_xsl_with_xdb_2.sql with a "cleaned" XSL...
And then, it fails with exactly the same problem as in :
TransformerConfigurationException (Unknown expression at EOF: *|/.)
Any help would be greatly appreciated!
Thank you!
P.S. : Sorry for my bad english, I'm a French man :-)This is what I see...
Your tests are measuring the wrong thing. You are measuring the time to create the sample documents, which is being done very innefficiently, as well
as the time take to do the transform.
Below is the correct way to get mesasurements for each task..
Here's what I see on a PIV 2.4Ghz with 10.2.0.2.0 and 2GB of RAM
Fragments SourceSize TargetSize createSource Parse Transform
50 28014 104550 00:00:00.04 00:00:00.04 00:00:00.12
100 55964 209100 00:00:00.03 00:00:00.05 00:00:00.23
500 279564 1045500 00:00:00.16 00:00:00.23 00:00:01.76
1000 559064 2091000 00:00:00.28 00:00:00.28 00:00:06.04
2000 1118064 4182000 00:00:00.34 00:00:00.42 00:00:24.43
5000 2795064 10455000 00:00:00.87 00:00:02.02 00:03:19.02I think this clearly shows the pattern.
Of course what this testing really shows is that you've clearly missed the point of performing XSLT transformation inside the database.
The idea behind database based transformation is to optimize XSLT processing by
(1), not having to parse the XML and build a DOM tree before commencing the XSLT processing. In this example this is not possible since the
XML is being created from a CLOB based XMLType, not a schema based XMLType.
(2) Leveraging the Lazily Loaded Virtual DOM when doing sparse transformation ( A Sparse transformation is one where there are large parts of the
source document that are not required to create the target document. Again in this case the XSL requires you to walk all the nodes to generate the
required output.
If is necessary to process all of the nodes in the source document to generate the entire output it probably makes more sense to use a midtier XSL engine.
Here's the code I used to generate the numbers in the above example
BTW in terms of BIG XML we've successully processed 12G documents with Schema Based Storage...So nothing you have hear comes any where our defintion of big.- 1 with Oracle 10g Express on Linux
Also, please remember that 9.2.0.1.0 is not a supported release for any XML DB related features.
SQL*Plus: Release 10.2.0.2.0 - Production on Fri Feb 10 07:44:59 2006
Copyright (c) 1982, 2005, Oracle. All Rights Reserved.
SQL> spool createDocument.log
SQL> --
SQL> connect &1/&2
Connected.
SQL> --
SQL> create or replace directory &1 as '&3'
2 /
old 1: create or replace directory &1 as '&3'
new 1: create or replace directory SCOTT as '/home/mdrake/bugs/xslTest'
Directory created.
SQL> drop table source_data_table
2 /
Table dropped.
SQL> create table source_data_table
2 (
3 fragCount number,
4 xml_text clob,
5 xml xmlType,
6 result clob
7 )
8 /
Table created.
SQL> create or replace procedure createDocument(fragmentCount number)
2 as
3 fragmentText clob :=
4 '<AFL LIGNUM="1999">
5 <mat>20000001683</mat>
6 <name>DOE</name>
7 <firstname>JOHN</firstname>
8 <name2>JACK</name2>
9 <SEX>MALE</SEX>
10 <birthday>1970-05-06</birthday>
11 <salary>5236</salary>
12 <code1>5</code1>
13 <code2>6</code2>
14 <code3>7</code3>
15 <date>2006-05-06</date>
16 <dsp>8.665</dsp>
17 <dsp_2000>455.45</dsp_2000>
18 <darr04>5.3</darr04>
19 <darvap04>6</darvap04>
20 <rcrr>8</rcrr>
21 <rcrvap>9</rcrvap>
22 <rcrvav>10</rcrvav>
23 <rinet>11.231</rinet>
24 <rmrr>12</rmrr>
25 <rmrvap>14</rmrvap>
26 <ro>15</ro>
27 <rr>189</rr>
28 <date2>2004-05-09</date2>
29 </AFL>';
30
31 xmlText CLOB;
32
33 begin
34 dbms_lob.createTemporary(xmlText,true,DBMS_LOB.CALL);
35 dbms_lob.write(xmlText,5,1,'<PRE>');
36 for i in 1..fragmentCount loop
37 dbms_lob.append(xmlText,fragmentText);
38 end loop;
39 dbms_lob.append(xmlText,xmlType('<STA><COD>TER</COD><MSG>Op?ation R?ssie</MSG></STA>').getClobVal());
40 dbms_lob.append(xmlText,'</PRE>');
41 insert into source_data_table (fragCount,xml_text) values (fragmentCount, xmlText);
42 commit;
43 dbms_lob.freeTemporary(xmlText);
44 end;
45 /
Procedure created.
SQL> show errors
No errors.
SQL> --
SQL> set timing on
SQL> --
SQL> call createDocument(50)
2 /
Call completed.
Elapsed: 00:00:00.04
SQL> call createDocument(100)
2 /
Call completed.
Elapsed: 00:00:00.03
SQL> call createDocument(500)
2 /
Call completed.
Elapsed: 00:00:00.16
SQL> call createDocument(1000)
2 /
Call completed.
Elapsed: 00:00:00.28
SQL> call createDocument(2000)
2 /
Call completed.
Elapsed: 00:00:00.34
SQL> call createDocument(5000)
2 /
Call completed.
Elapsed: 00:00:00.87
SQL> select fragCount dbms_lob.getLength(xmlText)
2 from sample_data_table
3 /
select fragCount dbms_lob.getLength(xmlText)
ERROR at line 1:
ORA-00923: FROM keyword not found where expected
Elapsed: 00:00:00.00
SQL> quit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL*Plus: Release 10.2.0.2.0 - Production on Fri Feb 10 07:45:01 2006
Copyright (c) 1982, 2005, Oracle. All Rights Reserved.
SQL> spool testcase_&3..log
SQL> --
SQL> connect &1/&2
Connected.
SQL> --
SQL> set timing on
SQL> --
SQL> update source_data_table
2 set xml = xmltype(xml_text)
3 where fragCount = &3
4 /
old 3: where fragCount = &3
new 3: where fragCount = 50
1 row updated.
Elapsed: 00:00:00.04
SQL> commit
2 /
Commit complete.
Elapsed: 00:00:00.01
SQL> update source_data_table
2 set result = xmltransform(xml,xmltype(bfilename(USER,'&4'),nls_charset_id('WE8ISO8859P1'))).getClobVal()
3 where fragCount = &3
4 /
old 2: set result = xmltransform(xml,xmltype(bfilename(USER,'&4'),nls_charset_id('WE8ISO8859P1'))).getClobVal()
new 2: set result = xmltransform(xml,xmltype(bfilename(USER,'k_xsl.xsl'),nls_charset_id('WE8ISO8859P1'))).getClobVal()
old 3: where fragCount = &3
new 3: where fragCount = 50
1 row updated.
Elapsed: 00:00:00.12
SQL> commit
2 /
Commit complete.
Elapsed: 00:00:00.01
SQL> select fragCount, dbms_lob.getLength(xml_text),dbms_lob.getLength(result)
2 from source_data_table
3 /
FRAGCOUNT DBMS_LOB.GETLENGTH(XML_TEXT) DBMS_LOB.GETLENGTH(RESULT)
50 28014 104550
100 55964
500 279564
1000 559064
2000 1118064
5000 2795064
6 rows selected.
Elapsed: 00:00:00.01
SQL> quit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL*Plus: Release 10.2.0.2.0 - Production on Fri Feb 10 07:45:02 2006
Copyright (c) 1982, 2005, Oracle. All Rights Reserved.
SQL> spool testcase_&3..log
SQL> --
SQL> connect &1/&2
Connected.
SQL> --
SQL> set timing on
SQL> --
SQL> update source_data_table
2 set xml = xmltype(xml_text)
3 where fragCount = &3
4 /
old 3: where fragCount = &3
new 3: where fragCount = 100
1 row updated.
Elapsed: 00:00:00.05
SQL> commit
2 /
Commit complete.
Elapsed: 00:00:00.01
SQL> update source_data_table
2 set result = xmltransform(xml,xmltype(bfilename(USER,'&4'),nls_charset_id('WE8ISO8859P1'))).getClobVal()
3 where fragCount = &3
4 /
old 2: set result = xmltransform(xml,xmltype(bfilename(USER,'&4'),nls_charset_id('WE8ISO8859P1'))).getClobVal()
new 2: set result = xmltransform(xml,xmltype(bfilename(USER,'k_xsl.xsl'),nls_charset_id('WE8ISO8859P1'))).getClobVal()
old 3: where fragCount = &3
new 3: where fragCount = 100
1 row updated.
Elapsed: 00:00:00.23
SQL> commit
2 /
Commit complete.
Elapsed: 00:00:00.03
SQL> select fragCount, dbms_lob.getLength(xml_text),dbms_lob.getLength(result)
2 from source_data_table
3 /
FRAGCOUNT DBMS_LOB.GETLENGTH(XML_TEXT) DBMS_LOB.GETLENGTH(RESULT)
50 28014 104550
100 55964 209100
500 279564
1000 559064
2000 1118064
5000 2795064
6 rows selected.
Elapsed: 00:00:00.01
SQL> quit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL*Plus: Release 10.2.0.2.0 - Production on Fri Feb 10 07:45:02 2006
Copyright (c) 1982, 2005, Oracle. All Rights Reserved.
SQL> spool testcase_&3..log
SQL> --
SQL> connect &1/&2
Connected.
SQL> --
SQL> set timing on
SQL> --
SQL> update source_data_table
2 set xml = xmltype(xml_text)
3 where fragCount = &3
4 /
old 3: where fragCount = &3
new 3: where fragCount = 500
1 row updated.
Elapsed: 00:00:00.12
SQL> commit
2 /
Commit complete.
Elapsed: 00:00:00.03
SQL> update source_data_table
2 set result = xmltransform(xml,xmltype(bfilename(USER,'&4'),nls_charset_id('WE8ISO8859P1'))).getClobVal()
3 where fragCount = &3
4 /
old 2: set result = xmltransform(xml,xmltype(bfilename(USER,'&4'),nls_charset_id('WE8ISO8859P1'))).getClobVal()
new 2: set result = xmltransform(xml,xmltype(bfilename(USER,'k_xsl.xsl'),nls_charset_id('WE8ISO8859P1'))).getClobVal()
old 3: where fragCount = &3
new 3: where fragCount = 500
1 row updated.
Elapsed: 00:00:01.76
SQL> commit
2 /
Commit complete.
Elapsed: 00:00:00.00
SQL> select fragCount, dbms_lob.getLength(xml_text),dbms_lob.getLength(result)
2 from source_data_table
3 /
FRAGCOUNT DBMS_LOB.GETLENGTH(XML_TEXT) DBMS_LOB.GETLENGTH(RESULT)
50 28014 104550
100 55964 209100
500 279564 1045500
1000 559064
2000 1118064
5000 2795064
6 rows selected.
Elapsed: 00:00:00.00
SQL> quit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL*Plus: Release 10.2.0.2.0 - Production on Fri Feb 10 07:45:04 2006
Copyright (c) 1982, 2005, Oracle. All Rights Reserved.
SQL> spool testcase_&3..log
SQL> --
SQL> connect &1/&2
Connected.
SQL> --
SQL> set timing on
SQL> --
SQL> update source_data_table
2 set xml = xmltype(xml_text)
3 where fragCount = &3
4 /
old 3: where fragCount = &3
new 3: where fragCount = 1000
1 row updated.
Elapsed: 00:00:00.28
SQL> commit
2 /
Commit complete.
Elapsed: 00:00:00.01
SQL> update source_data_table
2 set result = xmltransform(xml,xmltype(bfilename(USER,'&4'),nls_charset_id('WE8ISO8859P1'))).getClobVal()
3 where fragCount = &3
4 /
old 2: set result = xmltransform(xml,xmltype(bfilename(USER,'&4'),nls_charset_id('WE8ISO8859P1'))).getClobVal()
new 2: set result = xmltransform(xml,xmltype(bfilename(USER,'k_xsl.xsl'),nls_charset_id('WE8ISO8859P1'))).getClobVal()
old 3: where fragCount = &3
new 3: where fragCount = 1000
1 row updated.
Elapsed: 00:00:06.04
SQL> commit
2 /
Commit complete.
Elapsed: 00:00:00.00
SQL> select fragCount, dbms_lob.getLength(xml_text),dbms_lob.getLength(result)
2 from source_data_table
3 /
FRAGCOUNT DBMS_LOB.GETLENGTH(XML_TEXT) DBMS_LOB.GETLENGTH(RESULT)
50 28014 104550
100 55964 209100
500 279564 1045500
1000 559064 2091000
2000 1118064
5000 2795064
6 rows selected.
Elapsed: 00:00:00.00
SQL> quit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL*Plus: Release 10.2.0.2.0 - Production on Fri Feb 10 07:45:11 2006
Copyright (c) 1982, 2005, Oracle. All Rights Reserved.
SQL> spool testcase_&3..log
SQL> --
SQL> connect &1/&2
Connected.
SQL> --
SQL> set timing on
SQL> --
SQL> update source_data_table
2 set xml = xmltype(xml_text)
3 where fragCount = &3
4 /
old 3: where fragCount = &3
new 3: where fragCount = 2000
1 row updated.
Elapsed: 00:00:00.42
SQL> commit
2 /
Commit complete.
Elapsed: 00:00:00.02
SQL> update source_data_table
2 set result = xmltransform(xml,xmltype(bfilename(USER,'&4'),nls_charset_id('WE8ISO8859P1'))).getClobVal()
3 where fragCount = &3
4 /
old 2: set result = xmltransform(xml,xmltype(bfilename(USER,'&4'),nls_charset_id('WE8ISO8859P1'))).getClobVal()
new 2: set result = xmltransform(xml,xmltype(bfilename(USER,'k_xsl.xsl'),nls_charset_id('WE8ISO8859P1'))).getClobVal()
old 3: where fragCount = &3
new 3: where fragCount = 2000
1 row updated.
Elapsed: 00:00:24.43
SQL> commit
2 /
Commit complete.
Elapsed: 00:00:00.03
SQL> select fragCount, dbms_lob.getLength(xml_text),dbms_lob.getLength(result)
2 from source_data_table
3 /
FRAGCOUNT DBMS_LOB.GETLENGTH(XML_TEXT) DBMS_LOB.GETLENGTH(RESULT)
50 28014 104550
100 55964 209100
500 279564 1045500
1000 559064 2091000
2000 1118064 4182000
5000 2795064
6 rows selected.
Elapsed: 00:00:00.00
SQL> quit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL*Plus: Release 10.2.0.2.0 - Production on Fri Feb 10 07:45:36 2006
Copyright (c) 1982, 2005, Oracle. All Rights Reserved.
SQL> spool testcase_&3..log
SQL> --
SQL> connect &1/&2
Connected.
SQL> --
SQL> set timing on
SQL> --
SQL> update source_data_table
2 set xml = xmltype(xml_text)
3 where fragCount = &3
4 /
old 3: where fragCount = &3
new 3: where fragCount = 5000
1 row updated.
Elapsed: 00:00:02.02
SQL> commit
2 /
Commit complete.
Elapsed: 00:00:00.05
SQL> update source_data_table
2 set result = xmltransform(xml,xmltype(bfilename(USER,'&4'),nls_charset_id('WE8ISO8859P1'))).getClobVal()
3 where fragCount = &3
4 /
old 2: set result = xmltransform(xml,xmltype(bfilename(USER,'&4'),nls_charset_id('WE8ISO8859P1'))).getClobVal()
new 2: set result = xmltransform(xml,xmltype(bfilename(USER,'k_xsl.xsl'),nls_charset_id('WE8ISO8859P1'))).getClobVal()
old 3: where fragCount = &3
new 3: where fragCount = 5000
1 row updated.
Elapsed: 00:03:19.02
SQL> commit
2 /
Commit complete.
Elapsed: 00:00:00.01
SQL> select fragCount, dbms_lob.getLength(xml_text),dbms_lob.getLength(result)
2 from source_data_table
3 /
FRAGCOUNT DBMS_LOB.GETLENGTH(XML_TEXT) DBMS_LOB.GETLENGTH(RESULT)
50 28014 104550
100 55964 209100
500 279564 1045500
1000 559064 2091000
2000 1118064 4182000
5000 2795064 10455000
6 rows selected.
Elapsed: 00:00:00.04
SQL> quit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Production
With the Partitioning, OLAP and Data Mining options
bash-2.05b$ -
ORABPEL-09503 Invalid xpath expression in a CASE expression
Hi I have the following case statement in my BPEL process -
<switch name="checkAuthenticateResult">
<case condition="upper-case(string(bpws:getVariableData('g_InvokeAuthenticateTicketOutput','OutputParameters','/ns13:OutputParameters/X_RETURN_STATUS')))='S' AND upper-case(string(bpws:getVariableData('g_InvokeAuthenticateTicketOutput','OutputParameters','/ns13:OutputParameters/X_TKT_VALID')bpws:getVariableData('isAuthenticCaller'))) = 'T'">
<bpelx:annotation>
<bpelx:pattern>authenticatePass
</bpelx:pattern>
</bpelx:annotation>
<assign name="assignTktOutput">
<copy>
<from expression="boolean(bpws:getVariableData('g_InvokeAuthenticateTicketOutput','OutputParameters','/ns13:OutputParameters/X_TKT_VALID')='T')"/>
<to variable="outputVariable" part="payload" query="/client:WshSendTxnToOtmServiceProcessResponse/client:result/ns2:authenticated"/>
</copy>
</assign>
</case>
<otherwise>
<throw name="throwAuthenticateFail" faultVariable="g_faultVariable" faultName="faultError"/>
</otherwise>
</switch>
When I run my process in 10.1.2, it works fine, but when I run it in 10.1.3.1, it errors out with the following error -
<Faulthttp://schemas.xmlsoap.org/soap/envelope/>
<faultcode>env:Server</faultcode>
<faultstring>ORABPEL-09503 Invalid xpath expression. Error while parsing xpath expression "upper-case(string(bpws:getVariableData('g_InvokeAuthenticateTicketOutput','OutputParameters','/ns13:OutputParameters/X_RETURN_STATUS')))='S' AND upper-case(string(bpws:getVariableData('g_InvokeAuthenticateTicketOutput','OutputParameters','/ns13:OutputParameters/X_TKT_VALID')bpws:getVariableData('isAuthenticCaller'))) = 'T'", the reason is Unknown expression at EOF: upper-case(string(bpws:getVariableData('g_InvokeAuthenticateTicketOutput','OutputParameters','/ns13:OutputParameters/X_RETURN_STATUS')))='S' AND upper-case(string(bpws:getVariableData('g_InvokeAuthenticateTicketOutput','OutputParameters','/ns13:OutputParameters/X_TKT_VALID')bpws:getVariableData('isAuthenticCaller'))) = 'T'..
Please verify the xpath query "upper-case(string(bpws:getVariableData('g_InvokeAuthenticateTicketOutput','OutputParameters','/ns13:OutputParameters/X_RETURN_STATUS')))='S' AND upper-case(string(bpws:getVariableData('g_InvokeAuthenticateTicketOutput','OutputParameters','/ns13:OutputParameters/X_TKT_VALID')bpws:getVariableData('isAuthenticCaller'))) = 'T'" which is defined in BPEL process.
</faultstring><faultactor></faultactor></env:Fault></env:Body></env:Envelope>
Do you think there was a bug in the expression that has surfaced due to some additional validations in 10.1.3.1 or am I missing something here?
Thanks a lot for your help.
Thanks.
RVAND upper-case(string(bpws:getVariableData('g_InvokeAuthenticateTicketOutput','OutputParameters','/ns13:OutputParameters/X_TKT_VALID')bpws:getVariableData('isAuthenticCaller'))) = 'T'"
what is this bold part about? this looks wrong to me..
/clemens -
XPath Exception on Bursting Control File Template Filter Expression
I am getting the following exception for this bursting control file in EBS 11.5.10.2 on the template filter expression:
oracle.xml.parser.v2.XPathException: Unknown expression at EOF: (./XXCUS_DIST_CODE='P')[1].
<?xml version="1.0" encoding="UTF-8"?>
<xapi:requestset xmlns:xapi="http://xmlns.oracle.com/oxp/xapi">
<xapi:request select="/XXCUS_RAXINV/LIST_G_DIST/G_DIST">
<xapi:delivery>
<xapi:email server="${XXCUS_EMAIL_SERVER}" port="${XXCUS_EMAIL_PORT}" from="[email protected]">
<xapi:message id="einv" to="[email protected]" bcc="[email protected]" content-type="text/html" attachment="true" subject="Invoice ${LIST_G_INVOICE/G_INVOICE/TRX_NUMBER}">
<![CDATA[
<html>
<body>
Message
</body>
</html>
]]>
</xapi:message>
</xapi:email>
</xapi:delivery>
<xapi:document output="Invoice_${LIST_G_INVOICE/G_INVOICE/CUSTOMER_NUMBER}_${LIST_G_INVOICE/G_INVOICE/TRX_NUMBER}" output-type="pdf" delivery="einv">
<xapi:template type="xsl-fo" location="xdo://XXCUS.XXCUS_COMMON_RAXINV.en.US/?getSource=true" filter="./XXCUS_DIST_CODE='E'" />
</xapi:document>
</xapi:request>
<xapi:request select="/XXCUS_RAXINV/LIST_G_DIST/G_DIST">
<xapi:delivery>
<xapi:print id="print" printer="${XXCUS_PRINTER_NAME}" />
</xapi:delivery>
<xapi:document output-type="pdf" delivery="print">
<xapi:template type="xsl-fo" location="xdo://XXCUS.XXCUS_COMMON_RAXINV.en.US/?getSource=true" filter="./XXCUS_DIST_CODE='P'" />
</xapi:document>
</xapi:request>
</xapi:requestset>According to the docs, you can use any valid XPath expression. Any idea on what might be wrong here? I am trying to exclusively print or email based on the data. Currently, it prints AND emails all documents regardless of the value of XXCUS_DIST_CODE.
Thanks,
KurzError lies on this line --- filter="./XXCUS_DIST_CODE='P'"
you need to use it like this --
Suppose you want condition on name in following XML Struction
<STUDENT>
<Name> Jatin </NAME>
</STUDENT>
the it should be ...
filter=".//<STUDENT>[NAME = 'Jatin']"
Not in your case ui suppose it should be filter=".//XXCUS_RAXINV/LIST_G_DIST/G_DIST[XXCUS_DIST_CODE='P']".
Hope it solves the problem. -
Error while starting Discoverer Viewer on AIX
I have installed IAS 9i 1.0.2.2 on AIX. While running Discoverer
Viewer (http://host:port/discoverer4i/viewer) I receive:
oracle.xml.parser.v2.XPathException: Unknown expression at EOF:
*|/.
Thanks in advance for any suggestions.
best regards
Krzysztof JungowskiPl do not post duplicates - Error while starting discoverer 10g
-
I receive the following errors whenever I try to use xslt. I checked the file for strange characters and there are none. This happens with the delivered samples as well. I would appreciate any help.
Thanks,
Errors:
oracle.xml.parser.v2.XPathException: Unknown expression at EOF: text()|@*.
at oracle.xml.parser.v2.XSLExprBase.createPattern(XSLExprBase.java:170)
at oracle.xml.parser.v2.XSLTemplate.<init>(XSLTemplate.java:146)
at oracle.xml.parser.v2.XSLStylesheet.addBuiltInTemplate(XSLStylesheet.j
ava:671)
at oracle.xml.parser.v2.XSLStylesheet.initStylesheet(XSLStylesheet.java:
395)
at oracle.xml.parser.v2.XSLStylesheet.<init>(XSLStylesheet.java:147)
at WebQryFormatEngine.applyXSLtoXML(WebQryFormatEngine.java:50)
at testxslt.main(testxslt.java:40)<BLOCKQUOTE><font size="1" face="Verdana, Arial">quote:</font><HR>Originally posted by [email protected]:
I receive the following errors whenever I try to use xslt. I checked the file for strange characters and there are none. This happens with the delivered samples as well. I would appreciate any help.
Thanks,
Errors:
oracle.xml.parser.v2.XPathException: Unknown expression at EOF: text()|@*.
at oracle.xml.parser.v2.XSLExprBase.createPattern(XSLExprBase.java:170)
at oracle.xml.parser.v2.XSLTemplate.<init>(XSLTemplate.java:146)
at oracle.xml.parser.v2.XSLStylesheet.addBuiltInTemplate(XSLStylesheet.j
ava:671)
at oracle.xml.parser.v2.XSLStylesheet.initStylesheet(XSLStylesheet.java:
395)
at oracle.xml.parser.v2.XSLStylesheet.<init>(XSLStylesheet.java:147)
at WebQryFormatEngine.applyXSLtoXML(WebQryFormatEngine.java:50)
at testxslt.main(testxslt.java:40)<HR></BLOCKQUOTE>
Resolved the issue by turning off the jit flag on our AIX compiler.
Thanks -
Java XML Parser v2 xpath problem
I have a lot of trouble using the xpath functionality. I want to get the name of different elements. I'm using some xpath expressions which in my opinion should work (see http://www.w3.org/TR/xpath ), but they don't. I'm calling XMLNode.selectSingleNode.
For example :
/*/name()
name(/*[1])
name(/*)
name()
I've tried those with Saxon and they do work. Using the Oracle implementation an exception is thrown on most expressions. So what's wrong here?
Bye,
JanConsider this example
--- Test.java -----
import java.io.*;
import javax.xml.transform.sax.SAXSource;
import net.sf.saxon.sxpath.*;
import oracle.xml.parser.v2.*;
import org.w3c.dom.*;
import org.xml.sax.InputSource;
public class Test
public Test() {
try {
DOMParser domParser = new DOMParser();
domParser.parse(new FileReader("test.xml"));
XMLDocument document = domParser.getDocument();
InputSource is = new InputSource(new File("test.xml").toURL().toString());
SAXSource source = new SAXSource(is);
testXPathOracle(document,"count(//*)");
testXPathOracle(document,"name(/*)");
testXPathOracle(document,"name(/root)");
testXPathOracle(document,"/*/name()");
testXPathSaxon(source,"count(//*)");
testXPathSaxon(source,"name(/*)");
testXPathSaxon(source,"name(/root)");
testXPathSaxon(source,"/*/name()");
} catch(Exception e) {
System.out.println(e.getMessage());
public void testXPathOracle(XMLNode context, String xpath) {
try {
Node node = context.selectSingleNode(xpath);
System.out.println(node.getNodeValue());
} catch(Exception e) {
System.out.println(e.getMessage());
public void testXPathSaxon(SAXSource source, String xpath) {
try {
XPathEvaluator xpe = new XPathEvaluator();
XPathExpression exp = xpe.createExpression(xpath);
Object object = exp.evaluateSingle(source);
System.out.println(object);
} catch(Exception e) {
System.out.println(e.getMessage());
public static void main(String[] args) {
Test test = new Test();
--- test.xml -----
<root>
<element/>
</root>
Result is on my computer:
Unknown expression at EOF: (count(//*))[1].
Unknown expression at EOF: (name(/*))[1].
Unknown expression at EOF: (name(/root))[1].
Error in expression: '(/*/name())[1]'.
2
root
root
root
I think the xpath expressions are valid. So what's wrong? -
Te requirement is to send - 004010X095A1 in GS08 of 834 file (Outbound)
When I choose EDI , X12 , 4010 as the specification it generates 004010 in GS08
We are using BPEL , even if i override the internal properties , it still generates 004010 in GS08
So i have to choose EDI --> HIPAA --> 4010A1 --> 834A1
so that i can generate 004010X095A1 in GS08
But In the properties of the invoke for b2b adapter if I use
4010X095A1 as document protocol version , it is just faulting in the BPEL.
With th following error message.
="summary">
<summary>Invalid XPath expression. an error occurs while parsing XPath expression 4010X095A1. The XPath expression was invalid; the reason was: Unknown expression at EOF: 4010X095A1.. Check the detailed root cause described in the exception message text and verify that the XPath expression named in the error message is correct. The XPath expression is defined in the BPEL process. </summary>
How do i handle it ? Thank you for your responseThanks Anuj for your help. I used quotes and now it is not faulting in BPEL. The instance is created and is completed in bpel. But it is giving MSG_ERROR in b2b,
Error Brief : An error was reported from a JavaScript rule. An error was reported from a JavaScript rule. An error was reported from a JavaScript rule. An error was reported from a JavaScript rule. An error was reported from a JavaScript rule.
In the document editor when I click on the rules tab , I do see some javascript rules. But I dont know why they use this rules for .
Is there any possibility to generate 004010X095A1 in GS08 without using the HIPAA version of 834 ?
I appreciate your help. -
Please help me where and how to identify the error in RTF.
ConfFile: C:\Program Files\Oracle\BI Publisher\BI Publisher Desktop\Template Builder for Word\config\xdoconfig.xml
Font Dir: C:\Program Files\Oracle\BI Publisher\BI Publisher Desktop\Template Builder for Word\fonts
Run XDO Start
Template: D:\Users\vgarneni\Desktop\allocation\XXDL_CD_ALLOC_CERT_REPORT_v1.rtf
RTFProcessor setLocale: en-us
FOProcessor setData: D:\Users\vgarneni\Desktop\allocation\XXDL__CD_Allocation_Certificat_281111.xml
FOProcessor setLocale: en-us
Output type: MHTML
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at oracle.apps.xdo.common.xml.XSLT10gR1.invokeNewXSLStylesheet(Unknown Source)
at oracle.apps.xdo.common.xml.XSLT10gR1.transform(Unknown Source)
at oracle.apps.xdo.common.xml.XSLTWrapper.transform(Unknown Source)
at oracle.apps.xdo.template.fo.util.FOUtility.generateFO(Unknown Source)
at oracle.apps.xdo.template.fo.util.FOUtility.generateFO(Unknown Source)
at oracle.apps.xdo.template.FOProcessor.createFO(Unknown Source)
at oracle.apps.xdo.template.FOProcessor.generate(Unknown Source)
at RTF2PDF.runRTFto(RTF2PDF.java:629)
at RTF2PDF.runXDO(RTF2PDF.java:470)
at RTF2PDF.main(RTF2PDF.java:289)
Caused by: oracle.xdo.parser.v2.XPathException: Unknown expression at EOF: .//P_LIST_BY=' 'PROJECT' '.
at oracle.xdo.parser.v2.XSLProcessor.reportException(XSLProcessor.java:806)
at oracle.xdo.parser.v2.XSLProcessor.newXSLStylesheet(XSLProcessor.java:571)
... 14 moreIt appears to be related to some syntax error related to the code .//P_LIST_BY=' 'PROJECT' ' (Unknown expression at EOF: .//P_LIST_BY=' 'PROJECT' '.)
Why do you have double quotes when you are checking if the value equals 'PROJECT'. Try changing that to .//P_LIST_BY='PROJECT'
I would have to look at your template to ensure that the path is correct and see what you are trying to do.. You can send me the template and xml file to [email protected] and I can take a look.
Thanks,
Bipuser -
BIPublisher + Apex report problem with summary operator
I design report layout in Microsoft Word with Oracle BI Publisher Tempate Builder.
I need to sum two numbers:
2+2
then I create following statement (addition):
<?2+2?>
In PDF preview I see correct sum:
4
Next I save this report in RTF format and import it to APEX.
When I open this report in APEX I don't see any PDF report, because Acrobat Reader show me followin message:
"Adobe Reader could not open 'report.pdf' because it is either not a supported file type or because the file has been damaged..."
In log of BI Publisher I found this error:
[101507_093321781][][ERROR] [Line 281.40] Incorrect XPath: 2 2
[101507_093322140][oracle.apps.xdo.common.xml.XSLTWrapper][EXCEPTION] XSL error:
<Line 125, Column 101>: XML-22026: (Error) Unknown expression at EOF: 2 2.
[101507_093322140][][EXCEPTION] java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at oracle.apps.xdo.common.xml.XSLT10gR1.invokeNewXSLStylesheet(Unknown Source)
at oracle.apps.xdo.common.xml.XSLT10gR1.transform(Unknown Source)
at oracle.apps.xdo.common.xml.XSLTWrapper.transform(Unknown Source)
at oracle.apps.xdo.template.fo.util.FOUtility.generateFO(Unknown Source)
at oracle.apps.xdo.template.fo.util.FOUtility.generateFO(Unknown Source)
at oracle.apps.xdo.template.fo.util.FOUtility.generateFO(Unknown Source)
at oracle.apps.xdo.template.FOProcessor.createFO(Unknown Source)
at oracle.apps.xdo.template.FOProcessor.generate(Unknown Source)
at oracle.apps.xdo.servlet.Converter.process(Converter.java:302)
at oracle.apps.xdo.servlet.Converter.render(Converter.java:231)
at oracle.apps.xdo.servlet.Converter.doPost(Converter.java:95)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:824)
at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:330)
at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:830)
at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:224)
at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:133)
at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:192)
at java.lang.Thread.run(Thread.java:534)
Caused by: oracle.xdo.parser.v2.XPathException: Unknown expression at EOF: 2 2.
at oracle.xdo.parser.v2.XSLProcessor.reportException(XSLProcessor.java:806)
at oracle.xdo.parser.v2.XSLProcessor.newXSLStylesheet(XSLProcessor.java:571)
... 24 more
BTW, when I multiply numbers like this:
<?2*2?>
above problems doesn't exist.well i am facing the exact same problem in FOP too. Pdf is giving that message because the file u are generating is empty. I will keep u posted if i am able to solve this particular problem.......till then u can look up my posts to see if anything helps u.
-
XSL Error using OracleXMLQuery with XSLT params
Exception in thread "main" oracle.xml.sql.OracleXMLSQLException: nrvfpio.xsl
<Line 3, Column 1>: XSL-1026: (Error) Unknown expression at EOF: text()|@*.
at oracle.xml.sql.query.OracleXMLQuery.setXSLT(OracleXMLQuery.java:786)
at OracleXML.To_XML(OracleXML.java:1047)
at OracleXML.ExecuteGetXML(OracleXML.java:917)
at OracleXML.main(OracleXML.java:184)
stylesheet "nrvfpio.xsl" is valid. Here is it:
<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" />Chirag,
Create xslt on abap mapping using transaction SXLT_TOOL on XI abap stack. Copy paste same xslt code and run with test file. You can debug code or most likely you can see error message too.
Actually your mapping raising an exception which result in sys-fail.
Hope this will help.
Nilesh -
i am trying to do compound filter.
i want filter the records based on C_TAX_REPORTING_NAME,
When i applied filter at for each it is giving error
<xsl:for-each select="G_REP_TRX_DETAIL_INFO[C_TAX_REPORTING_NAME IN ($gds,$trng)]">
<Grupa3>
<P_Ua><xsl:value-of select="C_COUNTRY_CODE1"/></P_Ua>
<P_Ub><xsl:value-of select="C_VAT_TAX_REG_NUM"/></P_Ub>
<P_Uc><xsl:value-of select="sum(key('group', concat(C_VAT_TAX_REG_NUM,C_CUST_NAME,C_TAX_REPORTING_NAME))/C_FUNCTIONAL_TOTAL)" /></P_Uc>
</Grupa3>
</xsl:for-each>
it is giving below error:
XML-22019: (Error) Expected ']' instead of 'IN '.
even iam unable to do it in "if condtion" also,
<xsl:if test="C_TAX_REPORTING_NAME IN ($gds,$trng)">
</xsl:if>
it is giving the below error:
Unknown expression at EOF: C_TAX_REPORTING_NAME IN($gds,$trng).
Kindly advice where iam doing wrong
Thanks in advance
AnilIt looks you were written SQL not XSLT - I couldn't find the in syntax in my XSLT manual.
Though it seems you may want to use
(C_TAX_REPORTING_NAME = GDS) or (C_TAX_REPORTING_NAME = $trng)
I am not sure if you want to use a contains, which searches for substrings.
Klaus -
Is any number restriction on Parameter values
Hi,
defined below statements in header section.when i use 30daycredit giving error as "Unknown expression at EOF: 30dayCredit"
But when i use "thirtydaycredit" it's working fine.just want to check is any problem by using number in parameter values. how to declare parameter value with combination of numbers,spaces with special characters(%) or is any limitation to define values.
error for below combinations:
<?param@begin:PaymentTerms;’30dayCredit’;’string’;’30daycredit, PaymentAtSight ,100AdvancePayment, 60daycredit’?>
<?param@begin:PaymentTerms;’30 day Credit’;’string’;’30 day credit, Payment At Sight ,100% AdvancePayment, 60 day credit’?>
(working fine)
<?param@begin:PaymentTerms;’thirtydayCredit’;’string’;’thirtydaycredit, PaymentAtSight ,100AdvancePayment, 60daycredit’?>
Actually requirement is want to show below parameter with values:
Parameter Name: PaymentTerms
Values are :
100% Advance Payment
100% irrevocable letter of credit payable at sight
PaymentAtSight
100% payment at sight – Docs through bank
30 day credit
60 day credit
Payment against delivery
Please give me informaiton how to proceed this.
Thanks
-GantaHi BIpuser,
Thanks for information.
tried this "<?param@begin:PaymentTerms;string(’30 Day Credit’)?>". It's working for signal value. But more then one value giving error..
<?param@begin:PaymentTerms;string(’30 Day Credit,60 day Credit’)?>
I want to show multiple values for PaymentTerms . user has to choose values in Parameter applet.
I have another parameter which is working fine with below syntax in that case no spaces and numbers.
<?param@begin:OfficeAddr;’Bangalore’;’string’;’Ahmedabad,Bangalore,Chandigarh,Chennai,Delhi,Hyderabad,Kolkata,Mumbai,Pune,Lucknow’?>
Thanks
-ganta -
I have had nothing but problems trying to get XSQL working under IAS on my AIX system. I would like to get XSQL working under OC4J.
If I go to download XDK from technet, it's not avaialble for AIX. I wonder if I can use the "solaris" install??
If not, Can anyone help me transfer XSQL from IAS (Jserv) to OC4J
thanx-Raynier
nullAh, that would do it... I had placed my virtual directive inside another directive, and I did not realize it:
<?xml version="1.0"?>
<!DOCTYPE orion-web-app PUBLIC "-//Evermind//DTD Orion Web Application 2.3//EN" "http://xmlns.oracle.com/ias/dtds/orion-web.dtd">
<orion-web-app
deployment-version="1.0.2.2"
jsp-cache-directory="./persistence"
temporary-directory="./temp"
servlet-webdir="/servlet/"
<virtual-directory
virtual-path="/xsql"
real-path="/fs01/oc4j/xdk_9020B/xdk/demo/java/xsql/" />
>
</orion-web-app>
So I start it up ant there are no errors, and when I access http://drake:8888/xsql I get the following:
Oracle XSQL Servlet Page Processor 9.0.2.0.0B (Beta)
XSQL-011: Error processing XSLT stylesheet: home.xsl
file:/fs01/oc4j/xdk_9020B/xdk/demo/java/xsql/home/home.xsl: XSL-1013: (Error) Error in expression: '/site/tabs/@initial'.
Oracle XSQL Servlet Page Processor 9.0.2.0.0B (Beta)
XSQL-011: Error processing XSLT stylesheet: homecontent.xsl
file:/fs01/oc4j/xdk_9020B/xdk/demo/java/xsql/home/homecontent.xsl: XSL-1026: (Error) Unknown expression at EOF: page-content[@name='Help'].
Help... Feeling like a real dummy right now.. - Raynier -
XSLStylesheet initialization fails on AIX
The following program throws and exception when running on AIX (ibm jdk 1.3, 24 aug) and runs correctly on Linux (ibm jdk 1.3, 16 aug) so I suspect it's a bug. Is it a problem of the oracle xml library of of the jdk?
Thanks,
Andrej
import org.w3c.dom.*;
import java.util.*;
import java.io.*;
import java.net.*;
import oracle.xml.parser.v2.*;
public class XSLSample
public static void main(String[] args) throws Exception
URL url2 = new URL("file:test1.xsl");
XSLStylesheet xslsheet2 = new XSLStylesheet(url2,url2);
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
</xsl:stylesheet>
"XSLSample.java" 16 lines, 308 characters
$ javac XSLSample.java
$ java XSLSample
Exception in thread "main" oracle.xml.parser.v2.XPathException: Unknown expressi
on at EOF: text()|@*.
at java.lang.Throwable.<init>(Throwable.java:96)
at java.lang.Exception.<init>(Exception.java:44)
at oracle.xml.parser.v2.XSLException.<init>(XSLException.java:38)
at oracle.xml.parser.v2.XPathException.<init>(XPathException.java:34)
at oracle.xml.parser.v2.XSLExprBase.createPattern(XSLExprBase.java:170)
at oracle.xml.parser.v2.XSLTemplate.<init>(XSLTemplate.java:146)
at oracle.xml.parser.v2.XSLStylesheet.addBuiltInTemplate(XSLStylesheet.j
ava:671)
at oracle.xml.parser.v2.XSLStylesheet.initStylesheet(XSLStylesheet.java:
395)
at oracle.xml.parser.v2.XSLStylesheet.<init>(XSLStylesheet.java:213)
at XSLSample.main(XSLSample.java:14)
nullThanks Steven! You're correct. I turned off the JIT compiler on IBM's JDK and my code runs fine.
So, for anyone wanting to know how to turn off the JIT, I'll save you some effort.
Taken from http://www.as400.ibm.com/toolbox/nojit.htm
Different environments provide different mechanisms for turning off the JIT. Here are some of the most common scenarios.
Applications using JDK 1.1.5 and previous (Windows)
Use the -nojit option when running the java command. Example:
java -nojit QueryCustomer Lee Jeff
Applications using JDK 1.1.6 and later (Windows) or any non-Windows JDK
Set the JAVA_COMPILER environment variable to point to a non-existent JIT compiler, e.g. "nojit".
To turn off the JIT in the existing DOS prompt only (Windows):
set JAVA_COMPILER=nojit
To permanently turn off the JIT in Windows 95, add the above line to your AUTOEXEC.BAT file. In Windows NT, use the System Environment GUI to set the environment variable.
For other platforms, set the JAVA_COMPILER environment variable accordingly.
If you're running Korn Shell, here's the command:
export JAVA_COMPILER=nojit
Brent Stains
BAS Consulting Inc.
[email protected]
Maybe you are looking for
-
I am using iMovie 10.0.7 on a 1-week old iMac 27" running Yosemite 10.10.2. I migrated from iMovie 9 on a 2008 iMac running Snow Leopard and updated the libraries and events, etc. I have two external drives connected via USB. I want to move / consoli
-
How do I create a group of email contacts on my macbook air
How do I set up a group in my contacts for a large group that I use often, and then how to I use it. I tried setting up a group with everyone in the group, but then I tried typing in the name of the group but it will not work. I want to click on the
-
Hey guys I need inspiration this morning. I have built a big project in LabVIEW with several applications for different users. They all work on their project with one single number that follows the object thru the whole process in our company. All th
-
Hi, I have a very annoying problem with my new Nokia N97 mini. When I get a message from someone, my phone is only showing me the number of this person instead of showing me the name of the person. This is very annoying because I don't know all those
-
Javascript alert in Web Planning - timing when it pops up?
Hi all, Javascript alerts such as alert('Layout not available, check your header combinations?') are easy to set up using the text component (html=true) in the web interface builder. My problem is that when using 'Tabs' (tab component), if you naviga