<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>XQUERY on DecipherMiddleware</title><link>https://blog.deciphermiddleware.in/tags/xquery/</link><description>Recent content in XQUERY on DecipherMiddleware</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Thu, 08 Apr 2021 19:22:00 +0000</lastBuildDate><atom:link href="https://blog.deciphermiddleware.in/tags/xquery/index.xml" rel="self" type="application/rss+xml"/><item><title>[OSB 12c][Tutorial] OSB 12c SOAP webservice for temperature conversion i.e. Celsius to Fahrenheit and vice versa</title><link>https://blog.deciphermiddleware.in/posts/osb-12ctutorial-osb-12c-soap-webservice/</link><pubDate>Thu, 08 Apr 2021 19:22:00 +0000</pubDate><guid>https://blog.deciphermiddleware.in/posts/osb-12ctutorial-osb-12c-soap-webservice/</guid><description>&lt;p&gt;This tutorial is intended for the audience who are completely new to OSB and want to try a simple hello world kind of application. Instead of sending and receiving &lt;strong&gt;Hello World!&lt;/strong&gt;. We will be using simple temperature conversion i.e. from Celsius to Fahrenheit and vice versa. We will be using simple Xquery to do all conversion and logic.&lt;/p&gt;
&lt;h3 id="high-level"&gt;High Level: &lt;a href="#high-level" class="anchor"&gt;🔗&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/da676403c2.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/da676403c2.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In this case, our OSB component will contain 2 parts proxy service and pipeline. Proxy service will expose SOAP endpoint to the client application and pipeline will perform various operations on input payload. Since this is just a Hello World application, we will not be using business services. XQuery will be used to implement mathematical logic and conditional logic. Service will take temperature as input and will perform either Fahrenheit to Celsius (FtoC) or Celsius to Fahrenheit (CtoF) temperature conversion. If the conversion type is invalid, then the service will return a failure status.&lt;/p&gt;
&lt;h3 id="mathematical-calculations"&gt;Mathematical Calculations: &lt;a href="#mathematical-calculations" class="anchor"&gt;🔗&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Let temperature in Fahrenheit be X℉ and temperature in Celsius be Y℃.&lt;/p&gt;
&lt;p&gt;Fahrenheit to Celsius (FtoC)&lt;/p&gt;
&lt;p&gt;X = (9/5*Y) + 32&lt;/p&gt;
&lt;p&gt;Celsius to Fahrenheit (CtoF)&lt;/p&gt;
&lt;p&gt;Y = (X-32)*5/9&lt;/p&gt;
&lt;h3 id="steps"&gt;Steps: &lt;a href="#steps" class="anchor"&gt;🔗&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;em&gt;Note: Jdeveloper 12c(12.2.1.4) is used for creating OSB artifacts.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;1. Click on File. Click on &lt;strong&gt;New&lt;/strong&gt; and then on &lt;strong&gt;Application&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/b808f86f72.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/b808f86f72.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2. Click on &lt;strong&gt;Service Bus Application with Service Bus Project&lt;/strong&gt;. Click on &lt;strong&gt;OK&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/dfd9026d9d.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/dfd9026d9d.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;3. Specify the &lt;strong&gt;Application Name&lt;/strong&gt; and click on &lt;strong&gt;Next&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/f3a9c6c5e2.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/f3a9c6c5e2.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;4. Specify the &lt;strong&gt;Project Name&lt;/strong&gt; and click on &lt;strong&gt;Finish&lt;/strong&gt;. Service Bus Application and Project will be created.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/23f9b29ad3.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/23f9b29ad3.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/23f9b29ad3.png"&gt;&lt;/a&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/d24a5916f8.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/d24a5916f8.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;5. Right-click on the project, click on New and then Click on &lt;strong&gt;XML Schema&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/b0fa135a2c.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/b0fa135a2c.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;6. Specify the File Name, Directory, and Target Namespace for the XML schema. Click on OK. A new schema file will be created.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/fb19f53dd6.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/fb19f53dd6.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;7. Replace content in the file with the below schema data.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xsd" data-lang="xsd"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;&amp;lt;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;windows-1252&amp;#34; ?&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;xsd:schema&lt;/span&gt; &lt;span class="na"&gt;xmlns:xsd=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;http://www.w3.org/2001/XMLSchema&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;xmlns=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;http://www.example.org&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;targetNamespace=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;http://www.example.org&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;elementFormDefault=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;qualified&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;xsd:element&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Request&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;xsd:complexType&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;xsd:sequence&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;xsd:element&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;temperature&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;xsd:double&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;xsd:element&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;unit&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;xsd:string&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;xsd:element&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;conversionType&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;xsd:string&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;/xsd:sequence&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;/xsd:complexType&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;/xsd:element&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;xsd:element&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Response&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;xsd:complexType&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;xsd:sequence&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;xsd:element&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;status&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;xsd:string&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;xsd:element&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;statusDescription&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;xsd:string&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;xsd:element&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;temperature&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;xsd:double&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;xsd:element&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;unit&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;xsd:string&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;/xsd:sequence&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;/xsd:complexType&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;/xsd:element&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;/xsd:schema&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;8. Drag and drop &lt;strong&gt;pipeline&lt;/strong&gt; from the component palette to &lt;strong&gt;Pipelines/Split Joins area&lt;/strong&gt;. &amp;ldquo;&lt;strong&gt;Create Pipeline Service&lt;/strong&gt; &amp;quot; window will appear.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8Za-Pu4bPS5YFxC5ZZW9JXsFd54OivT-Qhxc1zyT449U-W2VaqYcbZgp6qAtTqjlPYUmiRhwmjcjRyBRTT3lpG2ICXgnhqVXcBJI5nGOglv-1oLFf1wUuhw9hXtI5IHlVg-sNR9AdJ10/"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/0ada9bf2b5.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;6. Specify the name for the pipeline and click on Next.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/af24aeb250.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/af24aeb250.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;9. Select the WSDL radio button and click on create WSDL button.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/16114c9a99.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/16114c9a99.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;10. Use the schema created in&lt;strong&gt;step 7&lt;/strong&gt; and create WSDL using Create WSDL dialog box. Click on OK.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/080224a66d.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/080224a66d.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;11. The details will be populated. Check the &lt;strong&gt;Expose as a Proxy Service&lt;/strong&gt;. Specify the name of the proxy service and set Proxy Transport as HTTP. Click on Finish.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/7101e55c06.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/7101e55c06.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;12. Double Click on the pipeline.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/c1344e75c8.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/c1344e75c8.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The pipeline window will open as below.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/4115ab11f3.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/4115ab11f3.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;13. Drag pipeline pair from component pallet and drop below the entry point of the pipeline.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/695ff531a5.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/695ff531a5.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Pipeline pair will be added as below and 2 stages will be created, one each under request and response pipelines respectively.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/f3238663a3.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/f3238663a3.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;14. To implement transformation, we will be using XQuery. Create a new XQuery file with the name transformation_xquery.xqy under the Transformations folder.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-xquery" data-lang="xquery"&gt;xquery version &amp;#34;1.0&amp;#34; encoding &amp;#34;utf-8&amp;#34;;
(:: OracleAnnotationVersion &amp;#34;1.0&amp;#34; ::)
declare namespace ns1=&amp;#34;http://www.example.org&amp;#34;;
(:: import schema at &amp;#34;../temperature.xsd&amp;#34; ::)
declare variable $Request as element() (:: schema-element(ns1:Request) ::) external;
declare function local:func($Request as element() (:: schema-element(ns1:Request) ::)) as element() (:: schema-element(ns1:Response) ::) {
if($Request/ns1:conversionType =&amp;#39;CtoF&amp;#39;) then(
&amp;lt;ns1:Response&amp;gt;
&amp;lt;ns1:status&amp;gt;SUCCESS&amp;lt;/ns1:status&amp;gt;
&amp;lt;ns1:statusDescription&amp;gt;Converted to Fahrenheit unit!&amp;lt;/ns1:statusDescription&amp;gt;
&amp;lt;ns1:temperature&amp;gt;{(xs:double($Request/ns1:temperature) * 9.0 div 5.0)+32}&amp;lt;/ns1:temperature&amp;gt;
&amp;lt;ns1:unit&amp;gt;F&amp;lt;/ns1:unit&amp;gt;
&amp;lt;/ns1:Response&amp;gt;
)
else(
if($Request/ns1:conversionType =&amp;#39;FtoC&amp;#39;) then(
&amp;lt;ns1:Response&amp;gt;
&amp;lt;ns1:status&amp;gt;SUCCESS&amp;lt;/ns1:status&amp;gt;
&amp;lt;ns1:statusDescription&amp;gt;Converted to Celsius unit!&amp;lt;/ns1:statusDescription&amp;gt;
&amp;lt;ns1:temperature&amp;gt;{((xs:double($Request/ns1:temperature)-32)*5.0 div 9.0)}&amp;lt;/ns1:temperature&amp;gt;
&amp;lt;ns1:unit&amp;gt;C&amp;lt;/ns1:unit&amp;gt;
&amp;lt;/ns1:Response&amp;gt;
)
else(
&amp;lt;ns1:Response&amp;gt;
&amp;lt;ns1:status&amp;gt;FAILURE&amp;lt;/ns1:status&amp;gt;
&amp;lt;ns1:statusDescription&amp;gt;INVALID conversion type&amp;lt;/ns1:statusDescription&amp;gt;
&amp;lt;ns1:temperature&amp;gt;{$Request/ns1:temperature}&amp;lt;/ns1:temperature&amp;gt;
&amp;lt;ns1:unit&amp;gt;{$Request/ns1:unit}&amp;lt;/ns1:unit&amp;gt;
&amp;lt;/ns1:Response&amp;gt;
)
)
};
local:func($Request)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;15. Add Replace activity to response pipeline under Stage 1.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/06366c2a38.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/06366c2a38.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;16. Under replace properties, set location as the &lt;strong&gt;body&lt;/strong&gt;. Location expression as &amp;ldquo;.&amp;rdquo;. For value select &lt;strong&gt;XQuery resource&lt;/strong&gt;. A window will open. Update the values as shown below. Click on OK.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/bd9fa75a2d.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/bd9fa75a2d.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;17. Under &lt;strong&gt;Replace Option&lt;/strong&gt; , Select &amp;ldquo;&lt;strong&gt;Replace Node Contents&lt;/strong&gt; &amp;ldquo;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/92bb207e22.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/92bb207e22.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;18. Open the proxy service and specify the endpoint for the service or project.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/793782adac.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/793782adac.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The Endpoint URI will be the relative URI and the hostname will be added before Endpoint URI for the final URL i.e.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;strong&gt;http://&amp;lt;hostname&amp;gt;:&amp;lt;port&amp;gt;/&amp;lt;Endpoint-URI&amp;gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;19. We need to deploy the service to SBConsole. We can either create a jar and deploy it to the service bus console else we can directly deploy it from Jdeveloper if a server is configured in Jdevloper.&lt;/p&gt;
&lt;p&gt;20. Login to the Service Bus console. Open the proxy service. Click on the Green button to launch the test console.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/9e40476c3e.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/9e40476c3e.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;21. Specify the values for the XML elements and Click on Execute.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/77539b18ee.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/77539b18ee.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The service performs the temperature conversion based on inputs and returns the results as below.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/21d9cae768.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/21d9cae768.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We can test and play with different sets of values to check if the code is working fine and even enhance it further.&lt;/p&gt;
&lt;p&gt;Please share your valuable feedback in the comments section below 😊&lt;/p&gt;</description></item><item><title>Create Delimited String from XML Nodes and Vice Versa in SOA 12c</title><link>https://blog.deciphermiddleware.in/posts/create-delimited-string-or-xml-nodes/</link><pubDate>Fri, 25 Dec 2020 00:00:00 +0000</pubDate><guid>https://blog.deciphermiddleware.in/posts/create-delimited-string-or-xml-nodes/</guid><description>&lt;p&gt;A delimited string is a string representation of data separated by a delimiter(e.g. &amp;ldquo;,&amp;rdquo;). A simple representation of the delimited string will look like.&lt;/p&gt;
&lt;h2 id="delimited-string-examples"&gt;Delimited String Examples &lt;a href="#delimited-string-examples" class="anchor"&gt;🔗&lt;/a&gt;&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;Sample-1-- Delimiter as &amp;#34;,&amp;#34;
Value1,Value2,Value3
Sample-2-- Delimiter as &amp;#34;|&amp;#34;
Value1|Value2|Value3
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If we want to represent the above set of delimited values in the form of an XML document under some root and parent tag. The representation will look like this.&lt;/p&gt;
&lt;h3 id="xml-example"&gt;XML Example &lt;a href="#xml-example" class="anchor"&gt;🔗&lt;/a&gt;&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;root&lt;/span&gt; &lt;span class="na"&gt;xmlns=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;http://test.com/sample/xml&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;Values&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;value&amp;gt;&lt;/span&gt;Value1&lt;span class="nt"&gt;&amp;lt;/value&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;value&amp;gt;&lt;/span&gt;Value2&lt;span class="nt"&gt;&amp;lt;/value&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;value&amp;gt;&lt;/span&gt;Value3&lt;span class="nt"&gt;&amp;lt;/value&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;/Values&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;/root&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Sometimes we may need to convert values coming in delimited string to an xml document or vice versa. Since delimited string is similar to csv format. We can create a nxsd schema and then perform translate i.e. native to xml or xml to native within our SOA application. But in the scenarios wherein we just want to convert one delimited string to xml or recurring xml nodes to one delimited string, there we can make use of oracle xpath extension functions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.deciphermiddleware.in/2020/12/create-delimited-string-or-xml-nodes.html#1"&gt;oraext:create-nodeset-from-delimited-string()&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.deciphermiddleware.in/2020/12/create-delimited-string-or-xml-nodes.html#2"&gt;oraext:create-delimited-string()&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;xmlns:oraext=&amp;ldquo;&lt;a href="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc%22"&gt;http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc&amp;quot;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Both functions can be used in XSLT or BPEL assign activity. The above two mentioned examples will be used for explaining these 2 functions.&lt;/p&gt;
&lt;h2 id="oraextcreate-nodeset-from-delimited-string"&gt;oraext:create-nodeset-from-delimited-string() &lt;a href="#oraextcreate-nodeset-from-delimited-string" class="anchor"&gt;🔗&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;This function is used to create XML node set from delimited string. Basic syntax of the function is as below.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;oraext:create-nodeset-from-delimited-string ($qName, $delimitedString, $delimiter)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;$qName:&lt;/strong&gt; Qualified name of the node for each value to be created along with namespace. For e.g. &amp;lsquo;{http://test.com/sample/xml}value&amp;rsquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;$delimitedString:&lt;/strong&gt; String containing values delimited by a delimiter. Examples as above.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;$delimiter:&lt;/strong&gt; String representation of delimiter. For e.g. &amp;lsquo;,&amp;rsquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="sample-xslt-code"&gt;Sample XSLT code: &lt;a href="#sample-xslt-code" class="anchor"&gt;🔗&lt;/a&gt;&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xslt" data-lang="xslt"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;xsl:template&lt;/span&gt; &lt;span class="na"&gt;match&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;/&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;ns1:root&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;ns1:Values&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;xsl:copy-of&lt;/span&gt; &lt;span class="na"&gt;select&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;oraext:create-nodeset-from-delimited-string(&amp;#39;{http://test.com/sample/xml}value&amp;#39;,&amp;#39;Value1,Value2,Value3&amp;#39; , &amp;#39;,&amp;#39; )&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;ns1:Values&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;ns1:root&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;xsl:template&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Excluding, the XSL header for a better view. Please make sure all namespaces are properly imported in the XSL header.
The above code snippet will give output as above example.&lt;/p&gt;
&lt;h2 id="oraextcreate-delimited-string"&gt;oraext:create-delimited-string() &lt;a href="#oraextcreate-delimited-string" class="anchor"&gt;🔗&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;This function is used to convert nodes to delimited string. Below is the syntax of the function.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;oraext:create-delimited-string ($nodeSetValue, $delimiter)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;$nodeSetValue:&lt;/strong&gt; repetitive nodes or combination of nodes for which delimited string needs to be created. For e.g.&lt;/p&gt;
&lt;h3 id="xml-sample"&gt;XML Sample &lt;a href="#xml-sample" class="anchor"&gt;🔗&lt;/a&gt;&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;value&amp;gt;&lt;/span&gt;Value1&lt;span class="nt"&gt;&amp;lt;/value&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;value&amp;gt;&lt;/span&gt;Value2&lt;span class="nt"&gt;&amp;lt;/value&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;value&amp;gt;&lt;/span&gt;Value3&lt;span class="nt"&gt;&amp;lt;/value&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;$delimiter:&lt;/strong&gt; String representation of delimiter. For e.g. &amp;lsquo;,&amp;rsquo;&lt;/p&gt;
&lt;p&gt;Sample code using the above sample&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xsl" data-lang="xsl"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;lt;!--&amp;#39;,&amp;#39; as delimiter--&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;xsl:value-of&lt;/span&gt; &lt;span class="na"&gt;select=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;oraext:create-delimited-string ($nodeSet/ns1:Values/ns1:value, &amp;#39;,&amp;#39;)&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;lt;!--&amp;#39;|&amp;#39; as delimiter--&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;xsl:value-of&lt;/span&gt; &lt;span class="na"&gt;select=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;oraext:create-delimited-string ($nodeSet/ns1:Values/ns1:value, &amp;#39;|&amp;#39;)&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;xmlns:ns1=&amp;ldquo;&lt;a href="http://test.com/sample/xml%22"&gt;http://test.com/sample/xml&amp;quot;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Here &lt;strong&gt;$nodeSet&lt;/strong&gt; contains the XML data as represented in above example. Above XSL snippets will yield results as shown in &lt;a href="#delimited-string-examples"&gt;delimited string samples&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>XML to String and String to XML conversion</title><link>https://blog.deciphermiddleware.in/posts/xml-to-string-and-string-to-xml/</link><pubDate>Thu, 24 Sep 2020 00:00:00 +0000</pubDate><guid>https://blog.deciphermiddleware.in/posts/xml-to-string-and-string-to-xml/</guid><description>&lt;h2 id="use-cases"&gt;Use Cases &lt;a href="#use-cases" class="anchor"&gt;🔗&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Many a times, we may need to convert xml data and pass it as a string inside an XML tag.&lt;/li&gt;
&lt;li&gt;Sometimes from source, we get data which is in string format but actually is xml encoded in string format.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;To do so in Oracle BPEL 12c or OSB 12c we can use built in functions.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="xml-data-to-string"&gt;XML data to String &lt;a href="#xml-data-to-string" class="anchor"&gt;🔗&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="sample-input"&gt;Sample input &lt;a href="#sample-input" class="anchor"&gt;🔗&lt;/a&gt;&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;inRoot&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;t1&amp;gt;&lt;/span&gt;Hello&lt;span class="nt"&gt;&amp;lt;/t1&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;t2&amp;gt;&lt;/span&gt;World&lt;span class="nt"&gt;&amp;lt;/t2&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;t3&amp;gt;&lt;/span&gt;One&lt;span class="nt"&gt;&amp;lt;/t3&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;/inRoot&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="sample-output"&gt;Sample output &lt;a href="#sample-output" class="anchor"&gt;🔗&lt;/a&gt;&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;outRoot&amp;gt;&lt;/span&gt; &lt;span class="nt"&gt;&amp;lt;t1&amp;gt;&lt;/span&gt;&lt;span class="ni"&gt;&amp;amp;lt;&lt;/span&gt;inRoot&lt;span class="ni"&gt;&amp;amp;gt;&amp;amp;lt;&lt;/span&gt;t1&lt;span class="ni"&gt;&amp;amp;gt;&lt;/span&gt;Hello&lt;span class="ni"&gt;&amp;amp;lt;&lt;/span&gt;/t1&lt;span class="ni"&gt;&amp;amp;gt;&amp;amp;lt;&lt;/span&gt;t2&lt;span class="ni"&gt;&amp;amp;gt;&lt;/span&gt;World&lt;span class="ni"&gt;&amp;amp;lt;&lt;/span&gt;/t2&lt;span class="ni"&gt;&amp;amp;gt;&amp;amp;lt;&lt;/span&gt;t3&lt;span class="ni"&gt;&amp;amp;gt;&lt;/span&gt;One&lt;span class="ni"&gt;&amp;amp;lt;&lt;/span&gt;/t3&lt;span class="ni"&gt;&amp;amp;gt;&amp;amp;lt;&lt;/span&gt;/inRoot&lt;span class="ni"&gt;&amp;amp;gt;&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/t1&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;/outRoot&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="xslt"&gt;XSLT &lt;a href="#xslt" class="anchor"&gt;🔗&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;This can be accomplished by using the function oraext:get-content-as-string(element as node-set). This function is really helpful when we are working on BPEL as we can use this function in ASSIGN activity or in TRANSFORM activity using XSLT.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;xmlns:oraext&lt;/strong&gt;=&amp;ldquo;&lt;a href="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc%22"&gt;http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc&amp;quot;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;element as node-set:&lt;/strong&gt; xml data(can be variable, xpath, or a function that returns xml data)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="example"&gt;Example: &lt;a href="#example" class="anchor"&gt;🔗&lt;/a&gt;&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xslt" data-lang="xslt"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;outRoot&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;t1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;xsl:value-of&lt;/span&gt; &lt;span class="na"&gt;select&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;oraext:get-content-as-string(/ns0:inRoot)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;/&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;t1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;outRoot&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="xquery"&gt;XQuery &lt;a href="#xquery" class="anchor"&gt;🔗&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Xquery too have a function to convert xml to string i.e. &lt;strong&gt;fn-bea:serialize($arg as item()*)&lt;/strong&gt; as xs:string. This function is really helpful when we are dealing with OSB.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;xmlns:fn-bea=&amp;ldquo;&lt;a href="http://www.bea.com/xquery/xquery-functions%22"&gt;http://www.bea.com/xquery/xquery-functions&amp;quot;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;$arg: Variable containing XML data.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="example-1"&gt;Example: &lt;a href="#example-1" class="anchor"&gt;🔗&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;$input contains xml data that needs to be converted and assigned to one tag in output payload.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;outRoot&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;t1&amp;gt;&lt;/span&gt;{fn-bea:serialize($input)}&lt;span class="nt"&gt;&amp;lt;/t1&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;/outRoot&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="string-to-xml"&gt;String to XML &lt;a href="#string-to-xml" class="anchor"&gt;🔗&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="sample-input-1"&gt;Sample input &lt;a href="#sample-input-1" class="anchor"&gt;🔗&lt;/a&gt;&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;&amp;#39;&amp;amp;lt;inRoot&amp;amp;gt;&amp;amp;lt;t1&amp;amp;gt;Hello&amp;amp;lt;/t1&amp;amp;gt;&amp;amp;lt;t2&amp;amp;gt;World&amp;amp;lt;/t2&amp;amp;gt;&amp;amp;lt;t3&amp;amp;gt;One&amp;amp;lt;/t3&amp;amp;gt;&amp;amp;lt;/inRoot&amp;amp;gt;&amp;#39;
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="sample-output-1"&gt;Sample output &lt;a href="#sample-output-1" class="anchor"&gt;🔗&lt;/a&gt;&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;inRoot&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;t1&amp;gt;&lt;/span&gt;Hello&lt;span class="nt"&gt;&amp;lt;/t1&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;t2&amp;gt;&lt;/span&gt;World&lt;span class="nt"&gt;&amp;lt;/t2&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;t3&amp;gt;&lt;/span&gt;One&lt;span class="nt"&gt;&amp;lt;/t3&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;/inRoot&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;As we can see in above example that &amp;lt; and &amp;gt; are replaced with &amp;amp;lt; and &amp;amp;gt;. In xml &amp;lt; and &amp;gt; are invalid characters and escaper characters are used in place of these.&lt;/p&gt;
&lt;h2 id="xslt-1"&gt;XSLT &lt;a href="#xslt-1" class="anchor"&gt;🔗&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;In xslt, we can use built in function &lt;strong&gt;oraext:parseXML(stringData)&lt;/strong&gt;.This function is really helpful when we are working on BPEL as we can use this function in ASSIGN activity or in TRANSFORM activity using XSLT.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;xmlns:oraext=&amp;ldquo;&lt;a href="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc%22"&gt;http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc&amp;quot;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;stringData: string value of xml data.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="example-2"&gt;Example: &lt;a href="#example-2" class="anchor"&gt;🔗&lt;/a&gt;&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xslt" data-lang="xslt"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;xsl:copy-of&lt;/span&gt; &lt;span class="na"&gt;select&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;oraext:parseXML(&amp;#39;&amp;amp;lt;inRoot&amp;amp;gt;&amp;amp;lt;t1&amp;amp;gt;Hello&amp;amp;lt;/t1&amp;amp;gt;&amp;amp;lt;t2&amp;amp;gt;World&amp;amp;lt;/t2&amp;amp;gt;&amp;amp;lt;t3&amp;amp;gt;One&amp;amp;lt;/t3&amp;amp;gt;&amp;amp;lt;/inRoot&amp;amp;gt;&amp;#39;)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;Note: we have used copy-of instead of value-of as we need all the xml nodes to be copied to the target file. If we want to extract the data from xml without xml tags then we can use value-of.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="xquery-1"&gt;XQuery &lt;a href="#xquery-1" class="anchor"&gt;🔗&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;In xquery, we can use fn-bea:inlinedXML($arg as xs:string) as node()*. This function is really helpful when we are dealing with OSB.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;xmlns:fn-bea=&amp;ldquo;&lt;a href="http://www.bea.com/xquery/xquery-functions%22"&gt;http://www.bea.com/xquery/xquery-functions&amp;quot;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;$arg: variable containing xml data in string format.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="example-3"&gt;Example: &lt;a href="#example-3" class="anchor"&gt;🔗&lt;/a&gt;&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;fn-bea:inlinedXML(&amp;#39;&amp;amp;lt;inRoot&amp;amp;gt;&amp;amp;lt;t1&amp;amp;gt;Hello&amp;amp;lt;/t1&amp;amp;gt;&amp;amp;lt;t2&amp;amp;gt;World&amp;amp;lt;/t2&amp;amp;gt;&amp;amp;lt;t3&amp;amp;gt;One&amp;amp;lt;/t3&amp;amp;gt;&amp;amp;lt;/inRoot&amp;amp;gt;&amp;#39;)
&lt;/code&gt;&lt;/pre&gt;</description></item></channel></rss>