Xml XSLT2.0-如何通过选择X个节点来为每个节点创建结果
我试图获取一个包含40000多个节点的XML文档,并将文档分成10000个或更少节点的段 例如,项目节点重复40000多次的XML:Xml XSLT2.0-如何通过选择X个节点来为每个节点创建结果,xml,xslt,Xml,Xslt,我试图获取一个包含40000多个节点的XML文档,并将文档分成10000个或更少节点的段 例如,项目节点重复40000多次的XML: <catalog> <item> <partno> </partno> </item> </catalog> 我试图实现这样一种结构,即在文档完成之前,每10000个项目都会创建一个新的段 <segment> <Item></It
<catalog>
<item>
<partno>
</partno>
</item>
</catalog>
我试图实现这样一种结构,即在文档完成之前,每10000个项目都会创建一个新的段
<segment>
<Item></Item>(10,000 max)
</segment>
<segment>
<Item></Item>(10,000 max)
</segment>
(最多10000)
(最多10000)
我确信我可以用模来实现这一点,但我想知道是否有更优雅的方法。您可以在XSLT2.0中尝试这一点
<xsl:template match="catalog">
<xsl:for-each-group select="item" group-by="(position() - 1) idiv 10000">
<segment>
<xsl:copy-of select="current-group()"/>
</segment>
</xsl:for-each-group>
</xsl:template>
您可以在XSLT2.0中尝试这一点
<xsl:template match="catalog">
<xsl:for-each-group select="item" group-by="(position() - 1) idiv 10000">
<segment>
<xsl:copy-of select="current-group()"/>
</segment>
</xsl:for-each-group>
</xsl:template>
我建议使用
分组相邻
的方式,而不是对每个分组使用,分组相邻
,如果您移动到XSLT 3,您可以轻松使用流,而无需更改分组代码(您只需将模式设置为
):
我建议使用分组相邻
的方式,而不是对每个分组使用,分组相邻
,如果您移动到XSLT 3,您可以轻松使用流,而无需更改分组代码(您只需将模式设置为
):
谢谢你,鲁佩什!这是完美的工作方式,比我将要解决的问题要优雅得多。谢谢鲁佩什!这是一个完美的解决方案,比我要解决的问题要优雅得多。