Necesito dividir el siguiente archivo XML basado en un valor predeterminado, para este ejemplo, supongamos que quiero limitar el nodo "Artículo" a tres (3) dentro de cada archivo creado.Dividir archivo XML en varios archivos según un valor de umbral
Aquí hay un ejemplo de archivo XML de entrada:
<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>
La salida deseada en función del valor umbral del 3, habría tres archivos, dos de los cuales contienen 3 "artículo", y el último contiene el restante "artículos", que sería uno.
Aquí hay una muestra de mi XSLT que me permite dividirlos para cada elemento, lo que resulta en siete archivos separados, sin embargo, lo que deseo es limitar el tamaño del archivo basado en un cierto límite de "Artículo" nodo por archivo.
<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>
Buena pregunta, +1. Vea mi respuesta para una solución simple. –