के आधार पर एक्सएमएल फ़ाइल को एकाधिक फ़ाइलों में विभाजित करें, मुझे इस उदाहरण के लिए निम्न XML फ़ाइल को विभाजित करने की आवश्यकता है, इस उदाहरण के लिए, मान लें कि मैं "आइटम" नोड को तीन (3) में प्रत्येक के भीतर सीमित करना चाहता हूं फ़ाइल बनाई गई।थ्रेसहोल्ड मान
<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>
3 की दहलीज मूल्य के आधार पर वांछित आउटपुट, तीन फ़ाइलें, जिनमें से दो को शामिल 3 "आइटम" होगा, और पिछले एक शेष युक्त
यहां नमूने के इनपुट एक्सएमएल फ़ाइल है "आइटम", जो एक होगा।
यहां मेरे एक्सएसएलटी का नमूना है जो मुझे प्रत्येक आइटम के लिए विभाजित करने की अनुमति देता है, जिसके परिणामस्वरूप सात अलग-अलग फाइलें होती हैं, हालांकि, मेरी इच्छा है कि "आइटम" की एक निश्चित सीमा के आधार पर फ़ाइल के आकार को सीमित करना है। प्रति फ़ाइल नोड।
<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>
अच्छा प्रश्न, +1। एक साधारण समाधान के लिए मेरा जवाब देखें। –