Как понять XPath?

Есть шаблон:

  <xsl:template match="a">
    <xsl:variable name="context" select="."/>
    <xsl:if test="$updates//Item/@key = $context/ancestor-or-self::Item[1]/@key">
      <xsl:copy-of select="($updates//Item[@key = $context/ancestor-or-self::Item[1]/@key])//a"/>
    </xsl:if>
  </xsl:template>
</xsl:stylesheet>

Как понять строки XPath:

"$updates//Item/@key = $context/ancestor-or-self::Item[1]/@key"

"($updates//Item[@key = $context/ancestor-or-self::Item[1]/@key])//a"

Можно ли переписать этот шаблон, чтобы он работал так же, но не для тега 'a', а для его следующего, но не единственного потомка тега 'b', причем без упоминания в коде тега 'a':

...
<a>
  <b>
  </b>
  <c>
  </c>
  <d>
  </d>
</a>
...

Ответы (0 шт):