用xslt将XML元素移到另一个元素
|
我有一个看起来像这样的XML
<executionPlan name=\"Test\" >
<paramList>
<param name=\"param1\" default=\"\"/>
</paramList>
<varList>
<var name=\"bla\" default=\":[param1]\"/>
</varList>
<simpleSteps limitToHostSet=\"bla\">
<execNative>
<exec cmd=\"/bin/sh\"/>
</execNative>
</simpleSteps>
我需要将其转换为如下形式:
<executionPlan name=\"Test\" >
<paramList>
<param name=\"param1\" default=\"\"/>
</paramList>
<simpleSteps limitToHostSet=\"bla\">
<varList>
<var name=\"bla\" default=\":[param1]\"/>
</varList>
<execNative>
<exec cmd=\"/bin/sh\"/>
</execNative>
</simpleSteps>
如您所见,varList元素需要嵌套在simpleTags元素内,紧接在开始标记之后。 simpleSteps中可能还有其他varList元素,不能更改。
有什么想法可以使用XSLT实现吗?我是XSLT的新手,一整天都徒劳地尝试了...任何帮助将不胜感激。
鲁兹
没有找到相关结果
已邀请:
2 个回复
才脊烽馈低
在此输入上:
产生:
编辑:仅将紧前面的ѭ5移入与其关联的
。所有其他“ 5”元素均原样复制。 我突然不清楚这是否是所需的行为,或者在or6ѭ元素内是否已有多个
元素应该保持不变。对于这种情况,请参阅我的原始解决方案:
在此输入上:
产生:
窃誓额
当应用于提供的XML文档时:
正是想要的,正确的结果产生了:
说明: 身份规则/模板按“原样”复制每个节点。只有两个例外,如下所述。 仅匹配top元素的第一个“ 5”子元素的覆盖模板没有主体-这实际上废除了此元素的身份模板的复制操作。 匹配
的第一个元素子元素的覆盖模板有两件事:a)复制所需的
(顶部元素的子元素),然后b)调用身份模板将自身复制到输出。