模板应匹配至少具有一个祖先"b"的所有元素"a"


<xsl:template match="//a//b">...</xsl:template>

几乎是我想要的。 但它不会选择例如这个:(B 在里面 B 在 A 里面(

<x>
   <y>
      <a>
         <b>
            <b>THIS</b>
         </b>
      </a>
   </y>
</x>

有人有想法吗?

我试过这个,有什么相同的作用:

<xsl:template match="//b[ancestor::a]">

例如,它不会选择这个:(B 在 B 在 A 里面(

首先,匹配

不是选择,而是匹配。因此,//前缀对匹配模式没有任何作用。在任何情况下,所有这些都匹配模式:

match="//a//b"
match="a//b"
match="//b[ancestor::a]">
match="b[ancestor::a]">

将匹配示例中的两个b元素。如果您找到其他内容,请检查您的方法:很可能,您的模板不应用任何模板 - 因此处理器永远不会到达内部b

最新更新