如何在 XSLT1.0 的中间位置使用 xsl:template?

How to use xsl:template at mid position of the XSLT1.0?

提问人: 提问时间:5/3/2020 更新时间:5/3/2020 访问量:53

问:

我在 XSLT1.0 的模板的上部使用它来从 xml 获取不同的数据值。

完整代码:- https://www.dropbox.com/s/6jollabe8tbbd7j/code.xslt?dl=0 在以下位置使用此块:- 第 745 行

我必须在我的 xslt 中间使用这个块,但是如何做 tha.t 如果我使用它,我会得到异常,因为 xsl:template 不允许在样式表中的这个位置! 如何解决任何建议都受到赞赏的问题

<xsl:template match="COMBINED-PAYMENT-HISTORY">
    <xsl:variable name="items-rtf">
        <xsl:call-template name="tokenize">
            <xsl:with-param name="text" select="normalize-space(.)"/>
        </xsl:call-template>
    </xsl:variable>
    <xsl:variable name="items" select="exsl:node-set($items-rtf)/item" /> 
<table>
    <!-- month -->
    <tr>
        <xsl:for-each select="$items">
            <td>
                <xsl:value-of select="substring-before(., ':')" />
            </td>
        </xsl:for-each>
    </tr>
    <!-- year -->
    <tr>
        <xsl:for-each select="$items">

            <td>
                <xsl:value-of select="substring-before(substring-after(., ':'), ',')" />
            </td>
        </xsl:for-each>
    </tr>
    <!-- data -->
    <tr>
        <xsl:for-each select="$items">
            <td>
                <xsl:value-of select="substring-after(., ',')" />
            </td>
        </xsl:for-each>
    </tr>
</table>
</xsl:template>

<xsl:template name="tokenize">
    <xsl:param name="text" />
    <xsl:param name="delimiter" select="'|'" />
    <xsl:variable name="token" select="substring-before($text, $delimiter)" />
    <item>
        <xsl:value-of select="$token" />
    </item>
    <xsl:variable name="next" select="substring-after($text, $delimiter)" />
    <xsl:if test="$next">
        <!-- recursive call -->
        <xsl:call-template name="tokenize">
            <xsl:with-param name="text" select="$next" />
        </xsl:call-template>
    </xsl:if> 
</xsl:template>

</xsl:stylesheet>
HTML XML XSLT XHTML

评论

1赞 Martin Honnen 5/3/2020
请发布最少但完整的示例,以便我们重现您也应该发布的确切错误消息。 必须是顶级元素,因此将这两个模板都放在顶级。若要在其他地方使用这些模板,将用于命名模板和具有属性的模板,具体如何显然取决于输入的 XML 结构。xsl:templatexsl:stylesheetxsl:call-templatexsl:apply-templatesmatch
1赞 Michael Kay 5/3/2020
你还没有告诉我们你想实现什么(你的输入是什么,你想要的输出是什么)。你告诉我们,你尝试了一些东西,但它没有用,因为语言不允许它,但除非我们知道你想实现什么,否则我们无法告诉你如何实现它。

答: 暂无答案