Tôi cần chia tệp XML sau dựa trên giá trị được xác định trước, cho ví dụ này, giả sử tôi muốn giới hạn nút "Mục" thành ba (3) trong mỗi giá trị tệp đã được tạo.Tách tệp XML thành nhiều tệp dựa trên giá trị ngưỡng
Dưới đây là một ví dụ tập tin đầu vào 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>
Các đầu ra mong muốn dựa trên giá trị ngưỡng 3, sẽ là ba tác phẩm, hai trong số đó chứa 3 "Item", và người cuối cùng có chứa còn lại "các mục", sẽ là một mục. Đây là một mẫu XSLT của tôi cho phép tôi chia nhỏ chúng cho từng mục, kết quả thành bảy tệp riêng biệt, tuy nhiên, điều tôi mong muốn là giới hạn kích thước của tệp dựa trên giới hạn nhất định của "Mục" nút trên mỗi tệp.
<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>
Câu hỏi hay, +1. Xem câu trả lời của tôi cho một giải pháp đơn giản. –