当前位置: 首页 > 工具软件 > StumbleUpon > 使用案例 >

xslt元素的使用_如何使用XSLT轻松显示您的Stumbleupon收藏夹

法风畔
2023-12-01

xslt元素的使用

Stumbleupon tutorial. Today I will tell you about another similar tutorial, but about Stumbleupon. We will create application which will show our (or any wished profile) Stumbleupon posts. And we will use XSLT transformation to parse XML (RSS) provided by Stumbleupon. I will using my profile for our sample. After some investigation I find that SU provide our list of favs in rss format here: http://www.stumbleupon.com/syndicate.php?stumbler=aramisgc – where ‘aramisgc’ is my account name. Also, we can obtain our comments too: http://www.stumbleupon.com/syndicate.php?stumbler=aramisgc&comments=1. So, we have all to start. Today I`ll show you how to display this information in any view. Here are samples and downloadable package:

Stumbleupon教程。 今天,我将向您介绍另一个类似的教程,但关于Stumbleupon。 我们将创建一个应用程序,该应用程序将显示我们(或任何希望的个人资料)Stumbleupon帖子。 我们将使用XSLT转换来解析Stumbleupon提供的XML(RSS)。 我将使用我的个人资料作为样本。 经过一番调查,我发现SU在这里以rss格式提供了我们的收藏夹列表:http://www.stumbleupon.com/syndicate.php?stumbler=aramisgc –其中“ aramisgc”是我的帐户名。 另外,我们也可以获取我们的评论:http://www.stumbleupon.com/syndicate.php?stumbler=aramisgc&comments=1。 因此,我们必须开始。 今天,我将向您展示如何在任何视图中显示此信息。 以下是示例和可下载的软件包:

现场演示

[sociallocker]

[社交储物柜]

打包下载

[/sociallocker]

[/ sociallocker]

Ok, download the source files and lets start coding !

好的,下载源文件并开始编码!

步骤1. PHP (Step 1. PHP)

Ok, here are all used PHP files:

好的,这是所有使用过PHP文件:

index.php (index.php)

This file will generate list of Stumbleupon posts. As you can see – I already put several samples ($sMethod values) for different urls. So you can try any. Quite all code commented, so I hope it will easy to understand it.

该文件将生成Stumbleupon帖子列表。 如您所见–我已经为不同的URL放置了几个示例($ sMethod值)。 因此,您可以尝试任何一种。 相当多的代码都带有注释,因此希望它易于理解。

<?php
//$sMethod = 'http://www.stumbleupon.com/syndicate.php?stumbler=aramisgc&comments=1';
$sMethod = 'http://www.stumbleupon.com/syndicate.php?stumbler=aramisgc';
$sXmlSrc = getStumbleuponStoriesXml($sMethod);
// Load the XML source
$xml = new DOMDocument;
$xml->loadXML($sXmlSrc);
// Load XSLT
$xsl = new DOMDocument;
$xsl->load('xslt/stumbleupon.xslt');
$proc = new XSLTProcessor; // configure the transformer
$proc->importStyleSheet($xsl); // attach the xsl rules
echo $proc->transformToXML($xml);
// this function get stumbleupon information using caching (not more than 1 times per hour)
function getStumbleuponStoriesXml($sUrl) {
    // our folder with cache files
    $sCacheFolder = 'cache/';
    // cache filename
    $sFilename = date('YmdH').'.xml';
    if (! file_exists($sCacheFolder.$sFilename)) {
        $ch = curl_init($sUrl);
        $fp = fopen($sCacheFolder.$sFilename, 'w');
        curl_setopt($ch, CURLOPT_FILE, $fp);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_HTTPHEADER, Array('User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15') ); // makes our request look like it was made by Firefox
        curl_exec($ch);
        curl_close($ch);
        fclose($fp);
    }
    return file_get_contents($sCacheFolder.$sFilename);
}
?>
<?php
//$sMethod = 'http://www.stumbleupon.com/syndicate.php?stumbler=aramisgc&comments=1';
$sMethod = 'http://www.stumbleupon.com/syndicate.php?stumbler=aramisgc';
$sXmlSrc = getStumbleuponStoriesXml($sMethod);
// Load the XML source
$xml = new DOMDocument;
$xml->loadXML($sXmlSrc);
// Load XSLT
$xsl = new DOMDocument;
$xsl->load('xslt/stumbleupon.xslt');
$proc = new XSLTProcessor; // configure the transformer
$proc->importStyleSheet($xsl); // attach the xsl rules
echo $proc->transformToXML($xml);
// this function get stumbleupon information using caching (not more than 1 times per hour)
function getStumbleuponStoriesXml($sUrl) {
    // our folder with cache files
    $sCacheFolder = 'cache/';
    // cache filename
    $sFilename = date('YmdH').'.xml';
    if (! file_exists($sCacheFolder.$sFilename)) {
        $ch = curl_init($sUrl);
        $fp = fopen($sCacheFolder.$sFilename, 'w');
        curl_setopt($ch, CURLOPT_FILE, $fp);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_HTTPHEADER, Array('User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15') ); // makes our request look like it was made by Firefox
        curl_exec($ch);
        curl_close($ch);
        fclose($fp);
    }
    return file_get_contents($sCacheFolder.$sFilename);
}
?>

步骤2. CSS (Step 2. CSS)

Here are used CSS file. Just few styles for our demo:

这是用过CSS文件。 我们的演示仅提供几种样式:

css / styles.css (css/styles.css)

h1{text-align:center}
.su-unit{background-color:#F3F3F3;border:1px solid #CCC;position:relative;margin:10px;padding:10px}
.su-unit h3, .su-unit div{border-bottom:1px dashed #888;padding:5px;overflow:hidden}
.su-unit div p{float:left;margin-right:20px}
.su-unit div p:first-child{font-weight:bold}
body{background:#eee;font-family:Verdana, Helvetica, Arial, sans-serif;margin:0;padding:0}
.main{background:#FFF;width:900px;font-size:80%;border:1px #000 solid;margin:3.5em auto 2em;padding:1em 2em 2em}
h1{text-align:center}
.su-unit{background-color:#F3F3F3;border:1px solid #CCC;position:relative;margin:10px;padding:10px}
.su-unit h3, .su-unit div{border-bottom:1px dashed #888;padding:5px;overflow:hidden}
.su-unit div p{float:left;margin-right:20px}
.su-unit div p:first-child{font-weight:bold}
body{background:#eee;font-family:Verdana, Helvetica, Arial, sans-serif;margin:0;padding:0}
.main{background:#FFF;width:900px;font-size:80%;border:1px #000 solid;margin:3.5em auto 2em;padding:1em 2em 2em}

步骤3. XSLT (Step 3. XSLT)

And, most interesting part of my story – used XSLT rules:

而且,我故事中最有趣的部分–使用了XSLT规则:

xslt / stumbleupon.xslt (xslt/stumbleupon.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="channel">
        <xsl:variable name="channelDescription" select="description"/>
        <xsl:variable name="authorLink" select="link"/>
        <html>
            <head>
                <link media="all" href="css/styles.css" type="text/css" rel="stylesheet"/>
            </head>
            <body>
                <div class="main">
                <h1>
                    <a>
                        <xsl:attribute name="href">
                            <xsl:value-of select="$authorLink"/>
                        </xsl:attribute>
                        <xsl:value-of select="$channelDescription"/>
                    </a>
                </h1>
                <xsl:for-each select="item">
                    <div class="su-unit">
                        <h3>
                            <a target="_blank">
                                <xsl:attribute name="title"><xsl:value-of select="title"/></xsl:attribute>
                                <xsl:attribute name="href"><xsl:value-of select="link"/></xsl:attribute>
                                <xsl:value-of select="title"/>
                            </a>
                        </h3>
                        <div><p>Description:</p><p><xsl:value-of select="description" disable-output-escaping="yes" /></p></div>
                        <div>
                            <a target="_blank">
                                <xsl:attribute name="href">
                                    <xsl:value-of select="comments"/>
                                </xsl:attribute>
                                link to comments
                            </a>
                        </div>
                        <div><p>When:</p><p><xsl:value-of select="substring(pubDate, 0, 26)"/></p></div> <!-- we will take first 26 symbols -->
                    </div>
                </xsl:for-each>
                </div>
                <xsl:comment>Copyright © AndrewP</xsl:comment>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>
<?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="channel">
        <xsl:variable name="channelDescription" select="description"/>
        <xsl:variable name="authorLink" select="link"/>
        <html>
            <head>
                <link media="all" href="css/styles.css" type="text/css" rel="stylesheet"/>
            </head>
            <body>
                <div class="main">
                <h1>
                    <a>
                        <xsl:attribute name="href">
                            <xsl:value-of select="$authorLink"/>
                        </xsl:attribute>
                        <xsl:value-of select="$channelDescription"/>
                    </a>
                </h1>
                <xsl:for-each select="item">
                    <div class="su-unit">
                        <h3>
                            <a target="_blank">
                                <xsl:attribute name="title"><xsl:value-of select="title"/></xsl:attribute>
                                <xsl:attribute name="href"><xsl:value-of select="link"/></xsl:attribute>
                                <xsl:value-of select="title"/>
                            </a>
                        </h3>
                        <div><p>Description:</p><p><xsl:value-of select="description" disable-output-escaping="yes" /></p></div>
                        <div>
                            <a target="_blank">
                                <xsl:attribute name="href">
                                    <xsl:value-of select="comments"/>
                                </xsl:attribute>
                                link to comments
                            </a>
                        </div>
                        <div><p>When:</p><p><xsl:value-of select="substring(pubDate, 0, 26)"/></p></div> <!-- we will take first 26 symbols -->
                    </div>
                </xsl:for-each>
                </div>
                <xsl:comment>Copyright © AndrewP</xsl:comment>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>

第4步。重要注意事项 (Step 4. Few important notes)

During checking my PHP file you will notice that I perform caching of Stumbleupon requests. I don`t load provided RSS often that once per hour. No need overload Stumbleupon server with often requests :)

在检查我PHP文件期间,您会注意到我执行了Stumbleupon请求的缓存。 我每小时不加载一次RSS。 无需重载经常请求的Stumbleupon服务器:)

I made ‘cache’ folder with permission to write (you should create ‘cache’ folder too).

我取得了“ cache”文件夹的写权限(您也应该创建“ cache”文件夹)。

Also I created .htaccess file in it with next content:

我也用下面的内容在其中创建了.htaccess文件:

Options -Indexes

选项-索引

Thats all.

就这样。

现场演示

结论 (Conclusion)

I hope that today’s article will very useful for your projects. Good luck!

我希望今天的文章对您的项目非常有用。 祝好运!

翻译自: https://www.script-tutorials.com/how-to-easily-display-stumbleupon-posts-using-xslt-transformation/

xslt元素的使用

 类似资料: