给定XML
<blockquote>
<attribution>foo</attribution>
<para>bar</para>
</blockquote>我有XSL模板
<xsl:template match="dbk:blockquote">
<blockquote>
<xsl:apply-templates select="*[not(dbk:attribution)]" />
<xsl:apply-templates select="dbk:attribution" />
</blockquote>
</xsl:template>其中第一个apply-templates应该选择dbk:blockquote中所有不属于dbk:attribution类型的子元素。(这是将属性移到底部所必需的。)
然而,它实际上匹配每个节点。为什么?
发布于 2011-04-20 04:25:12
您希望使用self轴:
<xsl:apply-templates select="*[not(self::dbk:attribution)]" />这将选择本身不是dbk:attribution元素的子元素。您的版本选择不包含dbk:attribution子级的子元素。
发布于 2011-04-20 04:14:58
我不是xpath专家。但我想这应该行得通。
<xsl:template match="dbk:blockquote">
<blockquote>
<xsl:apply-templates select="*[local-name(.) != 'attribution']" />
<xsl:apply-templates select="*[local-name(.) = 'attribution']" />
</blockquote>
</xsl:template>https://stackoverflow.com/questions/5722037
复制相似问题