2011-09-19 67 views
1

我有xml文件与爱好的列表为:XSLT嵌套的for-each用逗号分隔的列表

<?xml version="1.0" encoding="utf-8"?> 
<users> 
    <user> 
    <fname>somename</fname> 
    <hobbies> 
     <hobby>Movie</hobby> 
     <hobby>Trekking</hobby> 
    </hobbies> 
    </user> 
</users> 

XSL文件:

<?xml version="1.0" encoding="iso-8859-1"?> 
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="/"> 
    <html> 
     <body> 
     <xsl:for-each select="users/user"> 
      <h2> 
      <xsl:value-of select="fname" /> 
      </h2> 
      <h3>Hobbies :</h3> 
      <xsl:for-each select="hobbies"> 
      <xsl:value-of select="." /> 
       <xsl:if test="position() != last()"> 
        <xsl:text> , </xsl:text> 
       </xsl:if> 
      </xsl:for-each> 
     </xsl:for-each> 
     </body> 
    </html> 
    </xsl:template> 
</xsl:stylesheet> 

在这里,我使用

  <xsl:if test="position() != last()"> 
       <xsl:text> , </xsl:text> 
      </xsl:if> 

到在业余爱好列表之间生成逗号

但是这些值不显示逗号。

我正在测试http://www.w3schools.com/xsl/的tryit编辑器。

这里有什么问题吗?我该怎么办?

回答

3

你有一个错字,我想:<xsl:for-each select="hobbies/hobby">

更新

正确XSLT:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="/"> 
     <html> 
      <body> 
       <xsl:for-each select="users/user"> 
        <h2> 
         <xsl:value-of select="fname" /> 
        </h2> 
        <h3>Hobbies :</h3> 
        <xsl:for-each select="hobbies/hobby"> 
         <xsl:value-of select="." /> 
         <xsl:if test="position() != last()"> 
          <xsl:text> , </xsl:text> 
         </xsl:if> 
        </xsl:for-each> 
       </xsl:for-each> 
      </body> 
     </html> 
    </xsl:template> 
</xsl:stylesheet> 

输出:

<html> 
    <body> 
    <h2>somename</h2> 
    <h3>Hobbies :</h3>Movie , Trekking</body> 
</html> 
+0

代替的?不,它不起作用。 – gtiwari333

+1

@gt_ebuddy,不是'' –

+0

它仍然不起作用(即使列表不显示)。你有没有试过我的代码?我想提一下:在我的原始代码中,显示的是兴趣爱好[Movie Trekking],但没有逗号。 – gtiwari333