SAP CPI中XSLT动态调用iFlow属性参数不生效问题求解
问题解决方案
现有代码问题说明
- 参数定义错误:
<xsl:param>定义时名称不能带$符号,$是参数引用时的标识,定义阶段直接使用参数名即可 - 匹配规则语法错误:XSLT 1.0不支持在
match属性的谓词中直接引用参数,且把$code写在单引号内会被识别为普通字符串,不会解析为参数值 - 模板逻辑错误:现有匹配模板内容为空,仅能清空节点内容,无法实现参数值替换的需求
可行XSLT代码
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <!-- 定义接收CPI属性的参数,名称不带$ --> <xsl:param name="code"/> <!-- 身份复制模板,原样保留所有不需要修改的节点 --> <xsl:template match="node()|@*"> <xsl:copy> <xsl:apply-templates select="node()|@*"/> </xsl:copy> </xsl:template> <!-- 匹配value4节点,替换内容为参数值 --> <xsl:template match="value4"> <xsl:copy> <xsl:value-of select="$code"/> </xsl:copy> </xsl:template> </xsl:stylesheet>
SAP CPI iFlow配置注意事项
- 打开iFlow中XSLT转换步骤的配置页面,找到「Parameters」标签
- 新增参数绑定:参数名称填写
code,来源选择Property,值填写code(即你iFlow中定义的属性${property.code}对应的属性名) - 部署iFlow后即可自动读取iFlow属性值完成XML节点替换
内容的提问来源于stack exchange,提问作者keeskroket
相关产品推荐
相关产品推荐

