我正在試圖將XML文件拆分爲2個單獨的文件。它們必須在特定元素中的字符串長度上進行拆分。在字符串長度上使用xslt將XML拆分爲多個文件
我一直在試圖使用<xsl:for-each-group>
和<xsl:result-document>
元素來做到這一點,但只得到結果文件中第一個匹配的'對象'。
例如:
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book>
<bookId>4125151</bookId>
<author>John Davies</author>
</book>
<book>
<bookId>1000257896</bookId>
<author>Lee Frost</author>
</book>
<book>
<bookId>1234569870</bookId>
<author>Joe Walters</author>
</book>
<book>
<bookId>2145789</bookId>
<author>Sarah Wyer</author>
</book>
<book>
<bookId>4085151</bookId>
<author>Jane Cohen</author>
</book>
</books>
XSL:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="books">
<xsl:for-each-group select="book[string-length(bookId)!=10]" group-by="string-length(book/bookId)">
<xsl:result-document href="file:/C:/devFiles/legacy.xml">
<xsl:copy-of select="." />
</xsl:result-document>
</xsl:for-each-group>
</xsl:template>
</xsl:stylesheet>
結果應該是由約翰·戴維斯,喬·沃爾特斯,莎拉Wyer和康珍書都被保存在遺產。 xml
我在正確的軌道上嗎?有沒有更好的辦法?
在此先感謝!
爲什麼李弗洛斯特的書不會與喬沃爾特斯的書相同?兩者都有10個字符的「bookId」。 - 另外,你會提到多個文件:其他文件的名稱是什麼,以及它將包含哪些內容? –
對不起,你是對的。 Joe Walters應該與Lee Frost在另一個文件中 - 在另一個文件中。 至於'多個'文件,在這種情況下,我只需要2個文件。 legacy.xml(bookIds長度不超過10)&current.xml(bookIds長度爲10)。 – shiny76