It should be possible to define an XSLT transform to "flatten" output passed through by a procedure that accesses a web service. Currently, if one tries to define the XSLT transform into a cursor output (as from table or view), then all one gets is 1 row of NULLs. If the same data output is obtained from a view or a file, then the transform works correctly, but not from a procedure output.
Tibco support (and engineering?) replied: "we do not have a web service operation (API) in place which will perform XSLT transformation from a procedure."
This would be useful functionality, to allow procedure "wrappers" to access and/or fileter connections to (web service) data sources.
Thanks Juhan,
I reviewed the ticket and the CAR file submitted and can confirm that the idea suggested here is already implemented in TDV.
The reason it didn't work in your use case opened with support was because your procedure output a generic "XML" type rather than a specific schema. The output type definition in your procedure code must be "typed". That is, you cannot simply set the type to "XML", it must be defined to a specific XML schema type. For example in the CAR file submitted to support I noticed that your procedure was defined as follows:
PROCEDURE Get_Used_DataSources(IN IN_RESOURCE_PATH VARCHAR(255), OUT response XML, OUT fault XML)
The outputs are generic XML rather than typed to a specific XML schema. As long as they are typed to a specific XML schema type using the following syntax (In place of "XML" you would type something like this instead):
/path/to/Schema."{http://namespace/path}RootElementName"
IE:
PROCEDURE Get_Used_DataSources(IN IN_RESOURCE_PATH VARCHAR(255), OUT response /path/to/Schema."{http://namespace/path}RootElementName", OUT fault XML)
It might require a little digging to find the correct namespace and Element name in the XSD, but once you have it set correctly it should work. If you still cannot get it to work once you've set the specific schema type please re-open the ticket with support.
-Jeremy
The Tibco case# is 01682651; we are currently running 7.0.5, upgrading to 7.0.7
Hi Juhan,
I work as a TDV Consultant in the PSG group. This functionality should already be there. TDV treats CURSOR / PIPE outputs from procedures exactly the same as a CURSOR from a view. So any XSLT that you can define against a view should absolutely work against a procedure provided it has the same CUSROR structure.
Can you provide me the support case # that you opened?