将元素连接到表XSLT

时间:2015-11-11 16:52:03

标签: xml xslt

我对XML和XSLT非常陌生,并且很难找到如何将所有名为course_num的内容放入一个单元格中,每个单元格用逗号分隔(每个人都拥有它自己拥有它里面有课程编号的单元格。)

这是我的XML:

<?xml version="1.0" encoding="UTF-8"?>
<courses>
  <course acad_year="2012" term_id="1" crn="108">
  <course_group>COMP</course_group>
  <course_num>Ncomp</course_num>
  <course_num>Hcomp</course_num>
  <course_num>Scomp</course_num>
  <title>XML Intro</title>

 <meeting>
  <meeting_begin>1820</meeting_begin>
  <meeting_end>2020</meeting_end>
  <location> LCOMP</location>
 </meeting>

 <course_head>
    <person person_id="128">
    <person_name>Antonio Molay</person_name>
    <person_lname>Molay</person_lname>
    <person_fname>Antonio</person_fname>
    <person_title> College Instructor</person_title>
  </person>
 </course_head>
</course>

这是我的XSLT:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:template match="/">
    <html>
      <head>
        <title>College Courses</title>      
      </head>  
      <body>
        <table>
          <thead>
          <tr bgcolor="yellow">
            <th>Course ID</th>        
            <th>Year</th>
            <th>Course Title</th>
            <th>Teacher</th>
            <th>Meeting Days</th>
            <th>Time</th>
            <th>Location</th>
          </tr>  
          </thead>
          <tbody>
            <xsl:apply-templates />        
          </tbody>
        </table>
      </body>
     </html> 
  </xsl:template>

    <xsl:variable name="dash">-</xsl:variable>

     <xsl:template match="course">
       <tr>
         <td>
           <xsl:value-of select="course_num" />
         </td> 
         <td>
           <xsl:value-of select="@acad_year"  />       
         </td>  
         <td>
            <xsl:value-of select="course_group" />     
         </td>    
         <td>
           <xsl:value-of select="course_head/person/person_name" />
         </td>
         <td>
           <xsl:value-of select="concat(meeting/meeting_begin, $dash, meeting/meeting_end)" />
        </td>
        <td>
          <xsl:value-of select="meeting/location" />        
        </td>
       </tr>
     </xsl:template>  
</xsl:stylesheet>

我知道我需要一个for-each循环,但不知道如何把它放到TD中。我已经尝试了以前问题的许多不同的解决方案,但它们不起作用。任何帮助将不胜感激,并记住我是一个菜鸟,所以具体。感谢!!!!!!!

1 个答案:

答案 0 :(得分:0)

  

如何获取名为course_num的所有内容并将它们放入一个单元格中   每个用逗号分隔

更改:

<td>
  <xsl:value-of select="course_num" />
</td> 

为:

<td>
    <xsl:for-each select="course_num">
        <xsl:value-of select="." /> 
        <xsl:if test="position()!=last()">
            <xsl:text>, </xsl:text>
        </xsl:if>
    </xsl:for-each>
</td>