JDeveloper的映射程序的XML轉換(XSLT)是創建使用圖形界面和自動映射XML轉換的有力工具。不幸的是,它支持的功能範圍有限,並且映射稍微複雜一些,無法實現。如何使用JDeveloper Mapper提供的全部可用XSLT函數?
是否有可能使用JDeveloper與可用的XSLT的功能完整的範圍是什麼?或者,我必須選擇使用JDeveloper映射器還是可以訪問所有XSLT功能?
JDeveloper的映射程序的XML轉換(XSLT)是創建使用圖形界面和自動映射XML轉換的有力工具。不幸的是,它支持的功能範圍有限,並且映射稍微複雜一些,無法實現。如何使用JDeveloper Mapper提供的全部可用XSLT函數?
是否有可能使用JDeveloper與可用的XSLT的功能完整的範圍是什麼?或者,我必須選擇使用JDeveloper映射器還是可以訪問所有XSLT功能?
您可以隨時通過使用源視圖得到充分的權力和直接修改代碼。但是,當你移動回設計視圖,JDeveloper的告訴你,有錯誤代碼,直到你解決這些問題,你不能使用設計視圖。
因此,一個可能的解決方案是做一切可能的圖形視圖,然後移動到源視圖和執行更加複雜的映射和XSLT的功能存在的映射。如果你這樣做,你不能回到圖形視圖。
,我發現都非常好,我一個解決方案如下: 我引入了新的標籤是如下:
<!-- show-code --> <!--
--> <!-- /show-code -->
和
<!-- hide-code -->
<!-- /hide-code -->
前兩個標記之間,您可以使用您所需的所有複雜的XSLT 2.0/XSLT 3.0函數來爲您的代碼塊提供最終解決方案的解決方案。之前或之後,你把第二對標籤和一個簡單的解決方案,它莫名其妙相同,但在一個更簡單的方法,並且使得JDeveloper中還了解到它之間。
由於real解決方案在註釋中,所以JDeveloper將能夠切換到Design View,並且您仍然可以修改其中的映射的其他部分。
執行轉換
現在執行真正改造,您預先過程用替換功能的XSLT代碼。在我的情況,這是下面的Java代碼:
private static String applyCodeReplacement(String xml) {
// Replacing string using regular expressions
xml = xml.replaceAll( "<!--\\s*show-code\\s*-->\\s*<!--","");
xml = xml.replaceAll("-->\\s*<!--\\s*/show-code\\s*-->","");
xml = xml.replaceAll("<!--\\s*hide-code\\s*-->", "<!--");
xml = xml.replaceAll("<!--\\s*/hide-code\\s*-->", "-->");
return xml;
}
這將刪除所有簡單代碼塊,並整合所有的複雜的。現在,您剩下一個XSLT文件,它完全按照您希望的方式執行。而且您仍然可以在JDeveloper的設計視圖中打開並修改它。