2011-08-17 33 views
0

Xalan-J讓我們create and manipulate java objects使用它的擴展機制。我想要做的是從Java(從調用Xalan的JVM中)傳遞一個已經創建的對象,然後從xslt中操縱這個對象。有沒有在JAXP或Xalan XSLT範圍內綁定Java對象的方法?

例如,我會想要做這樣的事情:

Transformer transformer = tFactory.newTransformer(new StreamSource(xsl)); 
HashMap mymap = ... 
transformer.setParameter("MapToBeManipulatedByXsl", mymap); 
transformer.transform(...) 
String fromXSL = mymap.get("some-key-added-by-xsl"); 

這可能嗎?

回答

2

這與Xalan-J的集成水平並不相同,但是到目前爲止我使用XSL處理Java對象的最簡單方法是使用JAXB將對象轉換爲/來自XML。

JAXB允許您使用標籤指定您的Java對象的註釋,這些標籤指定您希望它們如何顯示在其等效的XML文檔中,然後執行將Java-to-XML和XML-to-Java轉換的所有工作。把你的Java對象,通過JAXB運行,通過它運行你的XSL,然後通過JAXB運行它來獲得Java對象。

這種技術的好處包括:

  • 你是不依賴於特定的XSL環境或解釋。您的 XSL僅在XML上運行。
  • 的從Java到XML,然後再返回翻譯的JRE, 的核心部分,並且不需要任何第三方庫
  • 您可以單元獨立測試Java 應用環境您的XSL,通過傳遞文本文件和驗證 輸出
+0

雖然不是我正在尋找,但仍然是一個不錯的主意。謝謝 –