我有以下 XSLT 代码,它显示来自本地 XML 文件(标题、演员、运行时等)的电影信息和来自外部亚马逊 xml 的 Amazon API 产品信息(产品标题和图片)。
<xsl:variable name="moviesXML" select="document('movies.xml')"/>
<xsl:variable name="inputRoot" select="/"/>
<xsl:param name="movieID"/>
<xsl:template match="/">
<html>
<head>
<title>Movie details</title>
</head>
<body>
<xsl:for-each select="$moviesXML/movies/movie[@movieID=$movieID]">
<xsl:value-of select="title" />
<xsl:value-of select="actors" />
...
<xsl:apply-templates select="$inputRoot/aws:ItemLookupResponse/aws:Items/aws:Item/aws:ItemAttributes/aws:Title"/>
<xsl:apply-templates select="$inputRoot/aws:ItemLookupResponse/aws:Items/aws:Item/aws:MediumImage/aws:URL"/>
</xsl:for-each>
</body>
</html>
</xsl:template>
<xsl:template match="aws:Title">
<xsl:value-of select="." />
<br/>
</xsl:template>
<xsl:template match="aws:URL">
<img src="{.}"/>
<br/>
</xsl:template>
因此,根据从上一页传递的movieID,上面的代码显示了该特定电影的所有相关信息。我使用 Amazon API 为每部电影显示两种产品(DVD 和蓝光产品)。
我遇到的问题是我的 XSLT 一次显示两个亚马逊产品标题,然后同时显示两个图片。但我想要的是显示亚马逊产品标题+图片(DVD),然后是另一个亚马逊产品标题+图片(蓝光)。
这是我得到的输出:
这就是我想要实现的目标: