我想將XML文檔轉換作爲一次性命令和獨立腳本編寫,就像我使用Unix工具(如grep
,sed
,awk
等)來處理文本文件一樣。這些腳本必須在Linux和Windows之間可移植(使用Cygwin即可)。'選擇和轉換'XML轉換語言?
如果你已經定期做這個,你使用什麼解決方案?你能推薦它嗎? 。
(一些背景資料:
現在,我想從一組XML文檔中刪除某種元素的 我經常需要做這種系統的XML文檔的改寫; 有時候,在(在命令行上,我用了很多); 更多的時候,我想要構建更復雜的轉換,將它們保存到文件中,然後從文件中執行它們
所以我想要一個XML轉換腳本語言可以在命令行上使用。 類似sed
或針對XML文檔的:其命令將指定一個選擇器,用於選擇輸入文檔中的節點,以及指定如何處理每個選定節點上的文檔的操作。
通常我會用XML::LibXML寫出一個Perl腳本。 這工作,但它確實不適合該法案:
- 語法:代碼過於冗長要在命令行上
- 語義上使用:「選擇與改造」模式不給定,我必須明確地編程,這種行爲在我的代碼,因此它是不必要很難讓讀者明白,那就是究竟發生什麼事
- 語法/語義:讀或寫這個代碼需要在語言一般流暢
The對於使用任何其他通用編程語言也是如此。
嗯,這是XSLT的發明,對不對?
也許; I can use XSLT,但它確實遭受同樣的缺點。
更好的匹配是xmlstarlet:它確實就像sed
,因爲它支持我想要的類型的簡短而神祕的命令。但是,就像sed一樣,從這些命令組成的大型程序也很難理解。
另一個想法是使用jQuery DOM manipulation:
- 更強大的選擇比的XPath
- 優雅和緊湊的方式相結合的選擇和操作
- 內置任意JavaScript函數的可擴展性(但沒有按」 t 要求對於簡單情況下的很多JavaScript知識)
好,但我你要用一個工具,它允許我用這樣的表達作爲獨立的腳本:
jqmanip --html '$(a:parent).detach()' foo.html > bar.html
jqmanip convert-tables-to-divs.jqm foo.html > bar.html
這是排序實用程序我在找的)
更新:我剛剛發現了另一種這樣的語言:[XDT](http://msdn.microsoft.com/en-us/library/dd465326.aspx)。 – reinierpost