首页 > 解决方案 > XSLT - 添加一个 XML 节点作为标题

问题描述

在我的流程中,我收到一个XML objects类似此示例的列表:

<shop>..data..</shop>
<shop>..data..</shop>
<shop>..data..</shop>
<shop>..data..</shop>

我想像这样添加一个标头/节点:

<shops "xmlns": "http://www.demo.com","shops-id": "static-value">
    <shop>..data..</shop>
    <shop>..data..</shop>
    <shop>..data..</shop>
    <shop>..data..</shop>
</shops>

可以用 XSLT 添加它吗?

标签: xmlxsltxsdxml-parsingmule

解决方案


很大程度上取决于上下文,但一种方法是创建一个匹配shop任何列表中第一次出现的模板,如下所示:

<xsl:template match="shop[1]">
  <shops>
    <xsl:copy-of select=". | following-sibling::shop"/>
  </shops>
</xsl:template>

(我没有添加属性,因为您的示例输出不是有效的 XML)

然后添加第二个模板以匹配剩余shop元素并丢弃它们,如下所示:

<xsl:template match="shop"/>

可能有更有效的方法,具体取决于您正在尝试做什么,但这种方法将shops在包含任何元素的任何元素中创建一个新shop元素。


推荐阅读