为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 XSLT 显示来自 url 的 XML 数据

如何使用 XSLT 显示来自 url 的 XML 数据

PHP
杨__羊羊 2023-10-22 21:29:37
我通过 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 documentfunction 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 filexhr.responseType = "document";xhr.send();}// more code I found on SO to load xml and xsl docs in browser to display league standingsfunction displayOverallStandings(xhr) {    xml = xhr.responseXML;    xsl = loadXMLDoc("standings.xsl"); // path to the XSL file I've created// code for IEif (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>
查看完整描述

1 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

我找到了一个解决方案,在“feed.php”文件中使用 PHP 将提要 xml 数据转换为简单 XML 对象(将数据显示为数组),循环遍历该数组以选择我想要的特定数据,然后将其转换使用 SimpleXMLElement() 函数返回到 xml 标记。这允许创建一个更简单的 xml 文档,并从标签中排除无关的 Yahoo 简介,这与 XSLT 的行为正确。


<?php

(Feed data saved in $response variable)


// convert xml data string into XML object

$xml = simplexml_load_string($response);


// selected output from object array as manually created XML tags

$output = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?><content></content>');

$date = $output->addChild('date',$xml->date); //append 'date' xml tags and get the date content from the XML object


(create more xml tags containing data, etc...)


echo $output->asXML();


?>


查看完整回答
反对 回复 2023-10-22
  • 1 回答
  • 0 关注
  • 107 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信