2013-06-19 126 views
0

我的客戶總是給我一個平坦的XML文件,如下所示:變扁XML結構

<Root> 
    <ROW> 
    <KIND>A</KIND> 
    <DATA>Produc 1</DATA> 
    <DATA>Details</DATA> 
    </ROW> 
    <ROW> 
    <KIND>A</KIND> 
    <DATA>Product 2</DATA> 
    <DATA>Details</DATA> 
    </ROW> 
    <ROW> 
    <KIND>B</KIND> 
    <DATA>Product 3</DATA> 
    <DATA>Details</DATA> 
    </ROW> 
    <ROW> 
    <KIND>B</KIND> 
    <DATA>Product 4</DATA> 
    <DATA>Details</DATA> 
    </ROW> 
</Root> 

我需要KIND分組的XML如下:

<Root> 
    <KIND>A 
    <DATA>Product 1</DATA> 
    <DATA>Details</DATA> 
    <DATA>Product 2</DATA> 
    <DATA>Details</DATA> 
    </KIND> 
    <KIND>B 
    <DATA>Product 3</DATA> 
    <DATA>Details</DATA> 
    <DATA>Product 4</DATA> 
    <DATA>Details</DATA> 
    </KIND> 
</Root> 

我不知道現在的WOW我可以完成它嗎?謝謝你們。

+0

XSLT 1.0或2.0? – ABach

+0

XSLT 2.0。將用於Adobe InDesign。 –

+0

XSLT 2.0使用for-each-group指令解決了這些類型的分組問題 - 有許多SO問題可以解釋如何執行此操作:http://stackoverflow.com/search?q=%5Bxslt%5D+%22for - 每個組%22)。讓我們知道您是否有特定的問題作爲您的嘗試來解決。 – ABach

回答

2
<xsl:for-each-group select="ROW" group-by="KIND"> 
    <KIND> 
    <xsl:value-of select="current-grouping-key()"/> 
    <xsl:copy-of select="current-group()/*"/> 
    </KIND> 
</xsl:for-each-group> 

但我同意凱文布朗 - 你的輸出設計比輸入的設計還要差。

+0

是的,我也同意。輸入文件來自excel,輸出用於圖形設計應用程序,這就是爲什麼它很簡單。謝謝大家幫助我。 :) –