我有多種類型的xml消息,我需要通過將多個節點分組到同一個父節點(同一個父節點共享相同的節點名稱,並聲明的每個屬性也相同)來「壓縮」。例如:xslt按屬性分組
<TopLevel CodeTL="Something">
<Ratings>
<Rating CodeA="ABC" Start="1-1-2012" End="1-2-2012">
<RatingByNumber Code="X" Rating="10" Number="1">
<RatingByNumber Code="X" Rating="19" Number="2">
</Rating>
</Ratings>
</TopLevel>
<TopLevel CodeTL="Something">
<Ratings>
<Rating CodeA="ABC" Start="1-2-2012" End="1-3-2012">
<RatingByNumber Code="X" Rating="10" Number="1">
<RatingByNumber Code="X" Rating="19" Number="2">
</Rating>
</Ratings>
</TopLevel>
<TopLevel CodeTL="Something">
<Ratings>
<Rating CodeA="XYZ" Start="1-2-2012" End="1-3-2012">
<RatingByNumber Code="X" Rating="10" Number="1">
<RatingByNumber Code="X" Rating="19" Number="2">
</Rating>
</Ratings>
</TopLevel>
<TopLevel CodeTL="Something">
<Ratings>
<Rating CodeA="XYZ" Start="1-2-2012" End="1-3-2012">
<RatingByNumber Code="X" Rating="30" Number="3">
<RatingByNumber Code="X" Rating="39" Number="4">
</Rating>
</Ratings>
</TopLevel>
注意如何將它們共享相同的CodeTL屬性和最後2共享相同的CODEa所,開始和結束屬性,所以我需要的是使用XSLT
<TopLevel CodeTL="Something">
<Ratings>
<Rating CodeA="ABC" Start="1-1-2012" End="1-2-2012">
<RatingByNumber Code="X" Rating="10" Number="1">
<RatingByNumber Code="X" Rating="19" Number="2">
</Rating>
<Rating CodeA="ABC" Start="1-2-2012" End="1-3-2012">
<RatingByNumber Code="X" Rating="10" Number="1">
<RatingByNumber Code="X" Rating="19" Number="2">
</Rating>
<Rating CodeA="XYZ" Start="1-2-2012" End="1-3-2012">
<RatingByNumber Code="X" Rating="10" Number="1">
<RatingByNumber Code="X" Rating="19" Number="2">
<RatingByNumber Code="X" Rating="30" Number="3">
<RatingByNumber Code="X" Rating="39" Number="4">
</Rating>
</Ratings>
</TopLevel>
產生以下輸出
這是更清潔,並根據使用它的應用程序,它可能節省處理時間和節省空間。
我遇到的問題是我有不同類型的xml消息具有不同的節點名稱和屬性(和屬性數量),但它們都共享我在這裏展示的相同結構。 這將是一個很好的通用方法來處理所有這些,但我會很感激XSLT轉換我提供的示例,所以我可以爲我需要發送的每個xml消息創建自定義代碼。
這似乎真的是我想要的,除了我被1.0困住了。我會看看我能否做點什麼。感謝您的詳細解答。 – 2012-07-10 12:24:16
@EdFox:在XSLT 1.0中,使用了相同的想法,但使用兩遍轉換,第一遍創建每個元素的副本並添加包含簽名的特殊新元素(或屬性)。在第二遍中,我們對這個特殊元素/屬性進行簡單的Muenchian分組。 – 2012-07-10 12:28:59
你可以添加1.0版本到你的文章?對不起,我仍然有點被xslt所淹沒,所以我不確信我可以將你的解釋翻譯成實際的代碼。 – 2012-07-10 13:11:09