Какую практику лучше использовать для потока выполнения, шаблона вызова или режимов?
data.xml
<Properties>
<foo>me</foo>
<bar>you</bar>
</Properties>
a.xsl
<xsl:include href="translations_nomodes.xml"
<xsl:template match="/">
<xsl:call-template name="a_display"/>
</xsl:template>
b.xsl
<xsl:include href="translations_nomodes.xml"
<xsl:template match="/">
<xsl:call-template name="b_display"/>
</xsl:template>
translations_nomodes.xsl
<xsl:template name="a_display">
<!-- display option a -->
...
</xsl:template>
<xsl:template name="b_display">
<!-- display option b -->
...
</xsl:template>
Или было бы лучше использовать режимы
c.xsl
<xsl:include href="translations_modes.xml"
<xsl:template match="/">
<xsl:apply-templates select="/Properties" mode="c_display"/>
</xsl:template>
d.xsl
<xsl:include href="translations_modes.xml"
<xsl:template match="/">
<xsl:apply-templates select="/Properties" mode="d_display"/>
</xsl:template>
translations_modes.xsl
<xsl:template match="Properties" mode="c_display">
<!-- display option c -->
...
</xsl:template>
<xsl:template match="Properties" mode="d_display">
<!-- display option d -->
...
</xsl:template>
Поскольку «Свойства» является корневым узлом в моем документе, а шаблоны применений используют литералы для значений режима, использование режима не даст мне никакого дополнительного преимущества, и оно немного более многословно. Однако, если поток выполнения зависит от элемента / атрибута в самом документе, и режимы были не литералами, а выражениями, тогда я мог бы видеть необходимость подхода режима.
На самом деле, использование режимов как я, с буквальными значениями, кажется плохим выбором также потому, что если в будущем моя логика изменится, и мне нужно будет использовать выражения режима для управления потоком выполнения, я уже «использовал» Атрибут режима.
Я пришел к правильному выводу или пропустил некоторые важные моменты?