我有这样的图像数据:
<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>
对于每个preview
,thumbnail
都有一个pageNr
。
如何对数据进行分组并将<img>
嵌套到<a>
代码中?
答案 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>