【发布时间】:2012-03-18 14:17:14
【问题描述】:
我正在尝试编写一个 xsl 来像这样转换输入 xml:
<transaction>
<message messagetype='Type1'>
<param name='destination'>
<value>some location</value>
</param>
<param name='payload'>
<value>some message</value>
</param>
</message>
<embeddedTransaction>
<message messagetype='Type1'>
<param name='source'>
<value>Default source</value>
</param>
<param name='destination'>
<value>Default destination</value>
</param>
<param name='payload'>
<value>Default payload message</value>
</param>
<param name='response'/>
<param name='profile'/>
</message>
</embeddedTransaction>
</transaction>
上面基本上是一个消息包,子节点<embeddedTransaction>中的数据定义了在顶级<message>没有提供<param>时使用的默认值
我需要的生成的 xml 应该如下所示:
<transaction>
<message messagetype='Type1'>
<param name='source'>
<value>Default source</value>
</param>
<param name='destination'>
<value>some location</value>
</param>
<param name='payload'>
<value>some message</value>
</param>
<param name='response'/>
<param name='profile'/>
</message>
</transaction>
注意<param name='source'> 是如何被<embeddedTransaction> 中的那个替换的,因为它没有在顶层提供。
与<param name='response'/> 和<param name='profile'/> 相同。
我一直在尝试使用嵌套的 for-each 语句循环执行此操作,但设置 xml 结构的方式让我很伤心。 任何人都可以解决这个问题吗?
【问题讨论】: