XSL重复信息问题

时间:2011-09-04 13:30:16

标签: xslt

尝试xsl,我遇到了一个不会消失的问题。我的样式表代码是这个

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="Fighter">
    <br/>
    <br/>
    <br/>
    <b>Name </b>    <xsl:value-of select="name"/> <br/>
    <b>AKA</b>      <xsl:value-of select="nickname"/> <br/>
    <b>Age</b>      <xsl:value-of select="age"/> <br/>
    <b>Height</b>       <xsl:value-of select="height"/> <br/>
    <b>Division</b> <xsl:value-of select="division"/> <br/>
    <b>Reach</b>        <xsl:value-of select="reach"/> <br/>
    <b>Stance</b>       <xsl:value-of select="stance"/> <br/>
    <b>Nationality</b>  <xsl:value-of select="nationality"/> <br/>
    <b>Training Camp</b>    <xsl:value-of select="camp"/> <br/>
    <xsl:apply-templates/>
</xsl:template>

<xsl:template match="bout">
    <table width="100%" border="1">
        <tr>
            <td width ="10%"><xsl:value-of select="result"/></td>
            <td width ="10%"><xsl:value-of select="opponent"/></td>
            <td width ="10%"><xsl:value-of select="waywon"/></td>
            <td width ="10%"><xsl:value-of select="round"/></td>
            <td width ="10%"><xsl:value-of select="event"/></td>
            <td width ="10%"><xsl:value-of select="date"/></td>
            <td width ="10%"><xsl:value-of select="location"/></td>
            <td width ="10%"><xsl:value-of select="notes"/></td>
        </tr>
    </table>
 </xsl:template>

<xsl:template match="/">
       <h1>LIST OF UFC FIGHTERS</h1>
<xsl:apply-templates/>
</xsl:template>

</xsl:transform>

我想得到一些关于被调动的战斗机的信息,然后显示战斗记录如下。但是它会继续添加额外的行,如下所示。

  

姓名George St Pierre
又AKA GSP
年龄30岁身高5英尺10   在分部重量级中达到76的立场   正统的国籍加拿大
身体训练营三星健身房   

     

George St Pierre GSP 30 5英尺10英寸重量级76加拿大东正教   三星健身房

为什么此信息打印两次?我确信这可能很简单,但这让我非常沮丧。

2 个答案:

答案 0 :(得分:1)

因为你在模板战斗机中有apply-templates而没有名称,昵称,年龄等的模板 - 所以XSL只复制这个节点中满足的文本 - 把它放在XSL的末尾以避免这种情况并在那里保留apply-templates

<xsl:template match="*"></xsl:template>

这将为任何未由其他模板

处理的标记添加空字符串

答案 1 :(得分:1)

试试这个

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="Fighter">
    <br/>
    <br/>
    <br/>
    <b>Name </b>    <xsl:value-of select="name"/> <br/>
    <b>AKA</b>      <xsl:value-of select="nickname"/> <br/>
    <b>Age</b>      <xsl:value-of select="age"/> <br/>
    <b>Height</b>       <xsl:value-of select="height"/> <br/>
    <b>Division</b> <xsl:value-of select="division"/> <br/>
    <b>Reach</b>        <xsl:value-of select="reach"/> <br/>
    <b>Stance</b>       <xsl:value-of select="stance"/> <br/>
    <b>Nationality</b>  <xsl:value-of select="nationality"/> <br/>
    <b>Training Camp</b>    <xsl:value-of select="camp"/> <br/>
</xsl:template>

<xsl:template match="bout">
    <table width="100%" border="1">
        <tr>
            <td width ="10%"><xsl:value-of select="result"/></td>
            <td width ="10%"><xsl:value-of select="opponent"/></td>
            <td width ="10%"><xsl:value-of select="waywon"/></td>
            <td width ="10%"><xsl:value-of select="round"/></td>
            <td width ="10%"><xsl:value-of select="event"/></td>
            <td width ="10%"><xsl:value-of select="date"/></td>
            <td width ="10%"><xsl:value-of select="location"/></td>
            <td width ="10%"><xsl:value-of select="notes"/></td>
        </tr>
    </table>
 </xsl:template>

<xsl:template match="/">
       <h1>LIST OF UFC FIGHTERS</h1>
<xsl:apply-templates select="Fighter"/>
<xsl:apply-templates select="bout"/>
</xsl:template>

</xsl:transform>