Je dois diviser le fichier XML suivant en fonction d'une valeur prédéterminée, pour cet exemple, supposons que je veux limiter le nœud "Item" à trois (3) dans chaque fichier créé.Diviser le fichier XML en plusieurs fichiers basés sur une valeur de seuil
Voici un fichier XML d'entrée exemple:
<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 sortie souhaitée en fonction de la valeur seuil de 3, aurait trois fichiers, dont deux contiennent 3 « Item », et le dernier contenant le reste "articles", ce qui serait un.
Voici un exemple de mon XSLT qui me permet de les séparer pour chaque article, ce qui donne sept fichiers séparés, mais je souhaite limiter la taille du fichier en fonction d'une certaine limite de "Item" nœud par fichier.
<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>
Bonne question, +1. Voyez ma réponse pour une solution simple. –