我發現只有一次嘗試創建這樣的編譯器 - http://sourceforge.net/projects/xsltc/。 但是這個項目已經死了十年了。還有其他的例子嗎?開源還是商業?是否有任何可用的XSLT到C++編譯器?
構建此類軟件是否存在任何基礎技術困難?用本機編譯XSLT的整個方法?
我想有很好的使用它的地方 - 我們不需要改變XSLT,但仍然希望獲得更高的性能(可能會降低內存要求)。
是否有任何其他原因,該軟件可能不像它看起來那麼高效? - 是否將XSLT處理器解釋爲高效編譯的?
我發現只有一次嘗試創建這樣的編譯器 - http://sourceforge.net/projects/xsltc/。 但是這個項目已經死了十年了。還有其他的例子嗎?開源還是商業?是否有任何可用的XSLT到C++編譯器?
構建此類軟件是否存在任何基礎技術困難?用本機編譯XSLT的整個方法?
我想有很好的使用它的地方 - 我們不需要改變XSLT,但仍然希望獲得更高的性能(可能會降低內存要求)。
是否有任何其他原因,該軟件可能不像它看起來那麼高效? - 是否將XSLT處理器解釋爲高效編譯的?
從我的理解來看,XSLT不再流行了。一般來說,使用自己喜歡的XML庫作爲選擇語言,解析XML數據,編寫代碼以便按照需要的方式格式化輸出會更容易,更強大。
另一方面,它似乎已經取得了一些成功。有些情況下它很有用。 Check this SO question瞭解更多關於XSLT優缺點的細節。
無論如何,軟件開發人員通常並不是XSLT的忠實擁躉,這可以解釋爲什麼在C++中編寫優化的XSLT解析器沒有什麼大動作。
XSLT絕對是一個後天的口味。算上我喜歡的一堆吧。 – ChaosPandion 2010-02-24 00:11:13
更強大?這是無稽之談。 XSLT是純粹的權力。不受歡迎?誰在乎。重要的是,它不是死語言,並且不會很長時間。 – 2010-07-23 04:18:31
@ChaosPandion同意,一旦你真的想處理XML轉換,沒有什麼東西可以接近XSLT。我做過的最好的選擇之一就是嘗試XSLT。 – TechZilla 2015-12-23 23:12:47
XSLT是一種具有某些模式匹配功能的語言。
您可以將其作爲一組模式定向規則進行編譯,並通過元匹配確保在一瞬間適用的所有模式都得到有效處理。
編譯模式定向規則的語言已經很好理解了;在80年代初看到Charles Forty的Rete網絡和過去二十年的衍生工作。
所以如果有人想這樣做,他們可以。經濟激勵在哪裏?
如果沒有要做到這一點,你需要一個工具,可以處理XSLT作爲一組模式 而不是使用XML處理器,它以其他方式似乎是把它asdumb XML文檔。而且您希望能夠操作/編寫模式並生成目標機器代碼。你需要一個設計來操縱符號結構的工具。
LISP會很好,但是解析XML(可以用汗水修復)並不是特別好,並且不擅長處理生成的C++代碼(只能用大量的汗水來修復)。
我們的DMS Software Reengineering Toolkit是一個旨在將正式文檔作爲部分進行處理的系統,它與編譯器將源代碼作爲一組語言結構處理的方式基本相同。 它具有XML解析器,並且可以在組成部分中操作C++代碼段,並且可以通過應用C++優化源到源程序轉換規則來優化結果。 (大量的汗水已經投入到C++操作中)。
我們已經完成了使用DMS的模式定向規則編譯器,而不是XSLT,而是通過元匹配模式並跟蹤所引發的更改狀態來編譯這些源到源程序轉換規則。你會得到一個真正的大自動機(類似於LR解析表變得很大)來實現翻譯。
雖然沒有爲XSLT做過這些工作。
邁克爾Kay博士剛剛宣佈薩克森/ C http://www.saxonica.com/saxon-c/index.xml
從產品的主頁:
薩克森/ C是撒克遜-HE對C/C alpha版本++編程 平臺。目前提供的API可以從C/C++或PHP 應用程序運行XSLT 2.0。
許可
該產品是開源。主許可證是Mozilla Public 許可證版本2.0。在大多數情況下,源文件被標記爲 「與二級許可證不兼容」,這意味着 代碼不能與根據GPL許可證發佈的代碼結合使用( 原因是難以聯繫所有以前的貢獻者 以獲得他們的同意。)
某些組件根據BSD樣式許可證在Apache版本2.0許可證或 下許可。有關許可的詳細信息,請參閱 許可證
下載
請點擊下面的鏈接下載撒克遜-C的安裝程序。
libsaxon-HEC-setup.zip(30 MB)
嗨,關於PostgreSQL使用它的一些線索? – 2017-08-25 15:10:33
也許是因爲,對於大多數問題,編寫C++使用一個體面的XML庫比使用XSLT更容易? – 2010-02-23 11:11:03
海洋,**有好消息**。看到我的回答:) http://stackoverflow.com/a/20275114/36305 – 2013-11-28 21:42:53