Wenden Sie XSLT Stylesheet auf Amazon Product Advertising API XML Output anPhp

PHP-Programmierer chatten hier
Anonymous
 Wenden Sie XSLT Stylesheet auf Amazon Product Advertising API XML Output an

Post by Anonymous »

Ich versuche, mein XSLT Stylesheet auf die Amazon -API XML -Ausgabe anzuwenden und einen Filmtitel auf der Seite < /p>

Dies ist meine XSLT -Datei (Amazon.xsl): < /p>














Movie title




< /code>

Dies ist Amazon API XML Ausgabe: < /p>






a1138e89-4335-4650-80f2-641e3c58b623











0.0189320000000000





The Dark Knight Rises (Blu-ray/DVD Combo+UltraViolet Digital Copy)





< /code>

Ich habe den folgenden PHP -Code gefunden und verwendet, um nach dem Filmtitel zu suchen und ihn auf der Seite anzuzeigen. Es zeigt es jedoch nur in einfachem Text an. Ich möchte einen XSLT -Stil darauf anwenden, aber ich weiß nicht, wie ich ihn richtig in meinen PHP -Code einbeziehen soll.include('aws_signed_request.php');

$public_key = 'XXXXXXXXXXXXXXXXXXXX';
$private_key = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
$associate_tag = 'xxxxxxxxxxxxxxxxxxxxxxxxx';

// generate signed URL
$request = aws_signed_request('co.uk', array(
'Operation' => 'ItemLookup',
'ItemId' => 'B004LWZWGK',
'ResponseGroup' => 'Small'), $public_key, $private_key, $associate_tag);

// do request (you could also use curl etc.)
$response = @file_get_contents($request);
if ($response === FALSE) {
echo "Request failed.\n";
} else {

// parse XML
$xsl = new DOMDocument;
$xsl->load('amazon.xsl');

$proc = new XSLTProcessor();
$proc->importStyleSheet($xsl);

$doc = DOMDocument::loadXML($response);
$transform = $proc->transformToXML($doc);
$pxml = simplexml_load_string($transform);

if ($pxml === FALSE) {
echo "Response could not be parsed.\n";
} else {
if (isset($pxml->Items->Item->ItemAttributes->Title)) {
echo $pxml->Items->Item->ItemAttributes->Title, "\n";
}
}

}
< /code>

******************
function aws_signed_request($region, $params, $public_key, $private_key, $associate_tag=NULL, $version='2011-08-01')
{
/*
Parameters:
$region - the Amazon(r) region (ca,com,co.uk,de,fr,co.jp)
$params - an array of parameters, eg. array("Operation"=>"ItemLookup",
"ItemId"=>"B000X9FLKM", "ResponseGroup"=>"Small")
$public_key - your "Access Key ID"
$private_key - your "Secret Access Key"
$version (optional)
*/

// some paramters
$method = 'GET';
$host = 'webservices.amazon.'.$region;
$uri = '/onca/xml';

// additional parameters
$params['Service'] = 'AWSECommerceService';
$params['AWSAccessKeyId'] = $public_key;
// GMT timestamp
$params['Timestamp'] = gmdate('Y-m-d\TH:i:s\Z');
// API version
$params['Version'] = $version;
if ($associate_tag !== NULL) {
$params['AssociateTag'] = $associate_tag;
}

// sort the parameters
ksort($params);

// create the canonicalized query
$canonicalized_query = array();
foreach ($params as $param=>$value)
{
$param = str_replace('%7E', '~', rawurlencode($param));
$value = str_replace('%7E', '~', rawurlencode($value));
$canonicalized_query[] = $param.'='.$value;
}
$canonicalized_query = implode('&', $canonicalized_query);

// create the string to sign
$string_to_sign = $method."\n".$host."\n".$uri."\n".$canonicalized_query;

// calculate HMAC with SHA256 and base64-encoding
$signature = base64_encode(hash_hmac('sha256', $string_to_sign, $private_key, TRUE));

// encode the signature for the request
$signature = str_replace('%7E', '~', rawurlencode($signature));

// create request
$request = 'http://'.$host.$uri.'?'.$canonicalized_query.'&Signature='.$signature;

return $request;
}
< /code>

Ich weiß, dass es viel Code ist, aber alles in PHP funktioniert vollkommen in Ordnung und ich bekomme einen Filmtitel auf der Seite. Ich möchte nur mein XSLT -Stylesheet darauf anwenden. Ich bin sehr neu in PHP und kann nicht herausfinden, wie es richtig geht.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post