Я думаю, что проблема в том, что в шаблоне «а», что параметр «б» представляет собой набор узлов. Чтобы получить доступ к этому, вам, возможно, придется использовать функцию расширения «набор узлов» в XSL. Он не является частью стандартного XSLT, поэтому вам нужно указать расширение.
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ext="urn:schemas-microsoft-com:xslt">
<xsl:template match="/">
<xsl:call-template name="a">
<xsl:with-param name="b">
<xsl:apply-templates select="text()"/>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="a">
<xsl:param name="b"/>
<xsl:for-each select="ext:node-set($b)">
<xsl:copy-of select="."/>
</xsl:for-each>
</xsl:template>
<xsl:template match="text()">
<aNewTag>
<xsl:value-of select="."/>
</aNewTag>
</xsl:template>
</xsl:stylesheet>
Этот файл работает только для XML-анализатора Microsoft (MSXML). Для других XML-процессоров, таких как xsltproc, должно использоваться пространство имен «http://exslt.org/common».
Это позволяет вам получить доступ к узлу или узлам, которые составляют параметр «b», хотя в моем примере выше я использовал их для итерации по ним.
Вот статья, которая объясняет о наборе узлов
XML.Com Article
информацию, которую вы дали, это работает последовательно для меня. применяется независимо от того, какой метод я использовал для выбора текстовых узлов. Это означает, что вам придется опубликовать образец кода XML и XSLT, который не подходит для вас. –
Tomalak