XSLTのセクションを単一のノードに限定する方法があるため、ノードのパス全体が毎回必要ないのですか?例えばXSLTのセクションをシングルノードに限定する
...
Name: <xsl:value-of select="/root/item[@attrib=1]/name"/>
Age: <xsl:value-of select="/root/item[@attrib=1]/age"/>
これがために、各コマンドを介して行うことができますが、私は全然可能ならば、これらは避けるべきであることを信じるように導かいます...
<xsl:for-each select="/root/item[@attrib=1]"/>
Name: <xsl:value-of select="name"/>
Age: <xsl:value-of select="age"/>
</xsl:for-each>
私はVB.NET Withコマンドに相当するXSLTがあるかどうか尋ねていますか?
問題のXSLTファイルが大きいので、読みやすさのためにxsl:templateを避ける方がいいですが、これが唯一の方法であれば受け入れるのは喜ばしいことです。もしそうなら、特定のノードに基づいて特定のテンプレートを呼び出す構文は何ですか?
更新
では@javramによって答えにフォローアップ、特定の属性/ノードに基づく個別のテンプレートを一致させることができます。
<xsl:apply-templates select="/root/item[@attrib=1]"/>
<xsl:apply-templates select="/root/item[@attrib=2]"/>
<xsl:template match="/root/item[@attrib=1]">
Name: <xsl:value-of select="name"/>
Age: <xsl:value-of select="age"/>
</xsl:template>
<xsl:template match="/root/item[@attrib=2]">
Foo: <xsl:value-of select="foo"/>
</xsl:template>
ここでやっているように、 'xsl:for-each'を使っても何も問題はありません。この場合、「with」のような仕方でうまく機能します。 XSLTがテンプレートを適用して一致させるなど、より適切な方法を提供するときに、明示的にループするために 'xsl:for-each'を使用することについて、人々は助言します。 –
Downvoter ...私はなぜ、そしてそれほど長く後に尋ねることができますか? – freefaller
Downvoter ...いいえ私はそうは思わなかった...あなたは建設的ではなく、SOの匿名性の背後に隠れている。ありがとう、ありがとう! – freefaller