2013-04-09 3 views
0

로컬 XML 파일 (제목, 배우, 런타임 등)의 영화 정보와 Amazon API 제품 정보 (제품 제목 및 그림)을 외부에서 표시하는 다음 XSLT 코드가 있습니다. 아마존 xml. XSLT - 행의 하위 요소 표시

<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 및 BluRay 제품)에 대해 두 가지 제품을 표시합니다.

문제는 내 XSLT가 Amazon 제품 제목을 한 번에 표시하고 한 번에 두 그림을 모두 표시한다는 것입니다. 하지만 내가 원하는 것은 Amazon 제품 제목 + 그림 (DVD)을 표시 한 다음 다른 Amazon 제품 제목 + 그림 (BluRay)을 표시하는 것입니다.

내가 얻을 출력 :

bad

을 그리고 이것은 내가 달성하고자하는 것입니다 :

good

답변

1

당신은 당신이 요구하는지가 있어요. 이 행

<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:template match="aws:Item"> 
    <xsl:value-of select="aws:ItemAttributes/aws:Title" /> 
    <br/> 

    <img src="{aws:MediumImage/aws:URL}"/> 
    <br/> 
</xsl:template> 

및 덧붙여이

<xsl:apply-templates select="$inputRoot/aws:ItemLookupResponse/aws:Items/aws:Item"/> 

처럼 사용이 보는 나의 처음이다 여기에 XSLT 코드의 "너무 많은"템플릿 분해. 더 자주 당신은 그 반대의 문제를 보게 될 것입니다.

+0

그게 완벽합니다! 도와 줘서 고마워, 하포. 그것은 모두 당신이 그것을 설명했던 방식으로 완벽하게 이해합니다. – Alex