【发布时间】:2009-11-30 06:01:49
【问题描述】:
我正在使用 XSLT 1.0 来转换一些 XML 文档。我有一个问题要做一件事,我需要一些帮助:
我的 XML 文档中有一组项目,例如:
<item1>...</item1>
<item2>...</item2>
<!-- ... -->
<itemN>...</itemN>
我想根据 delta(每页的项目)创建类似的东西,例如 delta 是三个:
<page>
<item1>...</item1>
<item2>...</item2>
<item3>...</item3>
</page>
<page>
<item4>...</item4>
<item5>...</item5>
<item6>...</item6>
</page>
所以,基本上是在 XSLT 中创建一个 XML 结构,每页将放置固定数量的项目。
如果尝试过这样的事情(为了使用节点集):
<xsl:variable name="all_items_per_delta">
<xsl:for-each select="item">
<!-- if position is one or if mod of 3 then insert a page node,
so for first contract and for 3th, 6th, 9th... item -->
<xsl:if test="position() = 1">
<page>
</xsl:if>
<!-- in the meantime for every contract insert the contract node -->
<item>
<!-- ... -->
</item>
<!-- if position is one or if mod of 3 then insert a page node,
so for first item and for 3th, 6th, 9th... item-->
<xsl:if test="( (position() mod 3) = 0) ) and ( position() != last() )">
</page>
<page>
</xsl:if>
<!-- if the position is last just end the page element -->
<xsl:if test="position() = last()"> `
</page>
</xsl:if>
</xsl:for-each>
</xsl:variable>
但这不起作用,因为 xslt 解析器说
'Expected end of tag 'page'
这是我要添加的第一个<page> 标签。看来我必须在同一行结束页面选项卡</page>。不幸的是,<xslt:if> 不起作用。
请指教,我怎样才能制作这种树片段结构,以便以后使用 EXSL 扩展提取节点集。 谢谢。
【问题讨论】:
标签: xslt