如何使用XSLT包装XML标记

eog*_*asi 0 xml xslt

任何人都可以帮我解决这个问题.我有带标签的XML:

Data before ....

<table1> some data 1</table1>
<table1> some data 2 </table1>

Data after ....
Run Code Online (Sandbox Code Playgroud)

我怎么能用一些xslt包装这个标签所以我会得到这个:

Data before ....

<tab1><table1> some data 1</table1></tab1>
<tab1><table1> some data 2 </table1></tab1>

Data after ....
Run Code Online (Sandbox Code Playgroud)

可以这样做吗?如果有人可以帮助我的话,非常感谢你的帮助,eoglasi

Ian*_*rts 5

这种事情的标准方法是从身份模板开始

<xsl:template match="@*|node()" name="ident">
  <xsl:copy><xsl:apply-templates select="@*|node()" /></xsl:copy>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

它将输入XML复制到输出中,除非被更多特定模板覆盖.然后,您可以为要更改的内容定义其他模板 - 将每个table1元素包装在tab1您可以使用的额外层中

<xsl:template match="table1">
  <tab1>
    <xsl:call-template name="ident" />
  </tab1>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

如果在Stack Overflow(或Web上的其他位置)上搜索"identity template",您会发现更多此技术的示例.