JavaTM 2 Platform
Standard Ed. 6

org.w3c.dom
介面 DOMConfiguration


public interface DOMConfiguration

DOMConfiguration 介面表示文檔的配置,並維護一個可識別的參數表。使用該配置,能夠更改 Document.normalizeDocument() 行為,如將 CDATASection 節點替換為 Text 節點或指定在請求驗證 Document 時必須使用的網要型別。DOMConfiguration 物件也可用於 DOMParserDOMSerializer 介面中的 [DOM Level 3 Load and Save]。

DOMConfiguration 物件使用的參數名稱可在整個 DOM Level 3 規範中定義。名稱不區分大小寫。要避免可能的衝突,根據慣例,應該使指向在 DOM 規範之外定義的參數的名稱唯一。因為參數要作為屬性公開,所以建議名稱遵循 5.16 節帶有字元 '-'(連字元號)的“[Unicode] 標識符”,但它不是由 DOM 實作強制執行的。要求 DOM Level 3 核心實作來識別在此規範中定義的所有參數。也可能要求某些參數值接受該實作的支持。若要知道一個值是否必須被支持,請參閱參數的定義。

註:參數類似於在 SAX2 [SAX] 中使用的功能和屬性。

下面是在 DOM 中定義的參數列表:

"canonical-form"
true
[optional] 根據在 [Canonical XML] 指定的規則規範化文檔,如從階層樹中移除 DocumentType 節點(如果有),或從每個元素移除多餘的名稱空間宣告。注意,這限於可以在 DOM 中表示的內容;需要特別指出的是,無法指定 DOM 中的屬性的順序。此外,將此參數設置為 true 還要設置下面列出的參數的狀態。以後對這些參數中某個的狀態的更改都會將“規範形式”轉換回 false。設置為 false 的參數:"entities"、" normalize-characters"、"cdata-sections"。設置為 true 的參數:"namespaces"、"namespace-declarations"、"well-formed"、"element-content-whitespace"。其他參數只有在參數描述中顯式地指定時才更改。
false
[需要](預設)不規範化文檔。
"cdata-sections"
true
[需要](預設)保留文檔中的 CDATASection 節點。
false
[需要]將文檔中的 CDATASection 節點轉換為 Text 節點。然後將新的 Text 節點與任何相鄰 Text 節點合併起來。
"check-character-normalization"
true
[可選] 檢查文檔中的字元是否是 完全規範化,如在 [XML 1.1] 的附錄 B 中定義的那樣。當遇到規範化檢查失敗的字元序列時,將發生帶有 DOMError.type(等於 "check-character-normalization-failure")的錯誤。
false
[需要](預設)不檢查字元是否規範化。
"comments"
true
[需要](預設)保留文檔中的 Comment 節點。
false
[需要]丟棄文檔中的 Comment 節點。
"datatype-normalization"
true
[optional] 公開階層樹中的網要標準化值,如 XML 網要中的 XML 網要標準化值。由於此參數要求有網要資訊,所以還要將 "validate" 參數設置為 true。"validate" 為 false 時啟動此參數無效,且不發生網要規範化。

註:由於文檔包含 XML 1.0 處理的結果,所以此參數不會像在 [XML 1.0] 的 3.3.3 節中定義的那樣應用於屬性值規範化,而只用於除文檔型別定義 (DTD) 之外的網要語言。

false
[需要](預設)不執行對階層樹的網要規範化。
"element-content-whitespace"
true
[需要](預設)保留文檔中的所有空格。
false
[可選] 丟棄在元素內容中包含空格的所有 Text 節點,如在 [element content whitespace] 中描述的那樣。期望該實作使用屬性 Text.isElementContentWhitespace 來確定是否應該丟棄 Text 節點。
"entities"
true
[需要](預設)保留文檔中的 EntityReference 節點。
false
[需要] 從文檔中移除所有 EntityReference 節點,並直接將實體擴展放入適當位置。按 Node.normalize 中定義的那樣,標準化 Text 節點。文檔中只保留 未擴展的實體參考

註:此參數不影響 Entity 節點。

"error-handler"
[需要] 套件含 DOMErrorHandler 物件。如果在文檔中遇到錯誤,則該實作將回調使用此參數註冊的 DOMErrorHandler。該實作可以提供預設的 DOMErrorHandler 物件。調用時,DOMError.relatedData 將包含離發生錯誤的位置最近的節點。如果該實作不能確定發生錯誤的節點,則 DOMError.relatedData 將包含 Document 節點。從錯誤處理程序內部對文檔的修改將導致與實作有關的行為。
"infoset"
true
[需要] 在文檔中保留在 XML 資訊集合 [XML Information Set] 中定義的資訊。這樣做強迫以下參數為 false:"validate-if-schema"、"entities"、"datatype-normalization"、"cdata-sections"。這迫使以下參數為 true:"namespace-declarations"、"well-formed"、"element-content-whitespace"、" comments"、"namespaces"。其他參數只有在參數的描述中顯式指定時才能更改。注意,只有在適當設置以上指定的單個參數時,使用 getParameter 查詢此參數才能返回 true
false
infoset 設置為 false 無效。
"namespaces"
true
[需要](預設)按以下定義方式執行名稱空間處理。
false
[可選] 不執行名稱空間處理。
"namespace-declarations"
如果將參數 "namespaces" 設置為 false,則此參數無效。
true
[需要](預設)包括在文檔中網要指定或預設的名稱空間宣告屬性。另請參見 [XML Namespaces] 和 [XML Namespaces 1.1] 中的“宣告名稱空間”各節。
false
[需要] 丟棄所有名稱空間宣告屬性。保留名稱空間前綴 (Node.prefix),即使此參數設置為 false
"normalize-characters"
true
[可選] 完全標準化文檔中的字元,如 [XML 1.1] 的附錄 B 中定義的那樣。
false
[需要](預設)不執行字元規範化。
"schema-location"
[可選] 表示包含 URI 列表的 DOMString 物件,由空格分隔(與在 [XML 1.0] 第 2.3 節定義的 nonterminal production S 比對的字元),它表示對其進行驗證的網要,即當前網要。此列表中參考的網要型別必須比對用 schema-type 指定的型別,否則實作的行為不確定。使用此屬性指定的網要優先於在文檔本身中指定的網要資訊。對於名稱空間感知的網要而言,如果使用此屬性指定的網要和網要文檔(例如使用 schemaLocation 屬性)中在文檔實例中(例如使用網要 import 機制)指定的網要共享同一 targetNamespace,則將使用由使用者使用此屬性指定的網要。如果使用此屬性指定的兩個網要共享同一 targetNamespace,或不存在名稱空間,則該行為與實作有關。如果未提供任何位置,則此參數為 null

註:忽略 "schema-location" 參數,除非設置了 "schema-type" 參數值。強烈建議設置 Document.documentURI,以便實作可以成功解析所參考的所有外部實體。

"schema-type"
[可選] 表示一個 DOMString 物件,該物件包含絕對 URI 且表示用於對其驗證文檔的網要語言型別。注意,不對絕對 URI 進行詞彙檢查。如果未設置此參數,則該實作可以根據支持的網要語言和載入時使用的網要語言提供預設值。如果未提供任何值,則此參數為 null

註:對於 XML 網要 [XML Schema Part 1],應用程序必須使用值 "http://www.w3.org/2001/XMLSchema"。對於 XML DTD [XML 1.0],應用程序必須使用值 "http://www.w3.org/TR/REC-xml"。其他網要語言在 W3C 的作用域之外,因此為了使用此方法應該建議絕對 URI。

"split-cdata-sections"
true
[需要](預設)拆分包含 CDATA 節終止標誌 ']]>' 的 CDATA 節。拆分 CDATA 節時,將發出警告,DOMError.type 等於 "cdata-sections-splitted"DOMError.relatedData 等於從該拆分得到的文檔順序的第一個 CDATASection 節點。
false
[需要]如果 CDATASection 套件含不可表示的字元時發出錯誤通知。
"validate"
true
[可選] 當它按 [XML 1.0] 定義的方式進行標準化時,要求驗證文檔的網要(例如 XML 網要、DTD、任何其他型別或表示形式的網要)。如果發現驗證錯誤,或未發現任何網要,則通知錯誤處理程序。按照使用的網要,將不公開網要標準化值,除非參數 "datatype-normalization" 為 true。此參數將重新評詁:
  • 具有 Attr.specified 等於 false 的屬性節點,如在 Attr 介面的描述中指定的那樣;
  • 所有 Text 節點的屬性 Text.isElementContentWhitespace 的值;
  • 所有 Attr 節點的屬性 Attr.isId 的值;
  • 屬性 Element.schemaTypeInfoAttr.schemaTypeInfo

註:"validate-if-schema" 和 "validate" 互斥,將其中一個設置為 true 就要將另一個設置為 false。應用程序還應該考慮將參數 "well-formed" 設置為 true,這是驗證該文檔時該選項的預設值。

false
[需要](預設)不實作網要處理,包括內部子集處理。保留預設屬性值資訊。注意,如果 "validate-if-schema" 為 true,則仍可能進行驗證。
"validate-if-schema"
true
[可選]僅當可以在網要(與找到的位置無關,即 XML 網要、DTD 或網要的任何其他型別或表示形式)中找到文檔元素的宣告時啟用驗證。如果啟用驗證,則此參數的行為與設置為 true 的參數 "validate" 的行為相同。

註:"validate-if-schema" 和 "validate" 互斥,將其中一個設置為 true 就要將另一個設置為 false

false
[需要](預設)如果文檔有網要,則不應該執行任何網要處理,包括內部子集處理。保留預設屬性值資訊。注意,如果 "validate" 為 true,則仍必須進行驗證。
"well-formed"
true
[需要](預設)按照在 Document.xmlVersion 中使用的 XML 版本檢查所有節點是否是良好格式的 XML:
  • 按照其節點型別檢查屬性 Node.nodeName 是否包含無效字元;是否產生型別 "wf-invalid-character-in-node-name"DOMError(必要時帶有 DOMError.SEVERITY_ERROR severity);
  • 檢查 AttrElementCommentTextCDATASection 節點內的文本內容是否包含無效字元,是否產生型別 "wf-invalid-character"DOMError(必要時帶有 DOMError.SEVERITY_ERROR severity);
  • 檢查 ProcessingInstruction 節點內的資料是否包含無效字元,是否產生型別 "wf-invalid-character"DOMError(必要時帶有 DOMError.SEVERITY_ERROR severity);
false
[可選] 不檢查 XML 的格式良好性。

使用 Document.documentURI 解析與實體相關的系統標識符。但是,當 DOM 實作支持在 [DOM Level 3 Load and Save] 中定義的功能 "LS" 時,參數 "resource-resolver" 還可以在連接到 Document 節點的 DOMConfiguration 上使用。如果已設置了此參數,則 Document.normalizeDocument() 將調用資源解析程序,而不是使用 Document.documentURI

另請參見 Document Object Model (DOM) Level 3 Core Specification

從以下版本開始:
DOM Level 3

方法摘要
 boolean canSetParameter(String name, Object value)
          檢查是否支持將參數設置為特定值。
 Object getParameter(String name)
          如果已知,則返回參數的值。
 DOMStringList getParameterNames()
          此 DOMConfiguration 物件支持的參數列表,並且應用程序至少可以為其設置一個值。
 void setParameter(String name, Object value)
          設置參數的值。
 

方法詳細資訊

setParameter

void setParameter(String name,
                  Object value)
                  throws DOMException
設置參數的值。

參數:
name - 要設置的參數的名稱。
value - 新的值,如果使用者希望取消設置該參數則為 null。當將值參數的型別定義為 DOMUserData 時,物件型別必須比對由參數的定義所定義的型別。例如,如果參數為 "error-handler",則該值必須是 DOMErrorHandler 型別。
拋出:
DOMException - NOT_FOUND_ERR: 參數名稱不可識別時,引發此異常。
NOT_SUPPORTED_ERR: 當參數名稱可以識別但不能設置請求的值時,引發此異常。
TYPE_MISMATCH_ERR:如果此參數名稱的值型別與期望的值型別不相容,則引發此異常。

getParameter

Object getParameter(String name)
                    throws DOMException
如果已知,則返回參數的值。

參數:
name - 參數的名稱。
返回:
返回與指定參數相關的當前物件;如果沒有任何相關的物件,或如果參數不被支持,則返回 null
拋出:
DOMException - NOT_FOUND_ERR:參數名稱不可識別時,引發此異常。

canSetParameter

boolean canSetParameter(String name,
                        Object value)
檢查是否支持將參數設置為特定值。

參數:
name - 要檢查的參數的名稱。
value - 一個物件。如果為 null,則返回的值為 true
返回:
如果可以成功地將參數設置為特定的值,則返回 true;如果參數不可識別或請求的值不受支持,則返回 false。這樣不會更改參數本身的當前值。

getParameterNames

DOMStringList getParameterNames()
DOMConfiguration 物件支持的參數列表,並且應用程序至少可以為其設置一個值。注意,此列表還可以包含在此規範之外定義的參數名稱。


JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only