2006/11/22

xtags library 使用上的BUG

我們要做一個 Web 介面供人員查詢資料檢核結果。原來的 Web 設計是用JSP讀取資料庫資料,然後 output 成 XML 直接回傳給 Client 的 Browser。而這個回傳的 XML 有標記搭配的 XSL,Browser 在讀取這個 XML 後,會去找到搭配的 XSL 以產出 Html 型態顯示。也就是說,將 XML & XSL 的處理交給 Client Browser。

這樣的方法發現一些問題,會有一些 IE Browser 無法正常顯示 (Mozilla Firefox 好像就沒這種問題)。我們推測是 Browser 對 XML 與 XSL 的支援上有問題 (可是找不出問題在哪!?)。後來,我們決定修改設計,將 XML & XSL 的結合,改由 Server 處理,所以我們在 Tomcat Web Server 上 加裝了 xtags library。

用 xtags library 處理 XML 其實很容易,只要在 JSP 程式裏加上一些 TAG 就好。

例 1 : 直接處理一個已存在的 XML File
<xtags:style xml="test.xml" xsl="test.xsl>>
</xtags:style>

例 2 : 內嵌 XML
<xtags:style xsl="test.xsl">
<root>
<childnode></childnode>
</root>
</xtags:style>

也可以這樣 :
<xtags:style xsl="test.xsl">
<%
out.println("<root>");
%>
<childnode><% =varible %></childnode><br /> </root>
</xtags:style>

然而,如果是用"例 2"的方法,會有怪問題
JSP 的結果會問隔性的出現 "IOException : Stream Closed"
也就是說,執行第一次會成功,第二次失敗,第三次又成功,第四次又失敗....

這個問題是 Tomcat 與 xtags library 的問題,目前無解。但可以改用以下方法來避開這個問題:
<xtags:parse id="myreport">
<root>
> <childnode></childnode>
</root>
</xtags:parse>
<xtags:style document="<%" %>"">


這樣就不會有 Stream Closed 的錯誤,也解決了之前 Browser 的問題....

沒有留言:

張貼留言