我需要根據預定值拆分以下XML文件,對於此示例,假設我想將「Item」節點限制爲每個內部的三個(3)文件已創建。根據閾值將XML文件拆分爲多個文件
這裏的一個樣本輸入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>
基於的3閾值的所希望的輸出,將三個文件,其中兩個包含3「項」,並含有剩餘的最後一個「項目」,這將是一個。
下面是我的XSLT樣本,它允許我爲每個項目分割它們,這會導致七個單獨的文件,但是,我希望基於「Item」的某個限制來限制文件的大小節點每個文件。
<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。查看我的答案獲得簡單的解決方案。 – 2010-12-13 22:00:41