0

你好

我有以下 xml,我正在尝试编写 xslt。在这个 XML 中有一些书籍,其中可能有电影标签。所以每当标签是内联数据并且内容类型是电影时,我必须遍历该标签,它应该显示为

第一个链接

(这本书的电影可以在这里找到。)

第二个链接

(图片图标)电影

因此,每本书都有两个链接,它们将显示在站点的不同位置。我的问题是如何在遍历完成后跟踪电影名称。我无法为同一本书第二次遍历。如何使用相同的变量或标志。请任何人都可以提供相同的 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>
4

1 回答 1

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>
于 2013-04-23T13:33:18.940 回答