第一個小背景:我使用集合管理軟件GCStar來管理我的數字圖書館(漫畫/漫畫/電影,你的名字 - 除了書籍以外,它非常棒)。問題是,它不能讓我按多個鍵對貨架進行分類,例如按照Series和Episode號碼排序。隨後添加的劇集總是會在系列中顯示較低的內容。按屬性排序XML並修改
我對這些配置進行了修改,發現它使用的.gcs文件只不過是一種XML(我只是非常熟悉)。像這樣:
<?xml version="1.0" encoding="UTF-8"?>
<collection type="GCTVepisodes" items="101" version="1.6.1">
<information>
<maxId>101</maxId>
</information>
<item
id="1"
name="The Vice President Doesn't Say Anything about the Possibility of
Him Being the Main Character"
series="Baccano"
season="1"
episode="1"
...
>
<synopsis>It's 1931 and...</synopsis>
...
</item>
<item ...
該程序,據我所知,總是按照ID降序(每當我添加一集時增加)。所以,我需要在這當中,將會以變換:
- 排序XML的系列,那麼賽季,然後插曲
- 更改ID相應的屬性,從1開始到結束(也復位基於該maxId)
- 將其全部寫入到另一個XML的相同格式。
如何做到這一點(顯然不是在說這裏的切割代碼)? XSLT可以完成所有這些工作嗎?我應該看看Perl中基於樹的解析器嗎?這是週末,我在一臺Linux機器上,所以在UNIX上運行的開源解決方案會很好 - 在Perl中的某些東西可能是最好的。我應該讀什麼?
如果我在家裏不能這樣做,那麼我總是可以在辦公室設計一個小型數據存儲工作,但我真的很喜歡更簡單的解決方案。
謝謝! :)
好的,所以我完成了,人們...... :-D一開始並沒有我所希望的那麼容易。必須在幾個地方修補GCStar代碼(其他人已經完成了音樂模型的努力工作,很容易調整它並適用於電視節目模型)。現在程序按id排序,並且程序啓動腳本中的一些變化可以確保我總是運行XSLT,以便ID保持良好狀態。 –
對於這個問題。看到我的答案,知道如何使用兩個簡單的模板來獲得想要的結果。 –