如何使用XSLT将节点添加到XML结构

时间:2012-03-16 13:45:54

标签: xml xslt

我有一个复杂的结构,其中包含以下形式的列表

complex tree here
...
<ns3:timestampList xmlns="myNameSpace">
            <timestampInfo>
                    <timestampID>START</timestampID>
                    <timestamp>2012-02-25T00:30:18.705+01:00</timestamp>                        
            </timestampInfo>
            <timestampInfo>
                    <timestampID>END</timestampID>
                    <timestamp>2012-02-25T00:30:23.675+01:00</timestamp>
            </timestampInfo>
            <timestampInfo>
                    <timestampID>RE_START</timestampID>
                    <timestamp>2012-02-25T00:30:18.705+01:00</timestamp>
            </timestampInfo>
</ns3:timestampList>

我想保留整个尝试,只添加一个新的timestampinfo块。 我知道我可以遍历树并使用copy-of将所有节点添加到输出中,但我想知道是否没有更好更优雅的方法来执行此操作。

1 个答案:

答案 0 :(得分:0)

<xsl:param name="new-ts">
  <timestampInfo xmlns="myNameSpace">
    ...
  </timestampInfo>
</xsl:param>

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

<xsl:template match="ns3:timestampList">
  <xsl:copy>
    <xsl:apply-templates select="@* | node()"/>
    <xsl:copy-of select="$new-ts"/>
  </xsl:copy>
</xsl:template>

可能足以给你一个想法虽然使用了不同的命名空间但在你的示例中没有完全给出我的代码也不完整。