You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在OIC SOAP响应映射器XSLT中移除命名空间?

在Oracle Integration Cloud (OIC) 中移除SOAP响应元素的命名空间

问题场景

你在OIC中构建的集成返回SOAP响应时,OIC会自动为响应元素添加urn:createDocumentNumber命名空间,导致BI Publisher解析失败。当前输出与预期输出的差异如下:

当前响应:

<CreateReserveDocResponse xmlns="urn:createDocumentNumber">อว 660201.1.3.3/25551</CreateReserveDocResponse>

预期响应:

<CreateReserveDocResponse>อว 660201.1.3.3/25551</CreateReserveDocResponse>

解决方案

可以通过调整XSLT转换逻辑,结合OIC的响应配置来彻底移除元素的命名空间,以下是两种可行方案:

方案1:优化XSLT转换逻辑

原XSLT使用<xsl:element>指定空命名空间,但可能因上下文继承或OIC默认处理未生效。改用以下XSLT,确保生成的元素完全脱离命名空间:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>

    <!-- 移除所有元素的命名空间 -->
    <xsl:template match="*">
        <xsl:element name="{local-name()}">
            <xsl:apply-templates select="@* | node()"/>
        </xsl:element>
    </xsl:template>

    <!-- 移除所有属性的命名空间 -->
    <xsl:template match="@*">
        <xsl:attribute name="{local-name()}">
            <xsl:value-of select="."/>
        </xsl:attribute>
    </xsl:template>

    <!-- 保留文本、注释等节点 -->
    <xsl:template match="text() | comment() | processing-instruction()">
        <xsl:copy/>
    </xsl:template>

    <!-- 生成目标响应结构 -->
    <xsl:template match="/">
        <CreateReserveDocResponse>
            <xsl:value-of select="$docNum"/>
        </CreateReserveDocResponse>
    </xsl:template>
</xsl:stylesheet>

方案2:调整OIC集成的响应配置

如果使用SOAP适配器作为响应端点,需确认以下配置:

  • 检查集成关联的WSDL,确保响应元素CreateReserveDocResponse未定义命名空间
  • 在OIC的响应映射环节,选择「使用自定义XSLT」并应用上述优化后的XSLT
  • 若为同步集成,在响应设置中选择「返回原始XML payload」,避免OIC自动注入命名空间

验证

应用上述方案后,测试集成的响应输出,确认<CreateReserveDocResponse>元素已无xmlns属性,即可解决BI Publisher的解析问题。

内容的提问来源于stack exchange,提问作者Abdullah Qaisar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 22:13:10