【发布时间】:2015-07-13 07:17:23
【问题描述】:
我需要向现有节点添加属性和新节点
例子:
<doc>
<a></a>
<a></a>
<a></a>
<d></d>
<a></a>
<f></f>
</doc>
我现在需要添加 <a> 节点的属性并在节点内添加新节点。
所以输出会是,
<doc>
<a id='myId'> <new_node attr="myattr"/> </a>
<a id='myId'> <new_node attr="myattr"/> </a>
<a id='myId'> <new_node attr="myattr"/> </a>
<d></d>
<a id='myId'> <new_node attr="myattr"/> </a>
<f></f>
</doc>
我编写了以下代码来完成这项任务,
<xsl:template match="a">
<xsl:apply-templates select="@*|node()"/>
<xsl:copy>
<xsl:attribute name="id">
<xsl:value-of select="'myId'"/>
</xsl:attribute>
</xsl:copy>
<new_node>
<xsl:attribute name="attr">
<xsl:value-of select="'myattr'"/>
</xsl:attribute>
</new_node>
</xsl:template>
此代码按预期添加了新属性和新节点,但问题是它只添加到第一个节点,并且在氧气编辑器中它和以下五个消息之后不编译。 ' An attribute node (id) cannot be created after a child of the containing element.
我该如何解决这个问题?
【问题讨论】: