用于HTML的XSLT分组

时间:2016-08-09 07:15:43

标签: xslt

我有这样的图像数据:

<data>
    <image>
        <type>preview</type>
        <pageNr>1</pageNr>
        <url>5981-211.png</url>
    </image>
    <image>
        <type>thumbnail</type>
        <pageNr>1</pageNr>
        <url>5549a_aldj_thumb.png</url>
    </image>
    <image>
        <type>big thumb</type>
        <url>47697-4921.png</url>
    </image>
    <image>
        <type>preview</type>
        <pageNr>2</pageNr>
        <url>491-d91.png</url>
    </image>
    <image>
    <type>thumbnail</type>
        <pageNr>2</pageNr>
        <url>491-d91_thumb.png</url>
    </image>
</data>

我想创建以下HTML输出:

<a href="5981-211.png" title="1">
    <img src="5549a_aldj_thumb.png" />
</a>
<a href="491-d91.png" title="2">
    <img src="491-d91_thumb.png" />
</a>

对于每个previewthumbnail都有一个pageNr

如何对数据进行分组并将<img>嵌套到<a>代码中?

1 个答案:

答案 0 :(得分:1)

这可以通过使用键来查找“缩略图”图像来实现

<xsl:key name="thumb" match="image[type='thumbnail']" use="pageNr" />

您可以选择“预览”元素

开始
<xsl:apply-templates select="image[type='preview']"/>

在与此匹配的模板中,您将创建a标记,然后使用键选择子“thumbnail”元素

<a href="{url}" title="{pageNr}">
    <xsl:apply-templates select="key('thumb', pageNr)" />
</a>

在与缩略图匹配的模板中,您可以像这样创建img标记:

 <img src="{url}" />

试试这个XSLT

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="html" indent="yes" />

    <xsl:key name="thumb" match="image[type='thumbnail']" use="pageNr" />

    <xsl:template match="/data">
      <body>
        <xsl:apply-templates select="image[type='preview']"/>
      </body>
    </xsl:template>

    <xsl:template match="image[type='preview']">
        <a href="{url}" title="{pageNr}">
            <xsl:apply-templates select="key('thumb', pageNr)" />
        </a>
    </xsl:template>

    <xsl:template match="image[type='thumbnail']">
        <img src="{url}" />
    </xsl:template>
</xsl:stylesheet>