我有很多xslt
文件,它們有時包含某些相同對象的完全重複信息。是否有可能將它帶到另一個xslt
並將其包含在現有的內部?如何做到這一點?帶有重複信息的xslt集
1
A
回答
2
<xsl:include>
有助於模塊化XSLT代碼,但本身並不刪除重複的代碼。
一個XSLT的最根本的特徵 - templates - 如果使用得當,可以顯著消除任何代碼重複:
模板的匹配模式不同類型的節點匹配其上模板將被應用 - 當在處理相同匹配模式的不同實例的許多地方使用相同的代碼時,這消除了重複。雖然可以使用類似於函數/子例程的方式調用模板,但使用
<xsl:apply-templates>
- 選擇匹配的模板更加強大和靈活 - 後者類似於在OOP中調用基本類型的虛擬函數 - 我們不知道執行時將存在哪些派生對象,以及相應虛擬函數中可能有多少特化(覆蓋)中的哪些將被選中執行。上述技術與相結合,將參數傳遞給模板有助於消除只有一些值/節點不同的重複代碼。
使用模板可以模擬高階函數(HOF)並將模板/函數作爲參數傳遞給另一個模板/函數,並返回模板函數作爲應用模板/函數的結果。可以使用功能組合和部分應用程序動態創建新功能。 FXSL庫爲XSLT 1.0和XSLT 2.0實現HOF。
在即將到來的XPath 3.0/XSLT 3.0中,HOF是該語言的標準功能。函數可以作爲參數傳遞並作爲結果返回給其他函數。匿名(內聯)函數可以在XPath 3.0表達式中動態創建。新的標準XPath 3.0函數
fold-left()
,fold-right()
和map()
是通常在任何函數式編程語言中使用的最基本的函數。它們的使用可以顯着減少代碼大小和代碼重複。
1
你應該利用<xsl:include>
看一看http://www.xml.com/pub/a/2000/11/01/xslt/index.html或 Is there a kind of include once in XSLT?
最好的問候, 彼得
相關問題
- 1. XSLT信息採集
- 2. 獲取帶有附加信息的重複項
- 3. 如何刪除具有最少信息集的重複行?
- 4. UIScrollView重複信息
- 5. 帶有重複/重複元素的Python「集合」
- 6. 帶有多個集合的XSLT分組
- 7. 插入帶複選框的信息
- 8. 關於XSLT的信息
- 9. 提取的信息與XSLT
- 10. XSL重複信息問題
- 11. JSON保存重複信息
- 12. 用nosql重複信息?
- 13. 帶有標記集羣及其信息窗口的Google地圖
- 14. 如何生成帶有DTD引用的linq到xml信息集?
- 15. 帶重疊元素的XSLT?
- 16. 從大型數據集(> 100Mio行)中刪除重複信息
- 17. 了重複的信息,而從歷史
- 18. 算法來搜索重複的信息?
- 19. 擺脫PHP中的重複信息
- 20. python ood - 類之間的重複信息
- 21. 返回重複信息的SQL查詢
- 22. 更改城市時重複的信息
- 23. 帶有錯誤信息的XAMPP
- 24. 帶有文件信息的CaptureStackBackTrace
- 25. 帶有附加信息的SQL查詢
- 26. 帶有列表提供信息的JFrame
- 27. 帶有Symfony框架的PHP MP3信息
- 28. 帶有額外信息的Django表格
- 29. 返回帶有信息的ID MySQL/PHP
- 30. 帶有SMTP詳細信息的PHPMailer
很好的解釋;我個人使用僅用於所需變量的長列表; +1 –
Peter
@Peter,是的,XSLT模板和模式匹配是一個非常強大的功能 - 通常在其他語言中缺少。 –