XForms/除錯 XForms
如果您是 XForms 的新手,並且在除錯 XForms 時遇到問題,您並不孤單。XForms 除錯可能很棘手,尤其是對於新手來說。如果您關注 XForms 的新聞組,您會發現一些問題經常出現。
這些問題按頻率排序,大致包括以下內容:
- 確保使用
.xhtml副檔名命名您的檔案。包括 FireFox 在內的許多瀏覽器不會在副檔名為 .htm 或 .html 的檔案中查詢 XML 標籤。 - 忘記將例項資料與名稱空間或預設名稱空間關聯的問題。可以透過在例項變數中新增
xmlns=""引數來解決此問題。 - 文件主體中名稱空間不正確或缺失。例如,如果預設名稱空間是 html,則標籤 <input> 是有效的,但瀏覽器會將其視為 <html:input> 而不是 <xf:input>。當用戶從使用 XForms 作為預設名稱空間的地方複製 XForms 示例程式碼時,這種情況經常發生。這是一個很好的理由,教程和培訓開發人員不應將 XForms 作為預設名稱空間。
- 模型和檢視之間的繫結不正確。這通常是由於 “ref” 或 “nodeset” 屬性定義不正確,或者組或重複更改了資料元素的路徑字首。
- 無法將表單繫結到例項,因為 XForms 處理器無法找到一個或多個例項特定的名稱空間。如果您在將 XForm 流式傳輸到使用者之前使用 XSLT 或 XQuery 對其進行了自定義,則處理器可能會將一些名稱空間的宣告委派給它們首次出現的例項,因為它將 XForm 上 ref 和 bind 屬性的內容視為只是內容。但是,您的 XForms 處理器可能希望在父軸上定義 ref 屬性中名稱空間的定義,並且可能不會在模型例項中查詢任何宣告。當這種情況發生時,您需要手動構造根 xhtml:html 節點,並明確宣告出現在您的表單中的任何名稱空間。
有些人發現這個 XForms 驗證器很有用
http://xformsinstitute.com/validator
該程式將查詢 XForms 示例中的常見錯誤。
有一個很好的用於 XSLT 的 Eclipse 外掛,它還提供了一個 XPath 驗證 “檢視”。參見:http://wiki.eclipse.org/XSLT_Project
最實用的 Firefox 擴充套件之一是 XForms Buddy 偵錯程式。此工具允許您在 Firefox 瀏覽器中執行 XForms 時,以可視方式檢查模型中的所有例項。這對於確保動態配置的例項值由 XForms 正確設定特別有用。該網站的連結是:這裡
還有一種方法可以在您的 JavaScript 程式碼中以可視方式檢視您的繫結。
這些介面在這裡有文件記錄
以下是一些針對除錯 XForms 的人員的建議
有時,當您建立對 Web 服務的複雜提交時,您需要確保 XForms 應用程式生成的內容與 Web 服務期望的內容完全一致。有時,Web 服務供應商會提供一個示例 Web 表單客戶端,該客戶端可以正確呼叫他們的服務,但有關呼叫該服務的文件卻有所欠缺。解決此問題的一種方法是觀察 HTTP 資料包離開工作應用程式,並將它們與您的 XForms 的 HTTP 資料包進行比較。可以使用 HTTP 代理工具(如 Charles)來完成此操作,該工具也可以作為 Firefox 擴充套件執行。
標準 Web 開發偵錯程式的 “網路” 標籤,如 Firebug 和 Google Chrome Javascript 控制檯,可用於觀察瀏覽器與之之間進出的網路流量,從而允許您驗證提交內容、方法和 HTTP 錯誤程式碼是否符合預期。
代理是一種充當 Web 伺服器的工具。它將自己置於您的 Web 瀏覽器和伺服器之間,並告訴您瀏覽器剛剛傳送給 Web 伺服器的內容。為此,您必須設定您的 Web 瀏覽器使用代理(透過告訴它將所有內容轉發到另一個 IP 地址),然後代理將其轉發到服務。
使用完代理後,請確保記得透過轉到 Firefox 工具/選項/常規/連線設定並單擊直接連線到網際網路來停用代理。如果您不這樣做,當 Charles 或 Tamper Data 關閉時,您的 Web 瀏覽器將不再起作用。
有一些 XForms 是為了使用 HTTP put、HTTP post 和 [w:WebDAV:WebDAV] 而設計的。WebDAV 允許您不僅儲存表單的第一個版本,還可以返回並檢視以前的版本。Subversion 常見問題解答 [1] 建議您執行 Wireshark 資料包嗅探器,檢視 HTTP 訊息中的資料。
要驗證資料檔案是否格式正確,您可以使用 RUWF(您格式正確嗎)?XML 語法檢查器
某些版本的 IE 6.0 尚未為 IE6 設定正確的 mime 型別。要解決此問題,您必須在 Microsoft Windows 登錄檔中新增一個條目
開啟命令 shell 輸入命令 “regedit”
[HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/xhtml+xml]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"Encoding"=hex:08,00,00,00
"Extension"=".xhtml"