Инструкция <xsl:template>
может быть определена только на глобальном уровне (должна быть дочерней по отношению к инструкции <xsl:stylesheet>
).
Другая рекомендация - избегать условныхтесты типа узла .Вместо этого:
<xsl:choose>
<xsl:when test="//*[local-name()='RetrieveCCTransRq']">
<xsl:call-template name="SOAPOutput"/>
</xsl:when>
</xsl:choose>
рекомендуется использовать это :
<xsl:template match="RetrieveCCTransRq">
<!-- Place the body of the named template here -->
</xsl:template>
Таким образом, вам не нужнонапишите шесть строк кода, приведенных выше, в которых вы можете легко совершить любую ошибку.Кроме того, вы преобразовали именованный шаблон в соответствующий, что обеспечило большую гибкость и возможность повторного использования, и вы исключили часть процедурной обработки (в стиле pull). Будьте ленивы и умны - пусть процессор XSLT сделает проверку типа узла за вас :)