Могу ли я назвать три разных с одним, чтобы проверить, потому что у меня будет несколько с разными, которые позже понадобятся для вызова разных шаблонов.
Да, вы можете и @ 0xA3показал вам, как.
Но вам не нужно и не нужно!
В духе XSLT процессор XSLT может решить, к какому шаблону применитькакое условие.
Это преобразование:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="param[@id=1]">
Load!
</xsl:template>
<xsl:template match="param[@id=2]">
Input!
</xsl:template>
<xsl:template match="param[@id=3]">
Response!
</xsl:template>
</xsl:stylesheet>
при применении к предоставленному документу XML :
<parameters>
<param id="1">
<key>Load</key>
<value>XML</value>
</param>
<param id="2">
<key>Input</key>
<value>Http</value>
</param>
<param id="3">
<key>Response</key>
<value>Y</value>
</param>
</parameters>
производит:
<parameters>
Load!
Input!
Response!
</parameters>
Обратите внимание, что мы не использовали условную логику - сам процессор XSLT решил, какой шаблон применять для <param>
элементы с различными id
атрибутами.
Это отличное средство (в данном конкретном случае вы сохранили 14 строк кода, подверженного ошибкам), и его рекомендуется использовать как можно чаще