我有一个很大的xml文件。
<Users>
<User id="2" name="ABC">
<Data>text</Data>
</User>
<User id="3" name="xyz">
<Data>text</Data>
</User>
<User id="4" name="LMN">
<Data>text</Data>
</User>
...
</Users>
我需要5000个组节点来分割它。有人喜欢这样:
<xsl:for-each-group select=" " group-by="by 5000">
<xsl:result-document method="xml" href="file_{@somename}-output.xml">
<xsl:copy-of select="."/>
</xsl:result-document>
</xsl:for-each-group>
我能这样做吗?
答案 0 :(得分:1)
怎么样
<xsl:for-each-group group-starting-with="*[position() mod 5000 = 1]">
假设您要分组的节点是兄弟节点,并且不与其他节点混合。
答案 1 :(得分:1)
尝试以下几行:
<xsl:template match="Users">
<xsl:for-each-group select="User" group-by="(position() - 1) idiv 5000">
<xsl:result-document href="file{current-grouping-key()}.xml">
<Users>
<xsl:copy-of select="current-group()"/>
</Users>
</xsl:result-document>
</xsl:for-each-group>
</xsl:template>