XPath Expression won't evaluate
Hi,
I am using the ora:doc() function to read an xml and XPath to get extract particular values from it. The issue is that the XPath expression doesnt evaluate correctly on Oracle BPEL process manager where as the same expression is being evaluated correctly in XMLSPY with XPath 1.0.
The XML that I am trying to read is of the format
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2006 U (http://www.altova.com)-->
<n:CHNotification xmlns:n="http://www.example.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.org
C:\OraBPELPM_1\integration\jdev\jdev\mywork\BPELWorkspace\testXML\CallHomeNotification.xsd">
<Notification id="String">
<n:mailto>String</n:mailto>
<n:mailcc>String</n:mailcc>
<n:subject>String</n:subject>
<n:body>String</n:body>
<n:additionalbody>String</n:additionalbody>
</Notification>
<Notification id="String32432">
<n:mailto>String</n:mailto>
<n:mailcc>String</n:mailcc>
<n:subject>String</n:subject>
<n:body>String</n:body>
<n:additionalbody>String</n:additionalbody>
</Notification>
</n:CHNotification>
The function being used in OracleBPEL Process manager is
ora:doc('${server_url}/xmllib/notification.xml', //Notification[@id="String"]/n:mailto)
Can somebody please tell me where I could be going wrong?....It'll be a great help.
Thanks,
Gunjan
I have the same problem posted in the constants discussion
Hi
I am trying out the xml file solution. I have places an XML-file in the xmllib location. The file has the following content :
<?xml version="1.0" encoding="UTF-8">
<bpel-domain>
<preferences>
<property name="defaultRentepercentage"> 0.3 </property>
</preferences>
</bpel-domain>
In the Assign step in BPEL I do the following
orcl:lookup-xml('http://localhost:9700/orabpel/xmllib/trials-properties.xml', '/bpel-domain/preferences/property[@name="defaultRentepercentage"]')
The error I get when running this is the following
XPath expression failed to execute.
Error while processing xpath expression, the expression is "orcl:lookup-xml("http://localhost:9700/orabpel/xmllib/trials-properties.xml", "/bpel-domain/preferences/property[@name="defaultRentepercentage"]")", the reason is ExtFuncFunction.
Please verify the xpath query.
I have tried the xpath expression in XMLSpy, and there it seems to work
Am i missing something ?
Similar Messages
-
How to evaluate dynamic XPath expression in BPEL?
I have an xml file where I keep many settings for my BPEL process. At runtime, I read the file and I want to select values from it based on values in the process payload.
For example, imagine that the process payload is an order:
<order>
<header>
<id/>
<customer_id/>
<team_id/>
</header>
<items>
<item>
<id/>
<sku/>
<price/>
<quantity/>
</item>
</items>
</order>
Now, in my xml settings file, I have a section where I keep a mapping of "team_id" and "assignment_group", so that for each team id, I can select the appropriate group to whom a task should be assigned. The relevant section of the settings file will look something like this:
<assignment_groups>
<group team_id='0923230'>invoice_approvers</group>
<group team_id='3094303'>order_approvers</group>
<group team_id='3434355'>shipping_approvers</group>
</assignment_groups>
So, imagine I get an order input to my process where the team_id is '3094303'. Now I have to lookup the correct assignment group in my settings file.
So, I construct the dynamic XPath expression
/settings/assignment_groups/group[@team_id=3094303]
I know that this would evaluate to "order_approvers". However, even though I have the XPath expression in a BPEL variable, and I have my settings file as a BPEL variable also, I don't know how to execute the XPath expression against the settings BPEL variable to retrieve the correct value.
Any ideas appreciated.
Thanks,
JackJames:
Thank you for the response. Incidentally, this is the very same document and section that I have been looking at for guidance. Specifically, the section titled "Dynamically indexing by Constructing an XPath at Run Time" on page 12-13.
I tried to do something similar to the example at the top of page 13:
<variable name="iterator" type="xsd:integer"/>
<assign>
<copy>
<from expression="concat('/invoice/line-item[',bpws:getVariableData('iterator'), ']/line-total')"/>
<to variable="xpath"/>
</copy>
<copy>
<from expression="bpws:getVariableData('input', 'payload',bpws:getVariableData('xpath')) + ..."/>
</copy>
</assign>
I am able to achieve the first copy operation to get my dynamic XPath into a BPEL variable and that's fairly straightforward. But I am unable to get the second copy to work. Specifically, I am not sure what to put in the second argument of the bpws:getVariableData function. I have tried many different combinations, but when I try to compile my program, I get the following compilation error:
Error:
[Error ORABPEL-10902]: compilation failed
[Description]: in "C:\code\TrainingWS\SampleGetSettings\bpel\SampleGetSettings.bpel", XML parsing failed because "org.collaxa.thirdparty.jaxen.expr.DefaultFunctionCallExpr".
[Potential fix]: n/a.
Thanks,
Jack -
Evaluate XPath expression using SAXON/JAXP/JDOM
I have a somewhat unique requirement. Working on a legacy application with XML code / libraries littered all over the place. Trying to improve performance.
First requirement (to avoid massive refactoring):
Can I use Saxon to process Xpath Expressions using the JAXP apis (because this is what's used in the app currently) on JDOM documents?
I'm not familiar with saxon api enough....any help/code samples is appreciated.
Edited by: pojomojo on Jan 7, 2011 1:02 PMThe Saxon product/feature matrix from the Saxon website says you can: http://www.saxonica.com/feature-matrix.html.
-
I would like to be able to compare two xpath expressions and evaluate whether their result CAN have nodes in common.
For example:
expression 1: /ItemData[@ItemOID='A']
expression 2: /ItemData[@ItemOID='B']
would need to evaluate to 'false'
Other example:
expression 1: /ItemData[@ItemOID='A']
expression 2: /ItemData[@ItemOID='B or @ItemOID='A']
would need to evaluate to 'true'
Other example:
expression 1: /ItemData[@ItemOID='A']
expression 2: /ItemData[not(@ItemOID='B')]
would need to evaluate to 'true'
Other example:
expression 1: /ItemData[@ItemOID='A']
expression 2: /ItemData[not(@ItemOID='A'][not(@ItemOID='B']
would need to evaluate to 'false'
P.S. Sorry if the Xpath expressions do not show up 100% correctly in the above snippets - the editor is doing crazy ...
I would like to do such an evaluation without actually having an XML document (!).
Is this possible?
Did someone ever write a class for doing so ?
Many thanks
JozefXML4Pharma wrote:
Is this possible?As phrased probably. You would need to create a xpath parser then compare the parse trees for expression equivalency.
You might be able to find a xpath parser. The other part you would need to create yourself. -
Is there a Java API that parses XPath expressions and produces the resultant XPath tree in memory?
For example the xpath expression: /a/b[c/d]/e/f
will produce a tree with "a" as the root node, "b" as a sub-node, "c" and "e" as subnodes of "b" and so on.
I don't want one that is to be evaluate against and XML document. I just want the XPath Expression tree to be build in memory.
Thankshi,
look at javacc, a compiler very popular, with many examples.
Raymond -
Error: The result is empty for XPath expression
hi gurus
Following is my input sample data to BPEL process.
<ItemList>
<Item>
<Name>Music System</Name>
<Id>525</Id>
<Item>
<Name>Fog Light</Name>
<Id>325</Id>
<Item>
<Name>Tyres</Name>
<Id>325</Id>
<Item>
<Name>Neon Light Ring</Name>
<Id>325</Id>
</Item>
</Item>
</Item>
</Item>
</ItemList>
Here <ItemList> contains <Item>.
And <Item> contains <Name>,<Id> & <Item> element itself.
i have created proper XSD for this.
But When i try to fetch any value then using Assign Activityits gives runtime following error.
Error in evaluate from expression at line "36".The result is empty for the XPATH expression: /ns1:ItemList/ns1:Item/ns1:Name
Any suggestion..?
thanks
/mishitHere is my XSD.
<?xml version="1.0" encoding="windows-1252"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.example.org"
targetNamespace="http://www.example.org"
elementFormDefault="qualified" >
<xsd:element name="ItemList" type="ItemListType"/>
<xsd:element name="Total" type="TotalType"/>
<xsd:complexType name="ItemListType">
<xsd:sequence>
<xsd:element name="Item" type="ItemType"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ItemType">
<xsd:sequence>
<xsd:element name="Name" type="xsd:string"/>
<xsd:element name="Id" type="xsd:string"/>
<xsd:element name="Item" type="ItemType"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="TotalType">
<xsd:sequence>
<xsd:element name="TotalPrice" type="xsd:double"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
/mishit -
i need to select two "sect" by idtry {
// parse the XML as a W3C Document
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = builder.parse(new File("book1.xml"));
XPath xpath = XPathFactory.newInstance().newXPath();
String expression = "//chapter/sect[@id='secC'] | //chatpter/sect[@id='secA']"; //select two attributes (this don't works, why?)
// obtain the element as a node.
Node node = (Node)xpath.evaluate(expression, doc, XPathConstants.NODE);but using the same Xpath expression on xsl the expressions works
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<xsl:copy-of select="//chapter/sect[@id='secB']| //chapter/sect[@id='secC']"/>
</xsl:template>
</xsl:stylesheet>may xml file <chapter id="chapter1">
<sect id="secA">
<para id="a1">texto a1.</para>
<para id="a2">texto a2.</para>
<para id="a3">texto a3.</para>
</sect>
<sect id="secB">
<para id="b1">texto b1.</para>
<para id="b2">texto b2.</para>
<para id="b3">texto b3.</para>
</sect>
<sect id="secC">
<para id="c1">texto b1.</para>
<para id="c2">texto b2.</para>
<para id="c3">texto b3.</para>
</sect>
</chapter>can anyone help?The result of the query consists of two nodes. If you want to access both of them, use the NodeList type in place of the Node type:NodeList nodeList = (NodeList)xpath.evaluate(expression, doc, XPathConstants.NODESET);
-
XPATH expression to get Array node
Hi
I have a problem with an XPATH expression in BPEL. I want to get to a particular node in the following result set ..
<return xmlns:ns2="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns3="http://com.quion.taken.services/ITakenService.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:Array" ns2:arrayType="ns3:com_quion_dto_taken_BouwnotaVoorraadDTO[2]">
<item xsi:type="ns3:com_quion_dto_taken_BouwnotaVoorraadDTO">
<begunstigde xsi:type="xsd:string">Sjoerd</begunstigde>
<datum xsi:type="xsd:dateTime">2005-10-31T23:00:00.000Z</datum>
<bedrag xsi:type="xsd:string">1000.0</bedrag>
<geldLeningId xsi:type="xsd:string">4.0</geldLeningId>
<rekeningnummer xsi:type="xsd:string">1234</rekeningnummer>
<notaId xsi:type="xsd:string">1.0</notaId>
</item>
<item xsi:type="ns3:com_quion_dto_taken_BouwnotaVoorraadDTO">
<begunstigde xsi:type="xsd:string">Laszlo</begunstigde>
<datum xsi:type="xsd:dateTime">2005-10-31T23:00:00.000Z</datum>
<bedrag xsi:type="xsd:string">1.0</bedrag>
<geldLeningId xsi:type="xsd:string">4.0</geldLeningId>
<rekeningnummer xsi:type="xsd:string">5678</rekeningnummer>
<notaId xsi:type="xsd:string">2.0</notaId>
</item>
</return>
The first thing is that my variable in BPEL does not show the ïtem"level", it shows for example 'return/notaId'.
However I can get to the second node by keying in
EXPRESSION 1:
bpws:getVariableData('invokeGetBouwnotaVoorraadVoorLening_getBouwnotaVoorraadVoorLening_OutputVariable','return','/return/item[1]/notaId')
No I want to dynamically determine the particular node instance. I do this as follows [copied from the Array sample]:
EXPRESSION 2:
bpws:getVariableData('invokeGetBouwnotaVoorraadVoorLening_getBouwnotaVoorraadVoorLening_OutputVariable','return','/return/item[', bpws:getVariableData('i'),']/notaId')
BPEL throws the following error
assignNotaId (faulted)
[2005/11/09 09:49:36] Updated variable "invokeTaskManager_initiateTask_InputVariable" More...
<invokeTaskManager_initiateTask_InputVariable>
<part xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="payload">
<task xmlns="http://services.oracle.com/bpel/task">
<taskId />
<title />
<creationDate />
<creator />
<modifyDate />
<modifier />
<assignee>jstein</assignee>
<status />
<expired />
<expirationDate />
<duration />
<priority />
<template />
<customKey />
<conclusion />
<attachment />
</task>
</part>
</invokeTaskManager_initiateTask_InputVariable>
[2005/11/09 09:49:36] Error in evaluate <from> expression at line "172". The result is empty for the XPath expression : "bpws:getVariableData('invokeGetBouwnotaVoorraadVoorLening_getBouwnotaVoorraadVoorLening_OutputVariable','return','/return/item[', bpws:getVariableData('i'),']/notaId')".
[2005/11/09 09:49:36] "{http://schemas.xmlsoap.org/ws/2003/03/business-process/}selectionFailure" has been thrown. less
<selectionFailure xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/">
<part name="summary">
<summary>empty variable/expression result. xpath variable/expression expression "bpws:getVariableData('invokeGetBouwnotaVoorraadVoorLening_getBouwnotaVoorraadVoorLening_OutputVariable','return','/return/item[', bpws:getVariableData('i'),']/notaId')" is empty at line 172, when attempting reading/copying it. Please make sure the variable/expression result "bpws:getVariableData('invokeGetBouwnotaVoorraadVoorLening_getBouwnotaVoorraadVoorLening_OutputVariable','return','/return/item[', bpws:getVariableData('i'),']/notaId')" is not empty.</summary>
What is wrong with my expression 2?
Thanks
Jan WillemThis Example works fine for arrays that are part of a WSDL message.
But in 10.1.3.1 this does not work with a array that is part of an XSD declaration
for Example XSD snippet
<xsd:element name="itemList">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="1" ref="tns:Item" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
using the following in assign statement
<copy>
<from expression="concat('/ns9:itemList/ns9:Item[',string(bpws:getVariableData('index')),']')"/>
<to variable="idxXpath"/>
</copy>
<copy>
<from expression="bpws:getVariableData('OutputItemList',bpws:getVariableData('idxXpath'))"/>
<to variable="idx_item"/>
</copy>
gives a compiler error that is
Error(176):
[Error ORABPEL-10085]: invalid argument
[Description]: in line 176 of "D:\OnlineShopping_1\bpel\OnlineShopping.bpel", the second argument "bpws:getVariableData("idxXpath")" for getVariableData is not a literal expression.
[Potential fix]: Please correct the second argument, you might need to escape using single quote or " to make it literal.
Can anyone site the reason for the same or a possible solution?
Message was edited by:
user607972 -
Xpath expression for a custom SearchBoxEx WebPart to a DataFormWebPart
Hi all,
I have a custom search webpart that has asp controls that are used in my dataview (DataFormWebPart) for retreiving data. This data view has the xslt variable "Rows" with the following xpath expression:
<xsl:variable name="Rows" select="/dsQueryResponse/Rows/Row[
(contains(translate(@Title,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz'), translate($FilterName,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')) or $FilterName = '')]"/>
*<ParameterBinding Name="FilterName" Location="Control(txtName)" DefaultValue=""/>
This webpart searchs for people by their name. For example:
search for:
jose
results:
jose luis escudero
jorge jose torres
Ok, it works fine there, but what if I want to search for: jose escudero. There won't be any results because the search xpath expressions has a contains function for what you write in the textbox control.
So I think it should be splited by " " and searchs for the each word in the @Title column of the data source.
I don't master xpath expressions so I don't know how to code a correct xpath expression for that, any idea? I would greatly appreciate any help. Thanks.Hi betozg31,
According to your description, the point is that your Xpath code put the “jose escudero” search keyword as a unitary string. So your search would not return any results. I think
if you want to search result using two or more keywords ,you need to deal with the keywords firstly. Separating from the “jose escudero” search keyword , getting “jose” search keyword and “escudero” search keyword. Here is a simple code you
can have a look:
<xsl:if test="$FilterName =' ' ">
<xsl:variable name="Rows" select="/dsQueryResponse/Rows/Row[ $FilterName=' ']"/>
</xsl:if>
<xsl:variable name="FormatFN" select="lower-case(normalize-space($FilterName))"/>
<xsl:variable name="FormatT" select="lower-case(@Title)" />
<xsl:if test="matches($FormatFN,' ')">
<xsl:variable name="FilterNameBefore" select="substring-before($FormatFN,' ')"/>
<xsl:variable name="FilterNameAfter" select="substring-after($FormatFN,' ')"/>
<xsl:variable name="Rows" select="/dsQueryResponse/Rows/Row[ contains(contains($FormatT, $FilterNameBefore),$FilterNameAfter )]"/>
</xsl:if>
<xsl:if test="not(matches($FormatFN,' '))">
<xsl:variable name="Rows" select="/dsQueryResponse/Rows/Row[ contains($FormatT,$FormatFN)]"/>
</xsl:if>
Hope this helps!
Best Regards,
Eric
Eric Tao
TechNet Community Support -
Assigning JMS message in BPEL: The result is empty for the XPath expression
Hi,
My project, an Oracle BPEL 11g project, is reading an XML payload from a JMS queue. I would like to transform the message and assign the elements of the messages to other variables. But when I am doing that in the "assign" step, it raises an error: Error in evaluate <from> expression at line "63". The result is empty for the XPath expression : "/ns2:publishProject/payload/Message".
Even though I can see the message payload in the Audit with all the values.
To me it looks like a name space issue, but I could not find out how to correct it. Any hint will be a big help. Please let me know if you want to check the .xsd for the message.I publish a JMS message to a topic in one BPEL process and have another BPEL process read from the topic and start the flow. The problem I have is that the first process is writing fine to the topic, but the second process seems to be reading twice. I am seeing two instances of the second process in em.
Can anyone help? I am using JDev 11.1.1.1.0
Thanks -
We are using the OAGis schema and a client is sending us data in an expression instead of in the actual schema location using the <Get> portion of the schema.
<Get uniqueIndicator="true">
<Expression expressionLanguage="XPath">//Credit/FirstName[.="John"]</Expression>
<Expression expressionLanguage="XPath">//Credit/LastName[.="Smith"]</Expression>
</Get>What is the best way in BPEL to evaluate this xpath expression to set the FirstName to John and LastName to Smith? We are currently using a transform to parse each expression using XSLT into our database schema. It's not very elegant because it uses an if statement to check the path then has to parse out between the quotes then passes the value to the new var/schema.
It seems like there should be a way to evaluate the XPath and set the path to the noted string.
Thanks,This Example works fine for arrays that are part of a WSDL message.
But in 10.1.3.1 this does not work with a array that is part of an XSD declaration
for Example XSD snippet
<xsd:element name="itemList">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="1" ref="tns:Item" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
using the following in assign statement
<copy>
<from expression="concat('/ns9:itemList/ns9:Item[',string(bpws:getVariableData('index')),']')"/>
<to variable="idxXpath"/>
</copy>
<copy>
<from expression="bpws:getVariableData('OutputItemList',bpws:getVariableData('idxXpath'))"/>
<to variable="idx_item"/>
</copy>
gives a compiler error that is
Error(176):
[Error ORABPEL-10085]: invalid argument
[Description]: in line 176 of "D:\OnlineShopping_1\bpel\OnlineShopping.bpel", the second argument "bpws:getVariableData("idxXpath")" for getVariableData is not a literal expression.
[Potential fix]: Please correct the second argument, you might need to escape using single quote or " to make it literal.
Can anyone site the reason for the same or a possible solution?
Message was edited by:
user607972 -
XPath expression failed to execute.
Hi Everybody ,
I am working AIA PIP 3.1 for JDE E1.I am facing some errors so that i can't proceed.
See the log errors as below:
javax.xml.ws.soap.SOAPFaultException: XPath expression failed to execute. An error occurs while processing the XPath expression; the expression is ora:processXSLT('xsl/Xform_BillOfMaterialsListABM_to_BillOfMaterialsListAXML.xsl',bpws:getVariableData('InitialLoadBillOfMaterialsListReqMsg','InitialLoadBillOfMaterialsList'),bpws:getVariableData('Parameters')). The XPath expression failed to execute; the reason was: oracle.fabric.common.xml.xpath.XPathFunctionException: javax.xml.transform.TransformerException: oramds:/deployed-composites/default/InitialLoadBillOfMaterialsListJDEE1toAgileImpl_rev1.0/xsl/Xform_BillOfMaterialsListABM_to_BillOfMaterialsListAXML.xsl<Line 18, Column 271>: XML-22044: (Error) Extension function error: Error invoking 'lookupXRef':'oracle.tip.xref.exception.RepositoryException: lookup could not find values in column name "AGILE_01" for table name "oramds:/apps/AIAMetaData/xref/ITEM_ITEMID.xref" using reference column name "JDEE1_01" and reference value "731882::M30" Please ensure lookup criteria has a match.'. Check the detailed root cause described in the exception message text and verify that the XPath query is correct.
Please reply me ASAP,
Waiting for your response.....
Regards
Jyoti NayakHi,
Ya i checked the data for same table,but i didn't get any XREF related information in xref_data table.
Did you mean that, data should already present under AIAFPINST_XREF.Probably xref is meant for storing dynamic value.
Please check the above error and reply me soon.
With Regards
Jyoti Nayak -
Using the variable placeholder ? in an XPath expression
I'm trying to using the variable operator (?) in an Oracle prepared statement used in a query where clause. Here is the query:
select xt.APPLICATION_NAME, xt.VERSION, xt.EVENT_TYPE, xt.SENDING_SITE, xt.RECEIVING_SITE, xt.EVENT_ID
from AUDITED_EVENT_XML_MIN e,
XMLTable(XMLNAMESPACES('http://gov/va/med/datasharing/audit/endpoint/audit' AS "xae"),
'/xae:auditable-event'
PASSING e.xml_event_content
COLUMNS
APPLICATION_NAME VARCHAR2(255) PATH 'xae:application-name',
VERSION VARCHAR2(255) PATH 'xae:version',
EVENT_TYPE VARCHAR2(255) PATH 'xae:event-type',
SENDING_SITE VARCHAR2(255) PATH 'xae:xml-event-content/*/MSH/MSH.4/HD.2',
RECEIVING_SITE VARCHAR2(255) PATH 'xae:xml-event-content/*/MSH/MSH.6/HD.2',
EVENT_ID VARCHAR2(255) PATH 'xae:xml-event-content/*/MSH/MSH.10') xt
where existsNode(E.XML_EVENT_CONTENT, '/xae:auditable-event[xae:event-type=?]','xmlns:xae="http://gov/va/med/datasharing/audit/endpoint/audit"') = 1This code works when the ? is replaced with "aValue". I need to use the ? so that my Java client can pass a variable value into the query.
Is this a supportable feature or am I doing something wrong?
I didn't see any examples in the Oracle XML DB Developers Guide where there was a ? in an XPath expression.
I also tried "?" with the same issue...
Here is the version info:
SQL*Plus: Release 11.1.0.6.0 - Production on Mon Sep 10 18:41:55 2012
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing optionsAny assistance would be greatly appreciated.
Thanks in advance...
Edited by: flyeagle5683 on Sep 10, 2012 5:49 PMselect xt.APPLICATION_NAME, xt.VERSION, xt.EVENT_TYPE, xt.SENDING_SITE, xt.RECEIVING_SITE, xt.EVENT_ID
from AUDITED_EVENT_XML_MIN e,
XMLTable(XMLNAMESPACES('http://gov/va/med/datasharing/audit/endpoint/audit' AS "xae"),
'/xae:auditable-event'
PASSING e.xml_event_content
COLUMNS
APPLICATION_NAME VARCHAR2(255) PATH 'xae:application-name',
VERSION VARCHAR2(255) PATH 'xae:version',
EVENT_TYPE VARCHAR2(255) PATH 'xae:event-type',
SENDING_SITE VARCHAR2(255) PATH 'xae:xml-event-content/*/MSH/MSH.4/HD.2',
RECEIVING_SITE VARCHAR2(255) PATH 'xae:xml-event-content/*/MSH/MSH.6/HD.2',
EVENT_ID VARCHAR2(255) PATH 'xae:xml-event-content/*/MSH/MSH.10') xt
where XMLEXISTS(
'declarre namespace xae ="http://gov/va/med/datasharing/audit/endpoint/audit"; (: :)
$XML/xae:auditable-event[xae:event-type=$VALUE]'
passing e.xml_event_content as "XML",
:1 as "VALUE"
) or you can do
select xt.APPLICATION_NAME, xt.VERSION, xt.EVENT_TYPE, xt.SENDING_SITE, xt.RECEIVING_SITE, xt.EVENT_ID
from AUDITED_EVENT_XML_MIN e,
XMLTable(XMLNAMESPACES('http://gov/va/med/datasharing/audit/endpoint/audit' AS "xae"),
'/xae:auditable-event'
PASSING e.xml_event_content
COLUMNS
APPLICATION_NAME VARCHAR2(255) PATH 'xae:application-name',
VERSION VARCHAR2(255) PATH 'xae:version',
EVENT_TYPE VARCHAR2(255) PATH 'xae:event-type',
SENDING_SITE VARCHAR2(255) PATH 'xae:xml-event-content/*/MSH/MSH.4/HD.2',
RECEIVING_SITE VARCHAR2(255) PATH 'xae:xml-event-content/*/MSH/MSH.6/HD.2',
EVENT_ID VARCHAR2(255) PATH 'xae:xml-event-content/*/MSH/MSH.10') xt
WHERE EVENT_TYPE = :1Edited by: mdrake on Sep 10, 2012 7:23 PM
Edited by: mdrake on Sep 10, 2012 7:24 PM -
Using the variable ? operator in an XPath Expression
I'm trying to using the variable operator (?) in an Oracle prepared statement used in a query where clause. Here is the query:
select xt.APPLICATION_NAME, xt.VERSION, xt.EVENT_TYPE, xt.SENDING_SITE, xt.RECEIVING_SITE, xt.EVENT_ID
from AUDITED_EVENT_XML_MIN e,
XMLTable(XMLNAMESPACES('http://gov/va/med/datasharing/audit/endpoint/audit' AS "xae"),
'/xae:auditable-event'
PASSING e.xml_event_content
COLUMNS
APPLICATION_NAME VARCHAR2(255) PATH 'xae:application-name',
VERSION VARCHAR2(255) PATH 'xae:version',
EVENT_TYPE VARCHAR2(255) PATH 'xae:event-type',
SENDING_SITE VARCHAR2(255) PATH 'xae:xml-event-content/*/MSH/MSH.4/HD.2',
RECEIVING_SITE VARCHAR2(255) PATH 'xae:xml-event-content/*/MSH/MSH.6/HD.2',
EVENT_ID VARCHAR2(255) PATH 'xae:xml-event-content/*/MSH/MSH.10') xt
where existsNode(E.XML_EVENT_CONTENT, '/xae:auditable-event[xae:event-type=?]','xmlns:xae="http://gov/va/med/datasharing/audit/endpoint/audit"') = 1This code works when the ? is replaced with "aValue". I need to use the ? so that my Java client can pass a variable value into the query.
Is this a supportable feature or am I doing something wrong?
I didn't see any examples in the Oracle XML DB Developers Guide where there was a ? in an XPath expression.
I also tried "?" with the same issue...
Here is the version info:
SQL*Plus: Release 11.1.0.6.0 - Production on Mon Sep 10 18:41:55 2012
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing optionsAny assistance would be greatly appreciated.
Thanks in advance...I incorporated this suggestion and it worked very well. Thanks!
Now I have converted my solution to use a structured index. As such, I want to write the where clauses in terms of column names rather than XPath expressions.
I hoped it was as simple as changing the code that generates the XPath expression to generate a SQL expression. After making that change, I'm now getting this error:
Caused by: java.sql.SQLSyntaxErrorException: ORA-00920: invalid relational operator
at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:91)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:173)
at oracle.jdbc.driver.T2CConnection.checkError(T2CConnection.java:686)
at oracle.jdbc.driver.T2CConnection.checkError(T2CConnection.java:617)
at oracle.jdbc.driver.T2CPreparedStatement.executeForDescribe(T2CPreparedStatement.java:559)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1077)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1186)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3381)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3425)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1490)
at gov.va.med.datasharing.audit.dao.jdbc.runner.MapQueryRunner.run(MapQueryRunner.java:47)
at gov.va.med.datasharing.audit.web.dao.jdbc.AuditableEventsQueryDAOImpl.getAuditableEventsByDate(AuditableEventsQueryDAOImpl.java:150)It seemed to me that if it worked for the XPath expression that it should also work for the SQL expression.
The static SQL is:
SELECT PK_ID, EVENT_TYPE, OUTCOME, SENDING_SITE, RECEIVING_SITE, CREATED_TIME, EVENT_ID, PATIENT_ID FROM
(SELECT rownum as rn, PK_ID, EVENT_TYPE, OUTCOME, SENDING_SITE, RECEIVING_SITE, CREATED_TIME, EVENT_ID, PATIENT_ID FROM
(SELECT aet.AUDITABLE_EVENT_XML_PK_ID AS PK_ID, xt.EVENT_TYPE, xt.OUTCOME, xt.SENDING_SITE, xt.RECEIVING_SITE, aet.CREATED_TIME as CREATED_TIME, xt.EVENT_ID, xt.PATIENT_ID
FROM AUDITABLE_EVENT_XML aet,
XMLTable(XMLNAMESPACES('http://gov/va/med/datasharing/audit/endpoint/audit' AS "xae"),
'/xae:auditable-event'
PASSING aet.xml_event_content
COLUMNS
EVENT_TYPE VARCHAR2(255) PATH 'xae:event-type',
SENDING_SITE VARCHAR2(255) PATH 'xae:sending-site',
RECEIVING_SITE VARCHAR2(255) PATH 'xae:receiving-site',
EVENT_ID VARCHAR2(255) PATH 'xae:event-id',
PATIENT_ID VARCHAR2(255) PATH 'xae:patient-id',
OUTCOME VARCHAR2(255) PATH 'xae:outcome') xt
WHERE aet.CREATED_TIME BETWEEN ? AND ?
AND ?
) ORDER BY CREATED_TIME desc
) WHERE rn > ? and rn <= ?So I'm thinking that Oracle must perform strong checking in SQL, not allowing the '=' operator to be substituted. If I run this query in Toad, replacing the ? with the SQL, it runs fine...
Can someone tell me whether or not this is a legal substitution?
The SQL that runs in Toad is:
SELECT PK_ID, EVENT_TYPE, OUTCOME, SENDING_SITE, RECEIVING_SITE, CREATED_TIME, EVENT_ID, PATIENT_ID FROM
(SELECT rownum as rn, PK_ID, EVENT_TYPE, OUTCOME, SENDING_SITE, RECEIVING_SITE, CREATED_TIME, EVENT_ID, PATIENT_ID FROM
(SELECT aet.AUDITABLE_EVENT_XML_PK_ID AS PK_ID, xt.EVENT_TYPE, xt.OUTCOME, xt.SENDING_SITE, xt.RECEIVING_SITE, aet.CREATED_TIME as CREATED_TIME, xt.EVENT_ID, xt.PATIENT_ID
FROM AUDITABLE_EVENT_XML aet,
XMLTable(XMLNAMESPACES('http://gov/va/med/datasharing/audit/endpoint/audit' AS "xae"),
'/xae:auditable-event'
PASSING aet.xml_event_content
COLUMNS
EVENT_TYPE VARCHAR2(255) PATH 'xae:event-type',
SENDING_SITE VARCHAR2(255) PATH 'xae:sending-site',
RECEIVING_SITE VARCHAR2(255) PATH 'xae:receiving-site',
EVENT_ID VARCHAR2(255) PATH 'xae:event-id',
PATIENT_ID VARCHAR2(255) PATH 'xae:patient-id',
OUTCOME VARCHAR2(255) PATH 'xae:outcome') xt
WHERE aet.CREATED_TIME BETWEEN TO_DATE ('9/19/2011 12:00:01 AM','MM/DD/YYYY HH:MI:SS PM')
AND TO_DATE ('12/20/2012 12:00:00 AM','MM/DD/YYYY HH:MI:SS PM')
AND (OUTCOME=0 or OUTCOME=1)
) ORDER BY CREATED_TIME desc
) WHERE rn > 0 and rn <= 5;Any assistance will be appreciated,
Thanks in advance. -
Using xpath expressions in Document-Builder
Hi all
we have re-designed our (existing) DDX-templates with the Document Builder in LC Workbench. The DDX templates are used to assemble PDFs with LC Assembler-Service.
Now my question: Is it still possible to use XPath-expression in the DDX template? Please find our example below:
The XPath expression works only if we copy&paste the DDX source code directly to the Assembler-Service property view (picture below). But referring the DDX-template doens't interpret the xpath path at run time (2nd picture below). Any help on that will be appreciated!
Works (using DDX source code directly):
Doesn't work (using DDX template):Hi,
>
I tried to get a portion of an XML by using XPath Expressions as follows:
String xPathExpression =
"declare namespace xq='http://inti.notariado.org/indices' " +
"$this/xq:RULES/xq:RULE[@disabled]";
I think any XPath expressions which use [] are not supported in stand alone
version, but as this is not documented I could be wrong.
Regards
Arek
Maybe you are looking for
-
My Apple TV (2nd Generation) continually requests authorisation, even after my MacBook says I am authorised. Please can someone help?
-
Solaris 10, ftp file truncation
When I upload files/directories (binary) to my Solaris 10 system, occasionally the files get corrupted. Seems like some of the files are misssing several records at the beginning. I am using WS FTP Pro to upload the files from my PC to my Solaris 10
-
How to hide block on selection screen?
Hi All, I want to hide a block on the selection screen. I implemented the following logic to hide the block the fields are getting hided but the block is displayed. is there any way to hide block also. SELECTION-SCREEN BEGIN OF BLOCK processing WITH
-
Hi BCS Experts, I am BW consultant with accounting background and would like to learn BCS.Could you please send me some good BCS documentation except SAP material. I completed the SAP BCS course excercises. I dont have the confidence to start working
-
Can I use apple tv 2nd generation in the philippines?
I bought an apple tv 2nd generation in US and I'w like to know if it will work in the Philippines. My apple ID is also from Philippines. Thanks