我的任务是映射一个输入 xml(实际上是一个 SAP idoc xml),并生成一些平面文件。每个输入 xml 可能会产生多个输出文件(每个批号一个输出文件),因此我将根据批号在我的映射中使用 xsl:key 和 key() 函数
问题是,批号本身不会在文件本身中,但输出文件名需要包含该批号值。
所以问题真的是:我可以将批号映射到 xml 并让平面文件汇编器在生成文件时跳过它吗?还是有另一种方法可以将批号作为文件名由程序集应用,而无需将其包含在文件本身中?
我的任务是映射一个输入 xml(实际上是一个 SAP idoc xml),并生成一些平面文件。每个输入 xml 可能会产生多个输出文件(每个批号一个输出文件),因此我将根据批号在我的映射中使用 xsl:key 和 key() 函数
问题是,批号本身不会在文件本身中,但输出文件名需要包含该批号值。
所以问题真的是:我可以将批号映射到 xml 并让平面文件汇编器在生成文件时跳过它吗?还是有另一种方法可以将批号作为文件名由程序集应用,而无需将其包含在文件本身中?
在您的编排中,您可以为每个输出消息设置上下文属性:
msgOutput(FILE.ReceivedFileName) = "DynamicStuff";
msgOutput 然后转到发送形状。在您的发送端口中,您可以像这样设置输出文件:
FixedStuff_%SourceFileName%.xml
结果:
FixedStuff_DynamicStuff.xml
奖励: xslt 中的排序和分组相当笨拙,这就是我不再这样做的原因。相反,您可以使用 SQL:BizTalk:在 SQL 而不是 XSL 中对平面文件数据进行排序和分组