Czy istnieje sposób ograniczenia sekcji XSLT do pojedynczego węzła, tak aby za każdym razem nie była potrzebna cała ścieżka węzła?Ograniczanie sekcji XSLT do pojedynczego węzła
Na przykład ...
Name: <xsl:value-of select="/root/item[@attrib=1]/name"/>
Age: <xsl:value-of select="/root/item[@attrib=1]/age"/>
Można to zrobić za pośrednictwem dla-każdego polecenia, ale jestem skłonni uwierzyć, że te należy unikać, jeśli to w ogóle możliwe ...
<xsl:for-each select="/root/item[@attrib=1]"/>
Name: <xsl:value-of select="name"/>
Age: <xsl:value-of select="age"/>
</xsl:for-each>
Chyba pytam, czy istnieje odpowiednik XSLT polecenia VB.NET With?
Wolałbym uniknąć xsl: template dla czytelności, ponieważ dany plik XSLT jest duży, ale z przyjemnością akceptuję, jeśli jest to jedyny sposób, aby to zrobić. A jeśli tak, to jaka jest składnia wywołania konkretnego szablonu na podstawie określonego węzła?
Aktualizacja
W nawiązaniu do odpowiedzi przez @javram, możliwe jest, aby dopasować osobne szablony na podstawie konkretnych atrybutów/węzłów.
<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>
Nie ma nic złego jako takiego z użyciem 'xsl: for-each', tak jak tu robisz. W tym przypadku działa dobrze w sposób "z" rodzaju. Ludzie radzą, aby nie używać 'xsl: for-each' do jawnego zapętlenia czegoś, gdy XSLT zapewnia lepsze sposoby na równoważenie, na przykład pozwalając szablonom zastosować i dopasować. –
Downvoter ... czy mogę zapytać, dlaczego i po tak długim czasie? – freefaller
Downvoter ... nie, nie sądzę ... po prostu chowaj się za anonimowość SO, zamiast być konstruktywnym. Dzięki, wielkie dzięki! – freefaller