我有兩個不同的XML文件重複:movies.xml和亞馬遜商品廣告API XMLXSLT - 轉換兩種不同的XML文件合併成一個沒有元素
這是將兩個XML文件我的XSLT文件:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:aws="http://webservices.amazon.com/AWSECommerceService/2011-08-01"
exclude-result-prefixes="aws">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="/">
<xsl:element name="html">
<xsl:element name="head">
<xsl:element name="h2">Movies list</xsl:element>
</xsl:element>
<xsl:element name="body">
<xsl:apply-templates select="/movies/movie"/>
<xsl:apply-templates select="aws:ItemLookupResponse/aws:Items/aws:Item/aws:ItemAttributes/aws:Title"/>
</xsl:element>
</xsl:element>
</xsl:template>
<xsl:template match="movie">
<xsl:element name="a">
<xsl:attribute name="href">movie_details.php?movieID=<xsl:value-of select="@movieID"/></xsl:attribute>
<xsl:value-of select="title"/>
</xsl:element>
<xsl:element name="br" />
</xsl:template>
<xsl:template match="aws:Title">
<xsl:element name="h2">Amazon Movie 1</xsl:element>
<xsl:value-of select="." />
</xsl:template>
</xsl:stylesheet>
申請模板選擇=「/電影/電影 - 從movies.xml載荷的5部電影列表,並將其顯示爲超鏈接
申請模板選擇=」 AWS:ItemLoo kupResponse/aws:Items/aws:Item/aws:ItemAttributes/aws:Title「 - 從Amazon API xml文件加載電影標題並將其顯示爲純文本。
這是我的HTML輸出:
<html>
<head>
<h2>Movies list</h2>
</head>
<body>
<a href="movie_details.php?movieID=1">The Dark Knight Rises</a>
<br/>
<a href="movie_details.php?movieID=2">Lawless</a>
<br/>
<a href="movie_details.php?movieID=3">Inception</a>
<br/>
<a href="movie_details.php?movieID=4">Looper</a>
<br/>
<a href="movie_details.php?movieID=5">Django Unchained</a>
<br/>
</body>
</html>
<html>
<head>
<h2>Movies list</h2>
</head>
<body><h2>Amazon Movie 1</h2>Dark Knight Rises [Blu-ray] [2012] [US Import]</body>
</html>
正如你可以看到這兩個模板都顯示這將導致顯示兩次兩個模板磁頭組件「電影榜」不同的HTML標籤。
如果我能以某種方式將這兩個模板放到一個HTML元素中,那麼不會有任何重複。我嘗試過幾種方法,但還沒有成功。
這是我的PHP文件,它創建兩個XML文件和一個XSLT樣式表。它還會爲亞馬遜產品生成一個簽名的URL。
include('aws_signed_request.php');
$public_key = 'XXXXXXXXXXXXXXXXXXXXXX';
$private_key = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
$associate_tag = 'xxxxxxxxxxxxxxxxxxxxxxx';
// 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
$xml = new DOMDocument();
$xml->load('movies.xml');
$xml2 = new DOMDocument();
$xml2->loadXML($response);
$xsl = new DOMDocument;
$xsl->load('movies_list.xsl');
$proc = new XSLTProcessor();
$proc->importStyleSheet($xsl);
echo $proc->transformToXML($xml);
echo $proc->transformToXML($xml2);
}
movies.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="index.xsl"?>
<movies
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="movies.xsd">
<movie movieID="1">
<title>The Dark Knight Rises</title>
</movie>
<movie movieID="2">
<title>Lawless</title>
</movie>
<movie movieID="3">
<title>Inception</title>
</movie>
<movie movieID="4">
<title>Looper</title>
</movie>
<movie movieID="5">
<title>Django Unchained</title>
</movie>
</movies>
亞馬遜產品廣告API XML
<ItemLookupResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2011-08-01">
<OperationRequest>
<HTTPHeaders>
<Header Name="UserAgent" Value="Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22"/>
</HTTPHeaders>
<RequestId>a1138e89-4335-4650-80f2-641e3c58b623</RequestId>
<Arguments>
<Argument Name="Operation" Value="ItemLookup"/>
<Argument Name="Service" Value="AWSECommerceService"/>
<Argument Name="Signature" Value="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"/>
<Argument Name="AssociateTag" Value="xxxxxxxxxxxxxx"/>
<Argument Name="Version" Value="2011-08-01"/>
<Argument Name="ItemId" Value="B004LWZWGK"/>
<Argument Name="AWSAccessKeyId" Value="xxxxxxxxxxxxxxxxxxxx"/>
<Argument Name="Timestamp" Value="2013-03-21T13:56:55.000Z"/>
<Argument Name="ResponseGroup" Value="Small"/>
</Arguments>
<RequestProcessingTime>0.0189320000000000</RequestProcessingTime>
</OperationRequest>
<Items>
<Item>
<ItemAttributes>
<Title>
The Dark Knight Rises (Blu-ray/DVD Combo+UltraViolet Digital Copy)
</Title>
</ItemAttributes>
</Item>
</Items>
</ItemLookupResponse>
瀏覽器輸出:
。
亞歷克斯,同時顯示XML的文件的一些片斷...... – michi 2013-03-21 22:45:32
我已經更新我的職務與XML文件 – Alex 2013-03-21 23:05:31