Le code PHP de "playlist-video-search.php"

<?php
/*Récupération des paramêtres*/
$searchterm = $_GET["s"];
$username = $_GET["user"];
$startindex = $_GET["sind"];
$maxresults = $_GET["max"];
/*Appel à la feuille XSL*/
@$xslDoc = new DOMDocument();
$xslDoc->load("playlist-video-search.xsl");
/*Connection aux données GDATA XML*/
@$xmlDoc = new DOMDocument();
$xmlDoc->load("http://gdata.youtube.com/feeds/videos?format=5&vq=" . $searchterm . "&start-index=" . $startindex . "&max-results=" . $maxresults . "&key=Votre clé dévéloppeur GDATA");
/*Passage des paramêtres*/
@$proc = new XSLTProcessor();
$proc->importStylesheet($xslDoc);
$proc->setParameter('', 's', $searchterm);
$proc->setParameter('', 'sind', $startindex);
$proc->setParameter('', 'max', $maxresults);
echo $proc->transformToXML($xmlDoc);
?>

Le code XSLT de playlist-video-search.xsl

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fn="http://www.w3.org/2005/xpath-functions"
xmlns:gd="http://schemas.google.com/g/2005"
xmlns:media="http://search.yahoo.com/mrss/"
xmlns:n1="http://www.w3.org/2005/Atom"
xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/"
xmlns:xdt="http://www.w3.org/2005/xpath-datatypes"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:yt="http://gdata.youtube.com/schemas/2007">
<xsl:output method="html" encoding="ISO-8859-1" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
<!-- Récupération des paramêtres passés par querystring à PHP -->
<xsl:param name="s" />
<xsl:param name="sind" />
<xsl:param name="max" />
<xsl:variable name="XML" select="/"/>
<!-- Début du template -->
<xsl:template match="/">
<!-- Début HTML -->
<html>
<head>
<title>Playlist Vidéo de "<xsl:value-of select="$s"/>" avec Youtube</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<link rel="cannonical" href="playlist-video-search-{$s}-1-50.html" />
<!-- CSS -->
<link rel="stylesheet" href="css/playlist-video.css" media="screen" />
<!-- JS -->
<script type="text/javascript" src="js/youtube-static.js"></script>
<script type="text/javascript" src="js/swfobject.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript" src="js/jquery.easing.1.3.js"></script>
<script type="text/javascript" src="js/jquery.elastislide.js"></script>
</head>
<body>
<!-- Affichage du player Youtube -->
<xsl:for-each select="$XML">
<xsl:for-each select="n1:feed">
<xsl:if test="n1:entry[1]">
<div class="youtubevideo">
<div id="cur_video">
<xsl:for-each select="n1:entry[1]/media:group/media:content">
<xsl:if test="@type = 'application/x-shockwave-flash'">
<embed>
<xsl:attribute name="src">
<xsl:value-of select="@url"/><xsl:value-of select="'&amp;autoplay=1'"/>
</xsl:attribute>
<xsl:attribute name="width">100%</xsl:attribute>
<xsl:attribute name="height">255px</xsl:attribute>
<xsl:attribute name="allowFullScreen">true</xsl:attribute>
<xsl:attribute name="allowScriptAccess">always</xsl:attribute>
<xsl:attribute name="quality">high</xsl:attribute>
<xsl:attribute name="autoplay">1</xsl:attribute>
<!--<xsl:attribute name="allowFullScreen">true</xsl:attribute>-->
<!--<xsl:attribute name="fs">1</xsl:attribute>-->
<!--<xsl:attribute name="bgcolor">#fff</xsl:attribute>-->
<xsl:attribute name="id">cur_video_swf</xsl:attribute>
<xsl:attribute name="name">cur_video_swf</xsl:attribute>
</embed>
</xsl:if>
</xsl:for-each>
</div>
</div>
</xsl:if>
<!-- Affichage du caroussel des miniatures de navigation -->
<div id="carousel" class="es-carousel-wrapper">
<div class="es-carousel">
<ul class="youtubethumbs">
<xsl:for-each select="n1:entry">
<xsl:if test="position() > 0">
<xsl:for-each select="media:group">
<li class="youtubethumb">
<xsl:for-each select="media:content">
<xsl:if test="@type = 'application/x-shockwave-flash'">
<a>
<xsl:attribute name="href">#</xsl:attribute>
<xsl:attribute name="onmousedown">PlayVideo('<xsl:value-of select="@url"/>','#', 'Youtube', true);</xsl:attribute>
<xsl:attribute name="onclick">return false;</xsl:attribute>
<xsl:for-each select="../media:thumbnail[1]">
<xsl:element name="img">
<xsl:attribute name="src"><xsl:value-of select="@url"/></xsl:attribute>
</xsl:element>
</xsl:for-each>
<h2><xsl:value-of select="substring(../media:title,1,45)"/> ...</h2>
<!-- Affichage de la description de la vidéo DESACTIVEE <xsl:value-of disable-output-escaping="no" select="../media:description"/>-->
</a>
</xsl:if>
</xsl:for-each>
</li>
</xsl:for-each>
</xsl:if>
</xsl:for-each>
</ul>
</div>
</div>
<p>Cliquez sur les vignettes ci-dessus pour lancer une vidéo de "<strong><xsl:value-of select="$s"/></strong>"</p>
<!-- Navigation et pagination des vidéos -->
<!--DESACTIVEE Sans réécriture d'URL <xsl:if test="$sind &gt; ($max)">
<a href="playlist-video-.php?user={$user}&amp;sind={$sind - $max}&amp;max={$max}">Vidéos précédentes</a> |
</xsl:if>
<a href="playlist-video.php?user={$user}&amp;sind={$sind + $max}&amp;max={$max}" rel="next">voir + de vidéos de <xsl:value-of select="$user"/></a>
-->
<!--Avec réécriture d'URL-->
<p>
<a href="liste-videos-{$s}-1-{$max}.html">Retour aux 1ères vidéos de "<xsl:value-of select="$s"/>"</a><br />
<a href="liste-videos-{$s}-{$sind + $max}-{$max}.html" rel="next">voir + de vidéos de "<xsl:value-of select="$s"/>"</a><br />
<xsl:if test="$sind &gt; ($max)">
<a href="liste-videos-{$s}-{$sind - $max}-{$max}.html" rel="prev">Vidéos précédentes</a>
</xsl:if>
</p>
</xsl:for-each>
</xsl:for-each>
<script type="text/javascript">
$('#carousel').elastislide({
imageW : 120,
minItems : 2
});
</script>
</body>
</html>
<!-- FIN HTML -->
</xsl:template>
</xsl:stylesheet>