1

我正在尝试找到一种方法来将此转换重新工作到我不必ancestor::在 Xpath 中使用轴的位置:

<xsl:template match="p[ancestor::p]">
     <xsl:apply-templates select="node() except ppr" />
</xsl:template>

来源示例:

<root>
  <p>
     <p/>
     <section>
        <p/>
     </section>
     <ppr/>
     <content/>
     <p/>
     <picture/>
  </p>
</root>

期望的输出:

<root>
  <p>
     <section>
     </section>
     <ppr/>
     <content/>
     <picture/>
  </p>
</root>

我不能使用显式 Xpath 或定位来抓取这些<p>元素,因为它们的位置是随机的,并且在我的原始源文档中没有模式。

我试图不使用的原因ancestor::是因为我使用的 XSLT 处理器需要 30-50 秒来评估 Xpath 表达式。我不希望这个问题是关于我正在使用哪个 XSLT 处理器或我的设置的其他实现,而是关注手头的问题:有什么方法可以不在ancestor::我的上述转换中使用吗?

提前致谢。

4

1 回答 1

3

结果很简单:

//p//p
于 2013-02-08T00:03:01.810 回答