Devo dividere il seguente file XML in base a un valore predeterminato, per questo esempio, assumiamo che io voglia limitare il nodo "Articolo" a tre (3) all'interno di ciascun file creato.Dividere il file XML in più file in base a un valore di soglia
Ecco un esempio di file di input XML:
<Items>
<Item>
<Title>Title 1</Title>
<DueDate>01-02-2008</DueDate>
</Item>
<Item>
<Title>Title 2</Title>
<DueDate>01-02-2009</DueDate>
</Item>
<Item>
<Title>Title 3</Title>
<DueDate>01-02-2010</DueDate>
</Item>
<Item>
<Title>Title 4</Title>
<DueDate>01-02-2011</DueDate>
</Item>
<Item>
<Title>Title 5</Title>
<DueDate>01-02-2012</DueDate>
</Item>
<Item>
<Title>Title 6</Title>
<DueDate>01-02-2013</DueDate>
</Item>
<Item>
<Title>Title 7</Title>
<DueDate>01-02-2013</DueDate>
</Item>
</Items>
L'output desiderato in base al valore soglia del 3, sarebbero tre file, due dei quali contengono 3 "Item", e l'ultimo che contiene il restante "articoli", che sarebbero uno.
Ecco un esempio del mio XSLT che mi consente di suddividerli per ciascun elemento, che risulta in sette file separati, tuttavia, ciò che desidero è limitare la dimensione del file in base a un determinato limite di "Elemento" nodo per file.
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:output method="xml" indent="yes" name="xml" />
<xsl:template match="/">
<xsl:for-each select="//Item">
<xsl:variable name="nTitle" select="Title"/>
<xsl:variable name="filename" select="concat('Items\',$nTitle,'-','.xml')" />
<xsl:value-of select="$filename" />
<xsl:result-document href="{$filename}" format="xml">
<xsl:copy-of select="."/>
</xsl:result-document>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Buona domanda, +1. Vedi la mia risposta per una soluzione semplice. –