部落格
XEP validate error: XXX cannot have a value of ""
最近趕 SLBU301 的過程中,用 XEP 跑 PDF 時,都會出現類似下列的錯誤:
(document [system-id file:stdin] (validate [error] Attribute 'border-bottom-width' cannot have a value of "". [validation total: 1 error] Parse error: Invalid XSL FO source 'file:stdin': 1 error found during validation
其中報錯的 Attribute 名稱每次都不一樣,FO 的內容卻完全正確。懷疑的原因如下:
- XSLT Processor 設定有錯
- DocBook XML/XSL Source 有誤
- XEP 的 Bug
不過,經過縝密的檢查卻沒有找到錯誤的地方。
Java 鬆綁 (三):利用 ServiceLoader 實作動態載入
在前兩篇文章中,我們看到了如何利用 Java 多型的技巧,鬆綁類別之間的關係;也看到如何透過動態載入的技巧,來鬆綁 Package。不過還不是很完美,至少我是這樣認為。
在「Java 鬆綁 (二):利用 Package 與動態載入徹底鬆綁」這篇文章中,係利用 Class.forName()
這個古老的方法來實作動態載入的功能,個人覺得非常的麻煩且缺乏彈性。比較理想的作法,係利用 Java EE 或者 SpingFramework 提供的 CDI (Contexts & Dependency Injection) 來實作這樣的要求。
不過 Java EE 容器雖然是 Java 世界中的標準,但重量級的執行環境,對於一個小的專案來說,非常的不值得;而 SpingFramework 雖然夠輕量化 (但近期的發展也趨向於重量),但卻不是標準的作法,實作與部署時必須考慮執行的環境中是否提供所需的條件。
Java 鬆綁 (一):利用多型鬆綁類別的依賴關係
在學習 OO 的過程中,很多前輩先進都會強調「鬆綁」的原則。所謂的鬆綁,就是把元件與元件之間依賴關係降到最低。鬆綁之後可以讓我們未來維護與擴充功能時,能夠更加的方便。為達成鬆綁原則,會充分利用 OOP 語言本身提供的機制來實作之,以 Java 為例,我們會利用多型來完成鬆綁的效果。
例如:我需要寫一個打招呼的程式,沒有考慮鬆綁原則時,可以這樣寫:
package org.cdchen.serviceloaders.apps; public class SayHelloMain { public static void main(String[] args) { System.out.println("Hello to cdchen."); } }
這樣的寫法非常的直接與單純,但卻產生了一個問題:如果以後要改用其他方式打招呼,就得重新修改程式,並且重新編譯才行。為此,我們可以考慮這樣做:
Fixing WebContent Problems in Eclipse
在使用 Eclipse 開發 Dynamic Web Application 時,如果想要變更 WebContent/
的路徑名稱,可以參考「Fixing WebContent Problems in Eclipse」這篇文章的方法。
Sharing session data between contexts HOW-TO
「Sharing session data between contexts HOW-TO」好東西,收錄起來!!