XSLT - 添加一个 XML 节点作为 header
XSLT - Add a XML node as header
在我的流程中,我收到了一个 XML objects
的列表,如下例所示:
<shop>..data..</shop>
<shop>..data..</shop>
<shop>..data..</shop>
<shop>..data..</shop>
我想添加一个 header/node 这样的:
<shops "xmlns": "http://www.demo.com","shops-id": "static-value">
<shop>..data..</shop>
<shop>..data..</shop>
<shop>..data..</shop>
<shop>..data..</shop>
</shops>
可以用 XSLT 添加吗?
很大程度上取决于上下文,但是一种方法是创建一个模板来匹配任何列表中第一次出现的 shop
,如下所示:
<xsl:template match="shop[1]">
<shops>
<xsl:copy-of select=". | following-sibling::shop"/>
</shops>
</xsl:template>
(我没有添加属性,因为您的示例输出无效 XML)
然后添加第二个模板来匹配剩余的 shop
元素并丢弃它们,如下所示:
<xsl:template match="shop"/>
可能有更有效的方法,具体取决于您要执行的操作,但此方法将在包含任何 shop
元素的任何元素中创建一个新的 shops
元素。
在我的流程中,我收到了一个 XML objects
的列表,如下例所示:
<shop>..data..</shop>
<shop>..data..</shop>
<shop>..data..</shop>
<shop>..data..</shop>
我想添加一个 header/node 这样的:
<shops "xmlns": "http://www.demo.com","shops-id": "static-value">
<shop>..data..</shop>
<shop>..data..</shop>
<shop>..data..</shop>
<shop>..data..</shop>
</shops>
可以用 XSLT 添加吗?
很大程度上取决于上下文,但是一种方法是创建一个模板来匹配任何列表中第一次出现的 shop
,如下所示:
<xsl:template match="shop[1]">
<shops>
<xsl:copy-of select=". | following-sibling::shop"/>
</shops>
</xsl:template>
(我没有添加属性,因为您的示例输出无效 XML)
然后添加第二个模板来匹配剩余的 shop
元素并丢弃它们,如下所示:
<xsl:template match="shop"/>
可能有更有效的方法,具体取决于您要执行的操作,但此方法将在包含任何 shop
元素的任何元素中创建一个新的 shops
元素。