<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" > <xsl:output omit-xml-declaration="yes" method="text" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" indent="no" encoding="UTF-8" /><xsl:strip-space elements="*"/> <xsl:template match = "/icestats" > {<xsl:for-each select="source"> "<xsl:value-of select="@mount" />": { <!-- --> "name" : "<xsl:value-of select="server_name"/>", "listeners" : "<xsl:value-of select="listeners" />", "description" : "<xsl:value-of select="server_description" />", "title" : "<xsl:value-of select="title" />", "genre" : "<xsl:value-of select="genre" />", "url" : "<xsl:value-of select="server_url" />" }<xsl:if test="position() != last()"><xsl:text>,</xsl:text></xsl:if> <!-- , , - --> </xsl:for-each> } </xsl:template> </xsl:stylesheet>
example.com:8000/info.xsl
{ "/ns": { "name" : "Nyan-nyan :3", "listeners" : "3", "description" : "This is sparta~", "title" : "Freaking On Shpongle - Dorset Perception Remix", "genre" : "Kircore", "url" : "http://*********.com" } }
<?php $s = file_get_contents("http://example.com:8000/info.xsl"); echo($s); ?>
// , DOM. - ! function set (id, dat) { var d = document.getElementById(id); d.innerHTML = dat; } function getXmlHttp() // XMLHttpRequest, { var xmlhttp; try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlhttp = false; } } if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp = new XMLHttpRequest(); } return xmlhttp; } function req () // { var xmlhttp = getXmlHttp() xmlhttp.open("GET", "get.php", true); // xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4) { if(xmlhttp.status == 200) processResult(xmlhttp.responseText); // } }; xmlhttp.send(null); } function processResult (res) // { var csRes = eval("(" + res + ")"); // -, jQuery, . , , . var a = []; // , // - (/stream) , , (/ns). if (csRes["/stream"] != null) // ? { a = csRes["/stream"]; // , set("sName", " "); // "" } else // - { a = csRes["/ns"]; set("sName", "Non-Stop ( )"); // "" } set("trackholder", a["title"]); // // (, - , ..) set("sGenre", a["genre"]); set("sListeners", a["listeners"]); set("sDescr", a["description"]); setTimeout("req()", 15000); // , 15 // setInterval setTimeout, icecast . } req(); //
... <div id="sDescr"> </div> <script type="text/javascript" src="./track.js"></script>
Source: https://habr.com/ru/post/145694/