使用Javascript ID的XSL“for-each”将不会输出任何内容

时间:2014-05-25 17:57:24

标签: javascript xml xslt foreach

所以我有一个XML,XSL和Javascript文件。我不会复制我的整个XML文件,因为它太大了,但这里是有问题的代码:

<courses>
  <course>
    <c_info>
      <c_code>U65</c_code>
      <c_title>Computer Science</c_title>
    </c_info>

然后我有一个包含这些参数的Javascript文件

function transform(message) {
transformXML("xml_courseinfo.xml", "course_menu.xsl", "main_body", "sid", message)
}

然后在我的XSL文件中,我有以下几行:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:param name="sid" />

  <xsl:template match="/">
    <html>
      <head> 
        <meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
        <title>Cross Browser Compatible Parameter Passing</title>

        <!-- javascript processor for loading the xslts with the xml-->
        <script language="javascript" type="text/javascript" src="processxml.js"></script>
      </head>
      <body>
        <div id="main_body">
          <h1>Course Main Menu</h1>
          <xsl:for-each select="courses/course/c_info[c_code=$sid]"> 
            <Strong>Course Name:</Strong> <xsl:value-of select="c_title"/> <hr /> 
          </xsl:for-each> 
        </div>
      </body>  
    </html>    
  </xsl:template>

</xsl:stylesheet>

根本没有显示,我给它正确的路径,课程代码(c_code)是唯一的,任何人都可以帮我理解这里的问题吗?

先谢谢你们!

1 个答案:

答案 0 :(得分:0)

如果没有显示任何内容,则表示XSLT根本没有执行,或者您提供了错误的$ sid值。通过使样式表输出一些常量文本,例如

,您可以轻松地发现其中哪一项是正确的
<h1>Transformation output for sid=<xsl:value-of select="$sid"/></h1>