0

我有一个很大的 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>

我可以这样做吗?

4

2 回答 2

1

怎么样

<xsl:for-each-group group-starting-with="*[position() mod 5000 = 1]">

这是假设您要分组的节点是兄弟节点,并且不与其他节点混合。

于 2012-08-03T10:43:45.717 回答
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>
于 2012-08-03T10:43:51.540 回答