古い RDF ベースの RSS 1.0 フィードを生成するレガシー システムと、ほとんどの RSS リーダーが HTTP 基本認証を処理できないため、このフィードを読み取って ATOM フィードを生成する PHP スクリプトが必要です。それから(HTTP Authを処理できる素晴らしいリーダーがここにあるので、見栄えは良いですが、残念ながらRSS 1.0に対応できません)。
しばらくの間、グーグルで検索しましたが、ほとんど見つかりませんでした。これは私が今試したコードですが、XSLT が機能せず、XSLT については何も知りません)、ここから取得しました。HTTP Basic Auth の背後にいることは既に機能していますが、そのままにしておきます。
$https_user = "thisismyhttpbasicusername";
$https_password = "thisismyhttpbasicpassword";
$https_server = "sometld.tld/dokuwiki/feed.php";
$opts = array('http' =>
array(
'method' => 'GET',
'header' => "Content-Type: text/xml\r\n".
"Authorization: Basic ".base64_encode("$https_user:$https_password")."\r\n",
'content' => $body,
'timeout' => 60
)
);
$context = stream_context_create($opts);
$url = 'http://'.$https_server;
$xml = file_get_contents($url, false, $context, -1, 40000);
$xsl = file_get_contents("http://sometld.tld/minitools/rdf2atom.xslt");
$xslDoc = new DOMDocument();
$xslDoc->loadXML($xsl);
$xmlDoc = new DOMDocument();
$xmlDoc->loadXML($xml);
$proc = new XSLTProcessor();
$proc->importStylesheet($xslDoc);
echo $proc->transformToXML($xmlDoc);
これは XSLT ファイルです。
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<items>
<xsl:copy-of select="//item">
<xsl:apply-templates/>
</xsl:copy-of>
</items>
</xsl:template>
</xsl:stylesheet>
出力はすべての要素である必要があるため、それらを要素でラップして、RSS 1.0 を処理しない RSS リーダーで読み取れるようにすることができます。
システムによって生成される RSS は次のようになります。
<rdf:RDF
xmlns="http://purl.org/rss/1.0/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel> ... </channel>
<item rdf:about="http://sometld.tld/dokuwiki/doku.php?id=interessante_und_hilfreiche_links&rev=1368016122&do=diff">
<dc:format>text/html</dc:format>
<dc:date>2013-05-08T14:28:42+02:00</dc:date>
<dc:creator>akku</dc:creator>
<title>interessante_und_hilfreiche_links</title>
<link>http://sometld.tld/dokuwiki/doku.php?id=interessante_und_hilfreiche_links&rev=1368016122&do=diff</link>
<description>
* .NET Framework Setup Verification Tool <- This .NET Framework setup verification tool is designed to automatically perform a set of steps to verify the installation state of one or more versions of the .NET Framework on a computer. It will verify the presence of files, directories, registry keys and values for the .NET Framework. It will also verify that simple applications that use the .NET Framework can be run correctly.</description>
</item>
<item>... more items ... </item>
</rdf:RDF>
RSS 1.0 を Atom 形式のフィードに変換できる PHP ベースのスクリプトを知っていますか? または、私が使用している XSLT を修正できますか? 参考までに、現在の実際の出力は次のようになります。
<?xml version="1.0"?>
<items/>