A ja sobie poeksperymentowałem, może się komuś przyda:
Zczytywanie aktualnych kursów:
<?php
$resPolalczenie = fsockopen ( "www.nbp.pl", 80
);
if ( $resPolalczenie )
{
/* Zczytuję nazwy wszystkich XML - i z kursami walut */
$strHeaders = 'GET /Kursy/xml/dir.txt HTTP/1.0' . "rn";
$strHeaders .= 'Host: www.nbp.pl' . "rn";
$strHeaders .= 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl-PL; rv:1.7.10) Gecko/20050717 Firefox/1.0.6' . "rnrn";
fputs ( $resPolalczenie, $strHeaders );
while ( ! feof ( $resPolalczenie ) ) {
/* Wrzucam je do tabeli */
$arrPlikiXML[] = fgets ( $resPolalczenie, 128
); }
/* Odwracam kolejność tabeli */
/* Zczytuję nazwę najaktualniejszego */
$strDzisiejszyXML = trim ( $arrPlikiXML[0
] );
}
$resPolalczenie = fsockopen ( "www.nbp.pl", 80
);
if ( $resPolalczenie )
{
/* Otwieram najaktualniejszy plik XML z kursami walut */
$strHeaders = 'GET /Kursy/xml/' . $strDzisiejszyXML . '.xml HTTP/1.0' . "rn";
$strHeaders .= 'Host: www.nbp.pl' . "rn";
$strHeaders .= 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl-PL; rv:1.7.10) Gecko/20050717 Firefox/1.0.6' . "rnrn";
fputs ( $resPolalczenie, $strHeaders );
while ( ! feof ( $resPolalczenie ) ) {
/* Wrzucam do tablicy */
$arrXMLKursy[] = fgets ( $resPolalczenie, 128
); }
$intArrLn = count ( $arrXMLKursy );
/* Ucinam 10 pierwszysch linii, które są nagłówkami HTTP wysłanymi przez NBP */
for ( $i = 11 ; $i < $intArrLn ; $i++ )
{
if ( $i == 12 )
{
/* Dokładam link do XSL, żeby sformatowac dane */
$strXMLKursy .= '<?xml-stylesheet type="text/xsl" href="style.xsl"?>' . "rn";
}
$strXMLKursy .= $arrXMLKursy[$i];
}
/* Zawartość będzie wyrzucana do przeglądarki jako xml */
header ( 'Content-Type: text/xml' );
/* Wyrzucam XML do przeglądarki */
}
?>
Formatowanie:
<?xml version="1.0" encoding="iso-8859-2"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<title>
<xsl:apply-templates select="//numer_tabeli" />
</title>
<style type="text/css">
body, td
{
font-family: Georgia, Arial;
font-size: 12px;
}
td, th
{
border: 1px dashed black;
}
th
{
background-color:#EEEEEE;
}
h1
{
font-size:16px;
font-weight:bold;
}
</style>
</head>
<body>
<h1>
<xsl:apply-templates select="//numer_tabeli" />
<br />
<xsl:apply-templates select="//data_publikacji" />
</h1>
<table cellpadding="5">
<tr>
<th><strong>Waluta</strong></th>
<th><strong>Kurs</strong></th>
</tr>
<xsl:apply-templates select="//pozycja" />
</table>
</body>
</html>
</xsl:template>
<xsl:template match="pozycja">
<tr>
<td><xsl:value-of select="nazwa_waluty" /> <xsl:value-of select="kod_waluty" /></td>
<td><xsl:value-of select="kurs_sredni" /></td>
</tr>
</xsl:template>
<xsl:template match="tabela_kursow">
<xsl:value-of select="numer_tabeli" />
</xsl:template>
<xsl:template match="tabela_kursow">
<xsl:value-of select="data_publikacji" />
</xsl:template>
</xsl:stylesheet>