Eclipse 已經包括一個非常簡單的 XML 編輯器的源代碼這個編輯器只提供 XML 語法的突出顯示它繼承 orgeclipseuieditors 包中包括的類這個包為 Eclipse 平台提供一個標准文本編輯器和基於文件的文檔提供程序這個簡單的 XML 編輯器起著代碼示例的作用您可以把它作為自己的 Eclipse XML 插件的基礎它的源代碼只能通過 Eclipse 項目向導生成您需要按下面所描述的自己編譯它
要構建這個基本 XML 編輯器轉至菜單 File => New然後選擇 Project在項目向導中選擇 Plugin Development => Plugin Project
如果看不到 Plugin Development 選項則表示 Eclipse 平台 Runtime Binary 沒有 Plugin 開發環境請到 下載頁面下載 Eclipse 平台 Plugin SDK
單擊 Next給項目命名(如 orgmyeclipsexmleditor)單擊 Next然後接受屏幕 Plugin Project Structure 上的缺省值接下來選擇 Create a plugin project using a code generation 向導然後選擇 Plugin with an editor 選項向導會自動生成該 XML 編輯器的源代碼
但仍需編譯它單擊 Next然後在下一屏幕 Simple Plugin Content 上單擊 Finish 選項; 轉至 Project 菜單並選擇 Rebuild All 來構建該項目
接下來需要使用 File => Export 菜單創建 editorjar 文件請退出 Eclipse然後復制整個 orgmyeclipsexmleditor plugin 目錄當您再次運行 Eclipse 時可將一個 XML 文件添加到您的項目中請記住這個樣本 XML 編輯器未提供任何一種驗證或語法檢查
用 XMLBuddy 編寫 XML
最受歡迎且最高級的 Eclipse XML 編輯器插件是由 Bocaloco Software 開發的 XMLBuddyXMLBuddy 是免費插件它為 Eclipse 增添了 XML 編輯能力其中包括對用戶可配置的語法著色DTD 驅動的代碼輔助驗證以及同步的提綱視圖XML Buddy 還為 Workspace 添加 XML 透視圖為 XML 文檔和 DTD 添加新的項目模板您可以象安裝任何其它 Eclipse 插件那樣安裝 XMLBuddy:只需將插件壓縮文件解壓縮至主 Eclipse 安裝目錄下的 eclipseplugins 子目錄即可記住要重新啟動 Eclipse
XML 是元標記語言XML 元素由起始標記結束標記和二者之間的數據組成因此有了語法突出顯示還需要好的編輯功能XMLBuddy(目前是版本 )用以下 XML 編輯功能擴展 Eclipse:
◆格式化可以通過選擇全部或部分代碼對整個 XML 文檔或部分文檔自動進行格式化
◆ 高級語法著色可通過 Window => Preferences => XML => Colors 菜單配置 XML 代碼著色著色可用於普通 XML 文檔DTD(內部或外部子集)和 JSP 文件
◆ XML 代碼輔助
根據文檔的 DTD
可為元素或其它標記名稱
屬性名稱及屬性值提供輔助
◆擴展字符編碼支持XMLBuddy 根據 XML 規范自動檢測文檔編碼它接受
◆提綱(Outline)視圖提綱視圖窗口顯示文檔中元素的結構缺省情況下提綱與編輯動態同步這能使您快速浏覽文檔的邏輯
◆DTD 生成可以動態地從文檔的內容生成 DTDXMLBuddy 在本地高速緩存基於因特網的 DTD因此不管要使用 DTD 和相關的文檔多少次只需下載它們一次
驗證 XML 代碼並對其字符進行編碼
使用 XML 文檔的主要困難在於檢查其內部有效性(文檔邏輯的內聚性)需要執行語法檢查以了解是否所有的標記和定義都是正確的並且被正確地調用只有語法檢查通過之後才能確認 XML 文檔格式良好並可以解析文檔的邏輯結構XML 文檔由 XML 解析器驗證
所有以下描述的 Eclipse XML 插件都能夠執行 XML 驗證指出代碼中的警告和錯誤如果試圖打開一個 XML 文檔XML 解析器可能會生成一個錯誤可以檢索精確的錯誤代碼錯誤文本甚至導致錯誤的那一行可以在需要時驗證 XML 文檔或在保存文檔時自動驗證可以將驗證錯誤任務作為一組進行清除XMLBuddy 插件使用系統范圍的 XML 解析器不過請記住 Eclipse 平台帶有最好的 XML 解析器之一:Xerces(XMLJ)但並不限於 Xerces 或系統解析器因為可使用 Run => External Tools => Configure 指向其它 XML 解析器
另一個重要的 XMLBuddy 功能是支持不同的字符編碼這遲早會有用例如當需要使用以不同語言(如波蘭語和英語)編寫的 XML 可移植文檔時這不是一項簡單的任務因為編碼波蘭語字符主要有三種方法:其一是由 Windows x/ 使用的 Windows Latin(CP); 其二是在因特網中使用以及由 UNIX 與類 UNIX 系統(如 Linux)使用的 ISO Latin(ISO); 其三是 MacOS 和 MacOS X它們對波蘭語使用不同的字符編碼標准
通常XMLBuddy 為字符編碼提供兩種解決方案:根據文件內容自動檢測 XML 文檔編碼或將其設置為缺省的編碼缺省的編碼可以在工作空間范圍也可特定於資源要打開 XML 編碼首選項可選擇 Window => Preferences => XML => Encoding
這些針對字符編碼的解決方案的問題在於:對 XML 而言一種編碼(每個工作台一種)不能適應全部情況XML 文檔可能來自世界各地任意數量的來源在許多情況下用戶不能控制其他人對文檔的編碼而且可能沒有辦法按編碼界限劃分工作同一編碼首選項將很難同時適合(比方說) Java 源文件和 XML 文檔當一組全局首選項不能滿足需要時XMLBuddy 為每個文檔提供屬性指定項目中每個文件的屬性是一項繁重的任務但是當要處理的某一文檔使用了不常用的編碼(不能自動檢測該編碼並且沒有在文檔中指定)時則屬性是唯一的解決方案要打開特定文件的編碼屬性可在文件上單擊鼠標右鍵並選擇 Properties = >XML => Encoding
DTD vs XML Schema
XML Schema 指定 XML Schema 定義語言該語言提供了描述 XML 文檔結構和限制其內容的工具其中包括那些利用 XML Namespace 的工具模式語言自身用 XML 表示並使用名稱空間它在很大程度上重構了 XML DTD 具有的能力並在一定程度上擴展了這些能力請記住 DTD 有許多局限:
◆對於復雜需求通常很難使用內容模型
◆不支持名稱空間
◆ 對模塊化和重用的支持非常有限
◆不支持對聲明擴展或繼承
◆編寫維護和讀取大型 DTD 以及定義系列相關模式都很困難
◆ 沒有嵌入式結構化自我文檔編制(selfdocumentation)(只有 可用)
◆內容和屬性聲明不能依靠屬性或元素上下文(許多 XML 語言用到這一點但它們的 DTD 必須允許過多東西)
◆只能使用一個簡單的標識屬性機制(換句話說沒有唯一性作用域)
XML Schema 也有不足:
◆ XML Schema 比較復雜; 只需要偶爾使用 XML 的程序員可能覺得它難得有些過頭
◆XML Schema 不能請求特定的根元素(因此即使驗證最簡單的文檔也要求額外的信息)
◆ 當描述混合內容時根本無法約束字符數據
◆ 內容和屬性聲明不能依靠屬性或元素上下文(這也是 DTD 的主要問題)
◆ 不能離開聲明指定缺省值
◆ 元素缺省值只能是字符數據(不包含標記)
XMLBuddy 對 DTD 和 Schema 都提供了足夠的支持但如果您需要真正優秀的 XML Schema 支持應該使用 XSDXML Infoset Browser for Java 插件它是按照 WC XML Schema 規范中描述的那樣實現 XML Schema Infoset Model 的 Java 參考庫它對於任何檢查創建或修改 XML Schema 的代碼都非常有用XML Infoset Browser 提供操作 XML Schema 組件的 API以及操作以一系列 XML 文檔的 XML Schema 的(DOM 可訪問的)表示的 APIXML Infoset 基本上允許兩個或兩個以上的程序員同時使用 Java 和 XML因此提供了識別和創建基於 XML 的模式的標准方法
XML Infoset Browser 的必要補充是 IBM XML Schema Quality Checker
簡稱 SQC
SQC 是 Java 程序
它獲取以 W
C XML 模式語言編寫的 XML Schema 作為輸入
然後診斷 Schema 語言不正確的使用
SQC 讀取符合最新 XML Schema 規范的 Schema
並嘗試確定它們在應用於 Schema 的各種約束下是否有效
當 SQC 遇到不符合規范的元素時
它給出診斷消息
其中可能包含關於如何修正問題的建議
對於由許多 Schema 文檔(這些文檔間通過
或元素信息項連接)組成的 Schema
執行完整的 Schema 檢查
SQC 還可以以批處理方式運行
通過一次運行檢查多個 XML 模式
其它 Eclipse XML 插件
其它有用的 XML 插件有 Transclipse 和 Eclipse TidyTransclipse 是 XML 轉換插件它用任何符合 JAXP 的 XSL 樣式表處理器通過 XSLT 處理 XML 文檔並使用 Apache 格式化對象處理器(Formatting Objects ProcessorFOP)處理 XSLFO 文檔Transclipse 是 jh(Java 至 HTMLJava to HTML)插件的一部分jh 將 Java 源代碼轉換成帶語法突出顯示的 HTMLXHTML 和 LaTeXEclipse Tidy 項目提供了格式化和打印 XML/HTML 文檔的插件
From:http://tw.wingwit.com/Article/program/ASP/201311/21661.html