1

我有带有标签的 XML:

Data before ....

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

Data after ....

我怎样才能用一些 XSLT 包装这个标签,所以我会得到这个:

Data before ....

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

Data after ....

这可以做到吗?

4

1 回答 1

6

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

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

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

<xsl:template match="table1">
  <tab1>
    <xsl:call-template name="ident" />
  </tab1>
</xsl:template>

如果您在 Stack Overflow(或网络上的其他地方)上搜索“身份模板”,您会发现更多这种技术的示例。

于 2013-11-12T15:35:05.730 回答