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

为何我的XSLT未向<soapenv:Envelope>元素添加第二个属性

问题解决方案

根因

你的XSLT顶层<xsl:stylesheet>元素的exclude-result-prefixes属性将ser加入了排除列表,这是<soapenv:Envelope>上的xmlns:ser声明被丢弃的直接原因。

exclude-result-prefixes的作用是告知XSLT处理器:列表内的命名空间前缀如果没有在输出内容的元素/属性名称中被使用,就不会输出对应的命名空间声明;即便有使用,处理器也会优先将命名空间声明放到首次使用对应前缀的节点(也就是你代码中的<ser:Process>元素)上,你手写在<soapenv:Envelope>上的xmlns:ser声明会被优化移除。

修复方法

将ser和不必要的soapenv从exclude-result-prefixes的取值中移除,仅保留仅用于匹配源XML、输出不会用到的fm前缀即可,修改后的样式表头配置如下:

<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:ser="http://services.visionwebqa.com"
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"   
    xmlns:fm="http://www.filemaker.com/fmpxmlresult" exclude-result-prefixes="fm">

修改后重新执行转换,输出的<soapenv:Envelope>就会同时携带两个命名空间声明,符合预期。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 14:36:01