我通过 Yahoo API 中的 url 获得了动态 XML 体育数据,我想使用 XSLT 在我的网站上显示并排序所选内容。这是第一次使用 XML 和 XLST。在测试时,我已经弄清楚了当将 XML 代码手动粘贴到服务器上的 XML 文件中时如何正确显示它,但我正在努力解决如何从 url 获取 XML 数据源(每天更新)和到网页上。
我有一个 PHP 文件,我在其中成功连接到 feed 并打印原始 XML 数据(将其称为“feed.php”)。我认为问题的一部分在于 XML 数据在该文件中作为字符串输出,因此需要将其转换为文档(对象?),以便 XSLT 可以与 XML 中的元素标签进行交互。在我想要显示所选数据的网页上:
<main>
<button type="button" onclick="loadStandings(displayOverallStandings)">League Standings</button>
<article id="standings-division">
*league standings to display here when the button is clicked*
</article>
<script>
// found elsewhere on SO to turn string into XML document
function loadStandings(displayOverallStandings) {
var xhr = new XMLHttpRequest();
xhr.onload = function() {
dump(xhr.responseXML.documentElement.nodeName);
}
xhr.onerror = function() {
dump("Error while getting XML.");
}
xhr.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
displayOverallStandings(this);
}
}
xhr.open("GET", "feed.php"); // the path to the feed.php file
xhr.responseType = "document";
xhr.send();
}
// more code I found on SO to load xml and xsl docs in browser to display league standings
function displayOverallStandings(xhr) {
xml = xhr.responseXML;
xsl = loadXMLDoc("standings.xsl"); // path to the XSL file I've created
// code for IE
if (window.ActiveXObject || xhttp.responseType == "msxml-document")
{
ex = xml.transformNode(xsl);
document.getElementById("standings-division").innerHTML = ex;
}
// code for Chrome, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument)
{
xsltProcessor = new XSLTProcessor();
xsltProcessor.importStylesheet(xsl);
resultDocument = xsltProcessor.transformToFragment(xml, document);
document.getElementById("standings-division").appendChild(resultDocument);
}
}
</script>
猛跑小猪