模板显示从数据库生成的数据集。数据集中有很多行。
对数据集中的每一行执行 <xsl:template match="Photos">
。数据集中的每一行都有一个图像。
我只想重复<td id="tdImage">
,但其余的只能执行一次。
这样做的目的是让图像水平显示,而不是垂直显示。
<xsl:template match="Photos">
<table width = "600">
<tr style="width:600;">
<xsl:if test = "SequenceNumber=1" >
<td colspan ="5" class ="input">Photos:</td>
</xsl:if>
</tr>
<tr style="width:600;">
<td id="tdImage">
<table width ="150">
<tr>
<td style ="padding-left:15px">
<table width ="150">
<tr style="width:150px;">
<td style="width:135px;">
<a href = '{src}' style="font-size:10px;">
<xsl:value-of select="FileName"/>
</a>
</td>
</tr>
<tr style="width:150px;">
<td style="width:150px;">
<img type = "hidden" Width="75" Height="75" src='{src}' />
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
提前致谢!
编辑:数据集的示例
SequenceNumber | FileName | src
---------------------------------------------------------------------
1 | flowers.jpg | blabla.ashx?SequenceNumber=1
2 | light.jpg | blabla.ashx?SequenceNumber=2
3 | garden.jpg | blabla.ashx?SequenceNumber=3
4 | candy.jpg | blabla.ashx?SequenceNumber=4
答案 0 :(得分:0)
我不确定我能给出一个确切的答案,但作为初学者,您可能希望有一个与主数据集(所有Photos
元素的父元素)匹配的模板,您可以在其中构建表格行。
如果你只是想展示前4个,你可以从这开始......
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="html" doctype-public="XSLT-compat" omit-xml-declaration="yes" encoding="UTF-8" indent="yes" />
<xsl:template match="/*">
<table>
<tr>
<td colspan="4">Photos:</td>
</tr>
<tr>
<xsl:apply-templates select="Photos[position() < 5]" />
</tr>
</table>
</xsl:template>
<xsl:template match="Photos">
<td>
<a href = '{src}' style="font-size:10px;">
<xsl:value-of select="FileName"/>
</a>
<br />
<img Width="75" Height="75" src='{src}' />
</td>
</xsl:template>
</xsl:stylesheet>
注意我已经简化了“照片”模板,因为实际上不推荐嵌套在表格中的表格。
另一方面,如果您有超过4张照片并且想要每行显示4张照片,您可以选择每行开头显示的第一张照片(即位置1,5,9的照片,等),然后从每一个中建立一行。
尝试这个XSLT
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="html" doctype-public="XSLT-compat" omit-xml-declaration="yes" encoding="UTF-8" indent="yes" />
<xsl:template match="/*">
<table>
<tr>
<td colspan="4">Photos:</td>
</tr>
<xsl:for-each select="Photos[position() mod 4 = 1]">
<tr>
<xsl:apply-templates select="self::*|following-sibling::Photos[position() < 4]" />
</tr>
</xsl:for-each>
</table>
</xsl:template>
<xsl:template match="Photos">
<td>
<a href = '{src}' style="font-size:10px;">
<xsl:value-of select="FileName"/>
</a>
<br />
<img Width="75" Height="75" src='{src}' />
</td>
</xsl:template>
</xsl:stylesheet>