XQuery to make two tags from a single tag

Hi all

I use OSB 11 g. I get an XML like this:

< DOC >
< INFO >
< ATTRIBUTE ID = "name" >
ABCD < VALUE > < / VALUE >
< / ATTRIBUTE >
<! - option - >
< ATTRIBUTE ID = 'date' >
< VALUE >
29/09/09
19/09/11
< / VALUE >
< / ATTRIBUTE >
<! - option - >
< ATTRIBUTE ID = "accNo" >
< VALUE > 823748923987 < / VALUE >
< / ATTRIBUTE >
<! - option - >
< ATTRIBUTE ID = "address" >
< VALUE > XYZW < / VALUE >
< / ATTRIBUTE >
< / INFO >
< / DOC >

Only when the ID = "date", I want to change the ATTRIBUTE tag like
< ATTRIBUTE ID = 'date' >
< VALUE > 29/09/09 < / VALUE >
< VALUE > 19/09/11 < / VALUE >
< / ATTRIBUTE >

Y at - it no XQuery to do this in OSB?

Help, please!

Thanks in advance!

Kind regards
Knockaert

Try this: -.

Assign [ ...]

to [finalValueDate]
          
     
For each [attribute] [./*:doc/*:info /...]
./*:DOC/*:INFO/*:ATTRIBUTE
[body]
Indexed by [undefined Variable] with countdown in [undefined Variable]
Do)
          
If ([$attribute/@ID...]
$attribute/@ID = "date".
)
then)
     
     
          
     
     
Assign [fn: normalize-sp...]
FN:Normalize-Space($attribute/*:value/Text())
on the [date]

Replace [content of the node] [. / * [1]]
./*[1]
in [finalValueDate] with [fn:substring($d...)]
FN: Substring($date, 1, 8)
          
     
Replace [content of the node] [. / * [2]]
./*[2]
in [finalValueDate] with [fn:substring($d...)]
FN: Substring($date, 10, 8)

[Replace [whole node] of [". / / ATTRIBUTE[@ID="date "]]
. ["/ / ATTRIBUTE[@ID="date "]
in [body] with [ ...]
{$finalValueDate / * [1] / text ()} {$finalValueDate / * [2] / text ()}
)
)
          
It worked for me. I got the following response:


     
     
     ABCD
     

     
     
     29/09/09
     19/09/11
     

     
     
     823748923987
     

     
     
     XYZW
     

     

     

Tags: Fusion Middleware

Similar Questions