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

时间:2015-03-19 13:28:48

标签: xslt xpath

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

几乎完全符合我的要求。但它没有选择例如这个:( b在里面的b里面)

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

有人有想法吗?

我试过这个,同样的事情:

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

1 个答案:

答案 0 :(得分:1)

  

它没有选择例如这一个:( b&#39; s&#39; s内部&#39; s)

首先,匹配选择,它匹配。因此,//前缀不会对匹配模式执行任何操作。在任何情况下,所有这些匹配模式:

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

将匹配示例中的 b元素。如果您正在寻找其他内容,请检查您的方法:最有可能的是,您的模板不会应用任何模板 - 因此处理器永远不会进入内部b