使用XSL将xml值作为类添加到body标记中

时间:2017-05-13 11:33:19

标签: xml xslt

我对xsl非常生疏所以我会尝试尽可能地问这个问题,但我想要做的就是在这种情况下获取我的XML文件属性的值“药房”并将其传递给我的xsl文件中的body标记的类。我最终使用jQuery工作,但我问可能使用xsl?

我的jQuery解决方案:

<script>                
          $(function() {
            var a =  $('.cohort').text();
          $('body').removeClass('no-js').addClass('je-enabled ' + a)                                        
             });              
</script>

我的XSL:

<xsl:template match = "/">              
    <html> 
     <body class="no-js"> 
        <xsl:apply-templates /> 
     </body> 
    </html> 
</xsl:template>  

<xsl:template match="COURSE">
 <div class="cohort sr-only"><xsl:value-of select="@STUDY_AREA"/></div>
 .
 .
</xsl:template>  

我的XML

<COURSES>
  <COURSE id="1" STUDY_AREA="pharmacy">
  .
  .
  </COURSE>
</COURSES>

我的帮助将不胜感激 - 抱歉,如果我没有添加完整的代码,因为它很大 - 希望我提供的就足够了。

1 个答案:

答案 0 :(得分:0)

据我所知,你想:

  • STUDY_AREA标记中读取COURSE属性的内容, 位于COURSES根标记(类名)。
  • 生成body代码,class属性等于您的属性 刚刚阅读,使用xsl:attribute

然后您的模板应如下所示:

<xsl:template match="/">
  <html>
    <body>
      <xsl:attribute name="class" select="COURSES/COURSE/@STUDY_AREA"/>
      <xsl:apply-templates/>
    </body>
  </html>
</xsl:template>

请注意:

  • 此模板不会将任何类分配给body标记 以一种静态的方式。
  • 而是使用目标类名设置class属性。