Применить предикат к текущему узлу

(Я отправляю этот вопрос с ответом на свой вопрос, потому что обычно предлагаемое решение этой проблемы излишне многословно, и я хотел бы поставить запись прямо. Я не мог найти существующий вопрос SO для этого, но если он есть, пожалуйста, закройте это как дубликат.)

Я ищу способ выполнить выбор XPath, чтобы выбрать текущий узел, только если он соответствует определенному условию. Это было бы полезно, например, когда я хочу условно применить шаблон XSLT к текущему узлу:

<xsl:template match="Device">
  <div>
    <h2><xsl:value-of select="Name" /></h2>
    <xsl:apply-templates select="???[Featured = 'true']" mode="featured" />
    <p><xsl:value-of select="Description" /></p>
  </div>
</xsl:template>

<xsl:template match="Book">
  <div>
    <h2><xsl:value-of select="Title" /></h2>
    <xsl:apply-templates select="???[FeaturedBook = 'true']" mode="featured" />
    <h3><xsl:value-of select="Author" /></h3>
    <p><xsl:value-of select="Summary" /></p>
  </div>
</xsl:template>

<xsl:template match="node()" mode="featured">
  <p class='featured-notice'>This is a featured item!
    <a href="/AddToCart?productId={Id}">Buy now</a> to get a 15% discount.
  </p>
</xsl:template>

Я пытался использовать.[Featured = 'true'], но я получаю синтаксическую ошибку. Как я могу это сделать?

Я не собираюсь добавлять сюда ввод и вывод, поскольку они касаются вопроса и сделают его чрезвычайно длинным, но если вы хотите увидеть, что я имею в виду, я разместил их здесь:вход, выход.

Ответы на вопрос(1)

Ваш ответ на вопрос