This makes life difficult, especially if these are environment-dependent values.
Waiting for Oracle to provide a decent way to externalize variables in a property file and read it from OSB (you can do that with a Custom XPath.... but the problem is that the property file would not be visible/editable from the OSB console, which is a pity...)...
you can use this approach:
xquery version "1.0" encoding "Cp1252"; declare namespace xf = "http://tempuri.org/OSBProject1/getProperty/"; declare function xf:getProperty($propertyName as xs:string) as xs:string { let $properties := <properties> <stageErrorDirectory>bla</stageErrorDirectory> <targetErrorDirectory>bla</targetErrorDirectory> </properties> let $match := $properties//*[name()=$propertyName] return if ($match) then $match/text() else fn:error(xs:QName('IllegalArgument'), $propertyName) }; declare variable $propertyName as xs:string external; xf:getProperty($propertyName)
This code shows also 2 interesting things:
- how to find a node with a given element name (using *[name()='something'] )
- how to raise a well readable error message with fn:error()
No comments:
Post a Comment