【发布时间】:2014-07-14 12:42:13
【问题描述】:
所以我有一个 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) 是唯一的,谁能帮我理解这里的问题?
提前谢谢各位!
【问题讨论】:
-
您是否尝试在浏览器端进行 XSL 转换?如果不是,您使用的是什么服务器平台?
-
@WilliamWalseth 是的,一切都在本地完成。
-
嗯,这可能是问题所在。它通常在服务器上完成,因此您可以在单个平台上控制转换。在浏览器中,每个 XSLT 引擎都是不同的。
-
@WilliamWalseth 我尝试了多个浏览器,不过还是感谢您的建议。
-
试着把它拉开一点,也许首先尝试输出每门课程,然后只输出匹配 $sid 的课程。尝试在参数中强制使用默认值,如下所示,然后尝试不使用。您如何在转换函数中将 $sid 值传递给 XSL?
标签: javascript xml xslt foreach