Potrzebuję podzielić następujący plik XML na podstawie wcześniej określonej wartości, dla tego przykładu, załóżmy, że chcę ograniczyć węzeł "Przedmiot" do trzech (3) w każdym z nich. Plik został utworzony.Podziel plik XML na wiele plików na podstawie wartości progowej
Oto przykładowy plik XML wejściowe:
<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>
Pożądana moc na podstawie wartości progowej 3, byłyby trzy pliki, z których dwa zawierają 3 „produkt”, a ostatni zawierający pozostałe "przedmioty", które byłyby jednym.
Oto próbka mojego XSLT, która pozwala mi podzielić je dla każdego elementu, co skutkuje siedmioma oddzielnymi plikami, jednak chcę ograniczyć rozmiar pliku w oparciu o pewien limit "Pozycji" węzeł na plik.
<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>
Dobre pytanie, +1. Zobacz moją odpowiedź na proste rozwiązanie. –