如何在xslt中的另一个模板中调用模板?

时间:2017-08-24 14:21:35

标签: xml xslt

我有一个像这样的.xml数据:

<Check>
    <NotfoundUser>
        <User>
            <Forename>Jenny</Forename>
            <Surname>Hollands</Surname>
            <Birthday>30.01.1985</Birthday>
            <Status>Employee</Status>
            <City>Los Angeles</City>
        </User>
        <User>
            <Forename>Michael</Forename>
            <Surname>Williams</Surname>
            <Birthday>30.12.1965</Birthday>
            <Status>Retired</Status>
            <City>New York</City>
        </User>
    </NotfoundUser>
</Check>

我正在尝试编写.xsl数据来制作表格。

<div class='div4'>
    <table class='table4' style='font-size:12pt'>
        <tr>
            <th>Name</th>
            <th>Birthday</th>
            <th>Notice</th>
        </tr>
        <xsl:for-each select="/Check/NotfoundUser/*">
        <tr>
            <td><xsl:value-of select="./Forename"/> <xsl:text> </xsl:text> <xsl:value-of select="Surname"/></td>
            <td><xsl:value-of select="./Birthday"/></td>
            <td>
                <xsl:call-template name="replacecity">
                <xsl:with-param name="value" select="./City"/>
                </xsl:call-template>
            </td>
        </tr>
        </xsl:for-each>
    </table>
</div>

<!-- template to replace -->
<xsl:template name="replacecity">
    <xsl:param name="value"/>
        <xsl:choose>
            <xsl:when test="$value = 'New York'">
                <xsl:text>Live in New York</xsl:text>
            </xsl:when>
            <xsl:when test="$value = 'Los Angeles'">
                <xsl:text>Live in Los Angeles</xsl:text>
            </xsl:when>
            <xsl:otherwise>
                <xsl:value-of select="$value"/>
            </xsl:otherwise>
        </xsl:choose>
</xsl:template>

我需要像这样在城市上面创建一个上标。

If Status = Retired -> superscript is 1
If Status = Employee -> superscript is 2

所以我想创建一个新模板(例如名为replacestatus)并在模板replacecity内集成,但我不知道如何。你能帮我解决这个问题,还是你有更好的想法? enter image description here

2 个答案:

答案 0 :(得分:1)

我不明白为什么你需要在这里调用任何其他模板。你为什么不能这么做:

XSLT 1.0

.php

答案 1 :(得分:0)

尝试使用xsl:include或xsl:import

以下是一些例子:

http://www.xml.com/pub/2000/11/01/xslt/index.html