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 に答える