用于选择不属于某些特定元素的所有子元素的 XPath 表达式
给定 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< 类型的子元素/代码>。 (这对于将属性移动到底部是必要的。)
但是,它实际上匹配每个节点。为什么?
Given the XML
<blockquote>
<attribution>foo</attribution>
<para>bar</para>
</blockquote>
I have the XSL template
<xsl:template match="dbk:blockquote">
<blockquote>
<xsl:apply-templates select="*[not(dbk:attribution)]" />
<xsl:apply-templates select="dbk:attribution" />
</blockquote>
</xsl:template>
where the first apply-templates
should select all child elements of the dbk:blockquote
that are not of type dbk:attribution
. (This is necessary to move attributions to the bottom.)
However, it in fact matches every node. Why?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您想要使用
self
轴:这会选择本身不是
dbk:attribution
元素的子元素。您的版本选择不包含dbk:attribution
子元素的子元素。You want to use the
self
axis:This selects child elements that are not themselves a
dbk:attribution
element. Your version selects child elements that do not contain adbk:attribution
child.我不是 xpath 专家。但我认为这应该有效。
I am no xpath expert. But I think this should work.