我有以下的XML数据集(简体),在那里我可以从零到无穷的物品(一般会有2-10):使用XSLT格式化XML元素转换为HTML两个一组
<item template="event_element">
<mytitle>This is the first title</mytitle>
<mydate>20110330T143004</mytitle>
<mydescription>This is the first description</mytitle>
<mylink>www.example.com</mytitle>
</item>
.
.
<item template="event_element">
<mytitle>This is the Tenth title</mytitle>
<mydate>20110330T143004</mytitle>
<mydescription>This is the tenth description</mytitle>
<mylink>www.example.com</mytitle>
</item>
我的最终结果应该是这样的,在那里我可以拥有多套项目(将由JavaScript的旋转)结束:
<div class="body">
<div class="rel" id="arrangement">
// First set of items goes here
<div class="item">
<div class="itm">
<div class="in">
<p>
<a href="MY LINK" title="MY LINK DESCRIPTION">
<span>MY DATE</span>
<strong>MY FIRST TITLE</strong>
MY SHORT DESCRIPTION...
</a>
</p>
</div>
</div>
<div class="itm last">
<div class="in">
<p>
<a href="MY LINK" title="MY LINK DESCRIPTION">
<span>30. mar 2011</span>
<strong>MY SECOND TITLE</strong>
MY SHORT DESCRIPTION...
</a>
</p>
</div>
</div>
<div class="clr"></div>
</div>
// Second set of items goes here
<div class="item">
<div class="itm">
<div class="in">
<p>
<a href="MY LINK" title="MY LINK DESCRIPTION">
<span>MY DATE</span>
<strong>MY THIRD TITLE</strong>
MY SHORT DESCRIPTION...
</a>
</p>
</div>
</div>
<div class="itm last">
<div class="in">
<p>
<a href="MY LINK" title="MY LINK DESCRIPTION">
<span>30. mar 2011</span>
<strong>MY FORTH TITLE</strong>
MY SHORT DESCRIPTION...
</a>
</p>
</div>
</div>
<div class="clr"></div>
</div>
<div class="clr"></div>
</div>
我的问题是通过我的项目步进(应该连按th排序e date desc)并将它们分成两组。
今天我不得不硬编码套这样当它是($的eventfolder,$ totalevents变量已预先定义):
<pre><code><div class="body">
<div class="rel" id="arrangement">
<xsl:if test="$totalevents > 0">
<div class="item">
<xsl:for-each select="$eventfolder/item[@template='event_element' and position() > 0 and position() < 3]">
<xsl:choose>
<xsl:when test="position() < $eventsperpage">
<div class="itm">
<xsl:call-template name="renderEvent" />
</div>
</xsl:when>
<xsl:otherwise>
<div class="itm last">
<xsl:call-template name="renderEvent" />
</div>
<div class="clr"></div>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</div>
</xsl:if>
<xsl:if test="$totalevents > 2">
<div class="item">
<xsl:for-each select="$eventfolder/item[@template='event_element' and position() > 2 and position() < 5]">
<xsl:choose>
<xsl:when test="position() < $eventsperpage">
<div class="itm">
<xsl:call-template name="renderEvent" />
</div>
</xsl:when>
<xsl:otherwise>
<div class="itm last">
<xsl:call-template name="renderEvent" />
</div>
<div class="clr"></div>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</div>
</xsl:if>
<div class="clr"></div>
</div>
</div>
</code></pre>
的renderElement模板只是呈现的内部事件HTML。
但这种方式是不是,如果我想显示多套比2非常实用的 - 甚至在每一组显示更多的内容... XSLT文件将是大且无法读取...
任何帮助我怎么能解决这个问题,因为我不知道如何插入HTML标记,因为XSLT编译器不能看到它们被关闭 - 即。 (当test="position() = 1
插入html开始标记,然后当test="position() = X
关闭标记)。
在此先感谢
您可以添加您当前的xslt,以便我们可以更好地提供建议,这听起来像您试图根据列表中的位置创建输出标签,而不是应用模板! – Treemonkey 2011-03-30 14:12:47
't在那里,只有Markdown和OP在一起玩的不错:) – Wrikken 2011-03-30 14:13:53
关于一个方面的说明:如果它是公开的,可能是一件好事,可以将hEvent类/标签添加到搜索引擎优化中。 – Wrikken 2011-03-30 14:15:06