我的xsl产生两次单个结果?

时间:2010-12-24 13:30:55

标签: xml xslt

我的xml是,

<?xml version='1.0'?>
<?xml-stylesheet type="text/xsl" href="country1.xsl"?>
<countries>
    <table name="cars">
        <country name="india">
            <var>Rajan</var>
            <pop>90.09</pop>
            <car>Audi</car>
        </country>
        <country name="japan">
            <var>Yenhovong</var>
            <pop>172</pop>
            <car>Sumo</car>
        </country>
    </table>
    <table name="personal">
        <country name="china">
            <var>Leee</var>
            <pop>03988</pop>
            <car>tass</car>
        </country>
        <country name="SriLanka">
            <var>Samarkuma</var>
            <pop>4325</pop>
            <car>sasfd</car>
        </country>
    </table>
</countries>

我的xsl是,

         <?xml version='1.0'?>
         <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL 
                          /Transform">
         <xsl:output method="text"/>
           <xsl:key name = "kkk" match = "country" use = "@name" /> 
         <xsl:template match="countries/table">
                <xsl:apply-templates select = "key('kkk','SriLanka')"/>
          </xsl:template>   

           <xsl:template match="country">
            <xsl:value-of select="."/>
           </xsl:template>  
         </xsl:stylesheet>

在我的xslt中,我想要检索'SriLanka'国家/地区的详细信息。但输出显示两倍相同的结果。你能帮我解决一下吗?提前谢谢。

1 个答案:

答案 0 :(得分:2)

这是因为第一个模板在元素上匹配,并且您的XML中有两个这样的元素要匹配。在这一点上斯里兰卡只出现在一张桌子下面并没有什么不同。

而不是这句话......

<xsl:template match="countries/table">

尝试在国家/地区进行匹配。

<xsl:template match="countries">