要消除内部para元素,但在itemizedlist中的后续para元素之间放置一个br元素,给定xml如下:
<listitem>
<para>The application of power invokes the POR state machine(PORSM). During
this time, the following registers are initialized:</para>
.
.
.
<para>In addition, the JTAG interface is disabled and the SSBD is
open.</para>
</listitem>
我写了一个如下模板:
<xsl:template match="listitem/para">
<xsl:value-of select="."/>
<xsl:if test="count(./following-sibling::para) > 0">
<xsl:element name="br"/>
</xsl:if>
<xsl:apply-templates/>
</xsl:template>
我得到了br,但是重复了最初的para元素:
The application of power invokes the POR state machine
(PORSM). During this time, the following registers are
initialized:
<br/>The application of power invokes the POR state machine
(PORSM). During this time, the following registers are
initialized:
我知道这是一个新手问题,但有人可以解释为什么我重复了当前的文本节点吗?
感谢,
拉斯
答案 0 :(得分:3)
第一份副本来自
<xsl:value-of select="."/>
和
中的第二个<xsl:apply-templates/>
将模板应用于para
元素的所有子节点。子节点包括文本节点和元素节点,如果您没有指定显式模板来匹配text()
,则文本节点的默认模板会将文本输出到结果树。