Об атрибуте выбора в apply-templates

#xml #xslt

#xml #xslt

Вопрос:

У меня вопрос о том, как использовать атрибут выбора в apply-templates. Когда я пишу это: <ul><xsl:apply-templates select="authors/author" /></ul> что это значит? Означает ли это, что следует применять шаблон, в котором узлы-авторы являются дочерними узлами узла authors, который является дочерним элементом текущего узла?

Следующее правило шаблона:

 <xsl:template match="author">  
    <li><xsl:value-of select="."/></li>
</xsl:template>
  

Ответ №1:

Означает ли это, что он должен применять шаблон, в котором узлы-авторы являются дочерними узлами узла authors, который является дочерним для текущего узла?

Точно.

Ну, еще более точно: это означает, что процессор XSLT должен применять шаблоны ко всем <author> узлам, которые являются дочерними по отношению ко всем <authors> узлам, которые являются дочерними по отношению к текущему узлу.

Если существуют шаблоны mutliple, которые могут соответствовать <author> , процессор XSLT решит, какой шаблон применить. Например:

 <xsl:template match="author[not(@country = 'USA')]">
  <!-- will execute for any non-U.S. authors, specifically -->
</xsl:template>

<xsl:template match="author">
  <!-- will execute for all other authors -->
</xsl:template>