2013-02-15 69 views
0

JDeveloper的映射程序的XML轉換(XSLT)是創建使用圖形界面和自動映射XML轉換的有力工具。不幸的是,它支持的功能範圍有限,並且映射稍微複雜一些,無法實現。如何使用JDeveloper Mapper提供的全部可用XSLT函數?

是否有可能使用JDeveloper與可用的XSLT的功能完整的範圍是什麼?或者,我必須選擇使用JDeveloper映射器還是可以訪問所有XSLT功能?

回答

1

您可以隨時通過使用源視圖得到充分的權力和直接修改代碼。但是,當你移動回設計視圖,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的設計視圖中打開並修改它。

相關問題