传递给请求信封的 Oracle OSB cdata

Oracle OSB cdata passed to reqest envelope

我必须将一些 xml 结构传递到插入到 soap:Envelope 结构中的 cdata 中。现在我有一些生成 xml 结构的函数:

declare function local:getRequest($bd as element(fml:FML32)) as element (request)
{
<request>
    <requestAttributes>
    ...
    </requestAttributes>
</request>
};  

当我尝试序列化这些数据时

<soapenv:Body>
<Request>
    <requestId>{data(...)}</requestId>
    <templateList>
        <template>
            <type>{data(...)}</type>
    <data>
        { fn-bea:serialize(fn:concat('<![CDATA[',fn-bea:serialize(local:getRequest($body)),']]>'))} 
    </data>
     </template>
    </templateList>
</Request>
</soapenv:Body>

结果(目标服务中可见的数据)是这样的:

<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
    <Header/>
    <soapenv:Body>
        <Request>
            <requestId>...</requestId>
            <templateList>
                <template>
                    <type>...</type>
                    <data>
                        &lt;![CDATA[&lt;tns:request&gt;&lt;requestAttributes&gt;...&lt;/requestAttributes&gt;&lt;/request&gt;]]&gt;
                    </data>
                </template>
            </templateList>
        </Request>
    </soapenv:Body>
</Envelope>

有没有可能得到这样的结果:

<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
    <Header/>
    <soapenv:Body>
        <Request>
            <requestId>...</requestId>
            <templateList>
                <template>
                    <type>...</type>
                    <data>
                        <![CDATA[<tns:request><requestAttributes>...</requestAttributes></request>]]>
                    </data>
                </template>
            </templateList>
        </Request>
    </soapenv:Body>
</Envelope> 

如何替换(使用 xuery)转义字符和 lt;并且gt;到 < > ?

显然,自从 11.1.1.3 中的编辑器现在自动设置 CDATA 定义以来,OSB 中的 XPath 表达式编辑器已经有了更新。

尝试:

{fn-bea:serialize(local:getRequest($body))}

引用Jan Van Zoggel