问题是你的
<add type="margin_gloss">
正在选择两次。首先通过这行。。。
<xsl:apply-templates select=".//add[@type='margin_gloss']"/>
然后通过这条线。。。
<xsl:apply-templates/>
解决这个问题的一种方法是更改显式
xsl:apply-templates
对此。。。
<xsl:for-each select=".//add[@type='margin_gloss']">
<xsl:apply-templates />
</xsl:for-each>
然后,更改模板匹配
add[@type='margin_gloss']
这将阻止
xsl:应用模板
<xsl:template match="add[@type='margin_gloss']" />
因此,这两个相关模板将如下所示。。。。
<xsl:template match="seg[@type='dep_event']">
<fo:block
font-family="Times" font-weight="normal"
font-size="8pt" space-before="8pt"
space-after="8pt" text-align="justify"
end-indent="2.5in">
<xsl:if test=".//add[@type='margin_gloss']">
<fo:float float="right">
<fo:block-container width="2in" margin="10pt">
<fo:block font-size="7pt">
<xsl:for-each select=".//add[@type='margin_gloss']">
<xsl:apply-templates />
</xsl:for-each>
</fo:block>
</fo:block-container>
</fo:float>
</xsl:if>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="add[@type='margin_gloss']"/>