如何将节点分组5000个元素

时间:2012-08-03 10:29:16

标签: c# xslt

我有一个很大的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>
我能这样做吗?

2 个答案:

答案 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>