2012-09-17 1 views
0

안녕여러 링크 트래버스는

나는 XML을 아래로하고 난 XSLT를 작성하려합니다. 이 XML에는 영화 태그가있을 수있는 책이 있습니다. 태그가 인라인 데이터 및 콘텐츠 형식이 영화입니다 그래서 때마다 나는 그 태그를 통과해야하고 그것은

1 링크처럼

표시해야합니다 (이 책의 Movie 여기에 사용할 수 있습니다.)

2 링크

(그림 아이콘) Movie

각 책마다 사이트의 다른 위치에 표시되는 링크가 두 개 있습니다. 나에게있어서 문제는 일단 트래버스가 끝나면 영화 이름의 트랙을 유지하는 방법이다. 같은 책에 대해 두 번째로 트래버스 할 수는 없습니다. 동일한 변수 또는 플래그를 사용하는 방법. 누구나 XSLT를 제공 할 수 있습니까?

입력 XML이 같은

<Book><body> 
<movie xmlns:xlink="http://www.w3.org/1999/xlink"> 
    <caption> 
     <p>Testing data</p> 
     <p> 
      (A 
      <inline-data 
       content-type="Movie" xlink:href="video1.mpg" 
       xlink:title="Movie" xlink:type="simple">Movie 
      </inline-data> 
      of this Part is available here.) 
     </p> 
    </caption> 
</movie> 
<movie xmlns:xlink="http://www.w3.org/1999/xlink"> 
    <caption> 
     <p>Testing data</p> 
     <p> 
      (This movie 
      <inline-data 
       content-type="Movie" xlink:href="video2.mpg" 
       xlink:title="Movie" xlink:type="simple">Movie 
      </inline-data> 
      is available here.) 
     </p> 
    </caption> 
</movie> 
</body></Book> 
+1

당신이 우리에게 당신이 게시 한 XML 샘플에 대한 만들려는 HTML을 보여줄 수 있습니까? 일반적으로 동일한 노드를 여러 번 처리하려는 경우 다른 모드 (http://www.w3.org/TR/xslt#modes)로 템플릿을 정의한 다음 정의한 모드에 템플릿을 적용하면됩니다. –

답변

0

당신이 찾고있는 수 있음 뭔가 :

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:xlink="http://www.w3.org/1999/xlink"> 
    <xsl:output indent="yes"/> 
    <xsl:template match="Book"> 
    <xsl:choose> 
     <xsl:when test="body/movie"> 
     <xsl:for-each select="//movie"> 
      <p><xsl:apply-templates select="caption/p[2]"/></p> 
     </xsl:for-each> 
     </xsl:when> 
     <xsl:otherwise> 
     <html> 
      <head><title>Movie</title></head> 
      <body> 
      <xsl:text>No Movie present</xsl:text> 
      </body> 
     </html> 
     </xsl:otherwise> 
    </xsl:choose> 
    </xsl:template> 

    <xsl:template match="inline-data"> 
    <a href="{@xlink:href}"><xsl:apply-templates/></a> 
    </xsl:template> 
</xsl:stylesheet> 
관련 문제