|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
public interface Document
Document
介面表示整個 HTML 或 XML 文檔。從概念上講,它是文檔階層樹的根,並提供對文檔資料的基本存取。
因為元素、文本節點、註釋、處理指令等不能存在於 Document
的上下文之外,所以 Document
介面還包含所需的創建這些物件的處理器方法。所創建的 Node
物件具有 ownerDocument
屬性,該屬性將 Node
物件與創建這些物件時的上下文所屬的 Document
關聯起來。
另請參見 Document Object Model (DOM) Level 3 Core Specification。
欄位摘要 |
---|
方法摘要 | |
---|---|
Node |
adoptNode(Node source)
試圖把另一文檔中的節點採用到此文檔。 |
Attr |
createAttribute(String name)
創建給定名稱的 Attr 。 |
Attr |
createAttributeNS(String namespaceURI,
String qualifiedName)
創建給定的限定名稱和名稱空間 URI 的屬性。 |
CDATASection |
createCDATASection(String data)
創建其值為指定字元串的 CDATASection 節點。 |
Comment |
createComment(String data)
創建給定指定字元串的 Comment 節點。 |
DocumentFragment |
createDocumentFragment()
創建空 DocumentFragment 物件。 |
Element |
createElement(String tagName)
創建指定型別的元素。 |
Element |
createElementNS(String namespaceURI,
String qualifiedName)
創建給定的限定名稱和名稱空間 URI 的元素。 |
EntityReference |
createEntityReference(String name)
創建 EntityReference 物件。 |
ProcessingInstruction |
createProcessingInstruction(String target,
String data)
創建給定指定名稱和資料字元串的 ProcessingInstruction 節點。 |
Text |
createTextNode(String data)
創建給定指定字元串的 Text 節點。 |
DocumentType |
getDoctype()
與此文檔相關的文檔型別宣告(參見 DocumentType )。 |
Element |
getDocumentElement()
這是一種便捷屬性,該屬性允許直接存取文檔的文檔元素的子節點。 |
String |
getDocumentURI()
文檔的位置,如果未定義或 Document 是使用 DOMImplementation.createDocument 創建的,則為 null 。 |
DOMConfiguration |
getDomConfig()
調用 Document.normalizeDocument() 時使用的配置。 |
Element |
getElementById(String elementId)
返回具有帶給定值的 ID 屬性的 Element 。 |
NodeList |
getElementsByTagName(String tagname)
按文檔順序返回包含在文檔中且具有給定標記名稱的所有 Element 的 NodeList 。 |
NodeList |
getElementsByTagNameNS(String namespaceURI,
String localName)
以文檔順序返回具有給定本地名稱和名稱空間 URI 的所有 Elements 的 NodeList 。 |
DOMImplementation |
getImplementation()
處理此文檔的 DOMImplementation 物件。 |
String |
getInputEncoding()
指定解析時此文檔使用的編碼的屬性。 |
boolean |
getStrictErrorChecking()
指定是否強制執行錯誤檢查的屬性。 |
String |
getXmlEncoding()
作為 XML 宣告的一部分,指定此文檔編碼的屬性。 |
boolean |
getXmlStandalone()
作為 XML 宣告的一部分,指定此文檔是否為獨立文檔的屬性。 |
String |
getXmlVersion()
作為 XML 宣告 的一部分指定此文檔版本號的屬性。 |
Node |
importNode(Node importedNode,
boolean deep)
從另一文檔向此文檔導入節點,而不改變或移除原始文檔中的源節點;此方法創建源節點的一個新副本。 |
void |
normalizeDocument()
此方法的行為如同使文檔通過一個保存和載入的過程,而將其置為 "normal(標準)" 形式。 |
Node |
renameNode(Node n,
String namespaceURI,
String qualifiedName)
重命名 ELEMENT_NODE 或 ATTRIBUTE_NODE 型別的現有節點。 |
void |
setDocumentURI(String documentURI)
文檔的位置,如果未定義或 Document 是使用 DOMImplementation.createDocument 創建的,則為 null 。 |
void |
setStrictErrorChecking(boolean strictErrorChecking)
指定是否強制執行錯誤檢查的屬性。 |
void |
setXmlStandalone(boolean xmlStandalone)
作為 XML 宣告 的一部分指定此文檔是否是單獨的的屬性。 |
void |
setXmlVersion(String xmlVersion)
作為 XML 宣告 的一部分指定此文檔版本號的屬性。 |
方法詳細資訊 |
---|
DocumentType getDoctype()
DocumentType
)。對於沒有文檔型別宣告的 XML 文檔,此方法返回 null
。對於 HTML 文檔,可以返回 DocumentType
物件,與 HTML 文檔中是否有文檔型別宣告無關。Document
的子節點 DocumentType
節點的直接存取。此節點可以在文檔創建時設置,以後可以通過使用子節點操作方法(如 Node.insertBefore
或 Node.replaceChild
)進行更改。不過要注意的是,根據創建時指定的 DocumentType
,在有些實作可以實例化不同型別的 Document
物件(支持 "Core" 之外的其他功能,如 "HTML" [DOM Level 2 HTML])時,以後對它的更改很可能會導致所支持功能的不可更改。
DOMImplementation getImplementation()
DOMImplementation
物件。DOM 應用程序可以使用多個實作中的物件。
Element getDocumentElement()
Element createElement(String tagName) throws DOMException
Element
介面,所以可以直接在返回的物件上指定屬性。Attr
節點,並將其連接到該元素。createElementNS
方法。
tagName
- 要實例化的元素型別名稱。對於 XML,tagName 參數是區分大小寫的;而對於其他文檔,則取決於所使用標記語言的大小寫敏感性。在該情況下,可通過 DOM 實作將該名稱映射到該標記的規範形式。
Element
物件,該物件具有設置為 tagName
的 nodeName
屬性以及設置為 null
的 localName
、prefix
和 namespaceURI
。
DOMException
- INVALID_CHARACTER_ERR:如果指定的名稱是不遵循所使用的 XML 版本(在 Document.xmlVersion
屬性中指定)的 XML 名稱,則引發此異常。DocumentFragment createDocumentFragment()
DocumentFragment
物件。
DocumentFragment
。Text createTextNode(String data)
Text
節點。
data
- 該節點的資料。
Text
物件。Comment createComment(String data)
Comment
節點。
data
- 該節點的資料。
Comment
物件。CDATASection createCDATASection(String data) throws DOMException
CDATASection
節點。
data
- CDATASection
內容的資料。
CDATASection
物件。
DOMException
- NOT_SUPPORTED_ERR:如果此文檔為 HTML 文檔,則引發該異常。ProcessingInstruction createProcessingInstruction(String target, String data) throws DOMException
ProcessingInstruction
節點。
target
- 處理指令的目標部分。與 Document.createElementNS
或 Document.createAttributeNS
不同,此方法不檢查目標名稱是否為格式良好的名稱空間。為了確保目標名稱是格式良好的名稱空間,應用程序應該使用設置為 true
的參數 "namespaces" 調用 Document.normalizeDocument()
。data
- 該節點的資料。
ProcessingInstruction
物件。
DOMException
- INVALID_CHARACTER_ERR:如果指定的目標是不遵循在 Document.xmlVersion
屬性中指定的使用中的 XML 版本的 XML 名稱,則引發此異常。 Attr createAttribute(String name) throws DOMException
Attr
。注意,然後可以使用 setAttributeNode
方法在 Element
上設置 Attr
。createAttributeNS
方法。
name
- 屬性名稱。
Attr
物件,該物件具有設置為 name
的 nodeName
屬性以及設置為 null
的 localName
、prefix
和 namespaceURI
。該屬性的值為空字元串。
DOMException
- INVALID_CHARACTER_ERR:如果指定的名稱是不遵循在 Document.xmlVersion
屬性中指定的使用中的 XML 版本的 XML 名稱,則引發此異常。EntityReference createEntityReference(String name) throws DOMException
EntityReference
物件。此外,如果參考的實體是已知的,則使 EntityReference
節點的子列表與相應 Entity
節點的子列表相同。
註: 如果任何 Entity
節點的後代具有未綁定的名稱空間前綴,則相應的所創建的 EntityReference
節點的後代也未綁定;(其 namespaceURI
為 null
)。DOM Level 2 和 3 不支持在此情況下解析名稱空間前綴的任何機制。
name
- 要參考的實體的名稱。與 Document.createElementNS
或 Document.createAttributeNS
不同,不在實體名稱上檢查名稱空間是否為格式良好的。為了確保實體名稱是格式良好的名稱空間,應用程序應該使用設置為 true
的參數 "namespaces" 調用 Document.normalizeDocument()
。
EntityReference
物件。
DOMException
- INVALID_CHARACTER_ERR:如果指定的名稱是不遵循在 Document.xmlVersion
屬性中指定的使用中的 XML 版本的 XML 名稱,則引發此異常。 NodeList getElementsByTagName(String tagname)
Element
的 NodeList
。
tagname
- 要比對的標記的名稱。特殊值 "*" 比對所有標記。對於 XML ,tagname
參數是區分大小寫的,否則它將依靠正在使用的標記語言的大小寫敏感性。
Elements
的新 NodeList
物件。Node importNode(Node importedNode, boolean deep) throws DOMException
parentNode
為 null
)。nodeName
和 nodeType
,加上與名稱空間相關的屬性(prefix
、localName
和 namespaceURI
)。與在 cloneNode
操作中一樣,源節點沒有改變。與導入的節點相關的使用者資料不可繼續使用。不過,如果隨相關資料一起指定了任何 UserDataHandlers
,則將在此方法返回之前用適當的參數調用這些處理程序。nodeType
複製,在從一個文檔向另一文檔複製 XML 或 HTML 源的分段時試圖鏡像所需的行為,並認識到兩個方法可以在 XML 實例中具有不同的 DTD。下表描述了每種型別節點的細節。
Attr
上,將 ownerElement
屬性設置為 null
並將 specified
標誌設置為 true
。遞歸地導入源 Attr
的後代,並且重新集合得到的節點來建構相應的子階層樹。注意,deep
參數對 Attr
節點無效;它們總是在導入時帶著子節點。deep
選項設置為 true
,則遞歸地導入源 DocumentFragment
的後代,並在導入的 DocumentFragment
下重新集合得到的節點以建構相應的子階層樹。否則,此操作僅產生一個空 DocumentFragment
。Document
節點。DocumentType
節點。Attr
節點連接到產生的 Element
。預設屬性是不 被複製的,不過,如果被導入的文檔定義了此元素名稱的預設屬性,則分派這些屬性。如果將 importNode
deep
參數設置為 true
,則遞歸地導入源元素的後代並集合得到的節點,以建構相應的子階層樹。Entity
節點,但在當前版本的 DOM 中,DocumentType
是只讀的。將考慮在以後版本的 DOM 中包含將這些導入的節點添加到 DocumentType
中這一功能。導入時,將複製 publicId
、systemId
和 notationName
屬性。如果請求 deep
導入,則遞歸地導入源 Entity
的後代,並重新集合得到的節點以建構相應的子階層樹。deep
導入,也只複製 EntityReference
本身,因為源和目標文檔可能以不同方式定義實體。如果正在導入的文檔提供對此實體名稱的定義,則它的值得以分派。Notation
節點,但在當前版本的 DOM 中,DocumentType
是只讀的。能夠將這些導入的節點添加到 DocumentType
將被認為是以後版本的 DOM 的附加功能。導入時,複製 publicId
和 systemId
屬性。注意,deep
參數對此型別的節點無效,因為它們不能有任何子節點。target
和 data
值。注意,該 deep
參數對此型別的節點無效,因為它們不能有任何子節點。CharacterData
的這三種型別的節點從源節點複製其 data
和 length
屬性。注意,deep
參數對這三種型別的節點無效,因為它們不能有任何子節點。
importedNode
- 要導入的節點。deep
- 如果為 true
,則遞歸地導入在指定節點下的子階層樹;如果為 false
,則僅導入節點本身,如上面的解釋。這對不能有任何子節點的節點、對 Attr
和 EntityReference
節點都無效。
Document
的節點。
DOMException
- NOT_SUPPORTED_ERR:如果不支持正在導入的該型別的節點,則引發此異常。 Document.xmlVersion
屬性中指定的使用中的 XML 版本的 XML 名稱,則引發此異常。例如,將 XML 1.1 [XML 1.1] 元素導入 XML 1.0 文檔時可能引發此異常。Element createElementNS(String namespaceURI, String qualifiedName) throws DOMException
null
作為方法的 namespaceURI 參數的值。
namespaceURI
- 要創建的元素的名稱空間 URI。qualifiedName
- 要實例化的元素型別的限定名稱。
Element
物件:
屬性 | 值 |
---|---|
Node.nodeName |
qualifiedName |
Node.namespaceURI |
namespaceURI |
Node.prefix |
前綴,從 qualifiedName 中提取的;如果沒有前綴,則為 null |
Node.localName |
本地名稱,從 qualifiedName 提取的 |
Element.tagName |
qualifiedName |
DOMException
- INVALID_CHARACTER_ERR:如果指定的 qualifiedName
是不遵循在 Document.xmlVersion
屬性中指定的使用中的 XML 版本的 XML 名稱,則引發此異常。 qualifiedName
是錯誤格式的限制名稱;如果 qualifiedName
具有前綴且 namespaceURI
為 null
;或者如果 qualifiedName
具有前綴 "xml" 且該 namespaceURI
不同於 "http://www.w3.org/XML/1998/namespace" [XML Namespaces];或者如果 qualifiedName
或其前綴為 "xmlns" 且該 namespaceURI
不同於 "http://www.w3.org/2000/xmlns/";或者如果 namespaceURI
為 "http://www.w3.org/2000/xmlns/" 且 qualifiedName
及其前綴都不是 "xmlns"。 "XML"
特性,則總是拋出此異常。Attr createAttributeNS(String namespaceURI, String qualifiedName) throws DOMException
null
作為方法的 namespaceURI
參數的值。
namespaceURI
- 要創建的屬性的名稱空間 URI。qualifiedName
- 要實例化的屬性的限定名稱。
Attr
物件:
屬性 | 值 |
---|---|
Node.nodeName |
qualifiedName |
Node.namespaceURI |
namespaceURI |
Node.prefix |
前綴,從 qualifiedName 中提取的;如果沒有前綴,則為 null |
Node.localName |
本地名稱,從 qualifiedName 提取的 |
Attr.name |
qualifiedName |
Node.nodeValue |
空字元串 |
DOMException
- INVALID_CHARACTER_ERR:如果指定的 qualifiedName
是不遵循在 Document.xmlVersion
屬性中指定的使用中的 XML 版本的 XML 名稱,則引發此異常。 qualifiedName
為錯誤格式的限定名稱;如果 qualifiedName
有前綴且 namespaceURI
為 null
;如果 qualifiedName
有前綴 "xml" 且 namespaceURI
不同於 "http://www.w3.org/XML/1998/namespace";如果 qualifiedName
或其前綴為 "xmlns" 且 namespaceURI
不同於 "http://www.w3.org/2000/xmlns/";或者 namespaceURI
為 "http://www.w3.org/2000/xmlns/" 且 qualifiedName
及其前綴都不是 "xmlns"。 "XML"
特性,則總是拋出此異常。NodeList getElementsByTagNameNS(String namespaceURI, String localName)
Elements
的 NodeList
。
namespaceURI
- 要比對的元素的名稱空間 URI。特殊值 "*"
比對所有名稱空間。localName
- 要比對的元素的本地名稱。特殊值 "*" 比對所有本地名稱。
Elements
的新 NodeList
物件。Element getElementById(String elementId)
Element
。如果不存在此類別元素,則此方法返回 null
。如果一個以上的元素具有帶該值的 ID 屬性,返回哪一個元素是不確定的。Attr.isId
來確定屬性是否屬於型別 ID。
註: 具有名稱 "ID" 或 "id" 的屬性不屬於型別 ID,除非這樣定義。
elementId
- 元素的唯一 id
值。
null
。String getInputEncoding()
Document
時),則為 null
。
String getXmlEncoding()
Document
時,此屬性為 null
。
boolean getXmlStandalone()
false
。
註: 設置此屬性時不對此值進行任何驗證。應用程序應該使用帶有 "validate" 參數的 Document.normalizeDocument()
驗證該值是否比對在 [XML 1.0] 中定義的有關獨立文檔宣告的有效性約束()。
void setXmlStandalone(boolean xmlStandalone) throws DOMException
false
。
註: 設置此屬性時不對此值進行任何驗證。應用程序應該使用帶有 "validate" 參數的 Document.normalizeDocument()
驗證該值是否比對 validity constraint for standalone document declaration(在 [XML 1.0] 中定義)。
DOMException
- NOT_SUPPORTED_ERR:如果此文檔不支持 "XML" 特性,則引發此異常。String getXmlVersion()
"1.0"
。如果此文檔不支持 "XML" 特性,則該值始終為 null
。更改此屬性將影響在 XML 名稱中檢查無效字元的方法。應用程序應該調用 Document.normalizeDocument()
來檢查在已經是此 Document
一部分的 Node
中的無效字元。DOMImplementation.hasFeature(feature, version)
方法來確定實作是否支持 [XML 1.0]。DOM 應用程序還可以使用參數值分別為 "XMLVersion" 和 "1.1"的同一方法來確定實作是否支持 [XML 1.1]。在這兩種情況下,為了支持 XML,實作還必須支持在此規範中定義的 "XML" 特性。支持某版本的 "XMLVersion" 特性的 Document
物件不能在使用 Document.xmlVersion
時對相同版本號引發 NOT_SUPPORTED_ERR
異常。
void setXmlVersion(String xmlVersion) throws DOMException
"1.0"
。如果此文檔不支持 "XML" 特性,則該值始終為 null
。更改此屬性將影響在 XML 名稱中檢查無效字元的方法。應用程序應該調用 Document.normalizeDocument()
來檢查在已經是此 Document
一部分的 Node
中的無效字元。DOMImplementation.hasFeature(feature, version)
方法來確定實作是否支持 [XML 1.0]。DOM 應用程序還可以使用參數值分別為 "XMLVersion" 和 "1.1"的同一方法來確定實作是否支持 [XML 1.1]。在這兩種情況下,為了支持 XML,實作還必須支持在此規範中定義的 "XML" 特性。支持某版本的 "XMLVersion" 特性的 Document
物件不能在使用 Document.xmlVersion
時對相同版本號引發 NOT_SUPPORTED_ERR
異常。
DOMException
- NOT_SUPPORTED_ERR:如果將該版本設置為此 Document
不支持的值,或此文檔不支持 "XML" 特性,則引發此異常。boolean getStrictErrorChecking()
false
時,該實作可以不測試通常在 DOM 操作上定義的每個可能的錯誤情形,可以不在 DOM 操作上引發任何 DOMException
,也可以不在使用 Document.normalizeDocument()
時報告錯誤。如果發生錯誤,則該行為將會不確定。此屬性預設為 true
。
void setStrictErrorChecking(boolean strictErrorChecking)
false
時,該實作不會隨意測試通常在 DOM 操作上定義的每個可能的錯誤情形,不會在 DOM 操作上引發任何 DOMException
,也不會在使用 Document.normalizeDocument()
時報告錯誤。如果發生錯誤,則該行為不確定。此屬性預設為 true
。
String getDocumentURI()
Document
是使用 DOMImplementation.createDocument
創建的,則為 null
。設置此屬性時不執行任何詞彙檢查;這可能導致在使用 Node.baseURI
時返回 null
值。Document
支持 "HTML" [DOM Level 2 HTML] 特性,則計算 Node.baseURI
時 HTML BASE 元素的 href 屬性優先於此屬性。
void setDocumentURI(String documentURI)
Document
是使用 DOMImplementation.createDocument
創建的,則為 null
。設置此屬性時不執行任何詞彙檢查;這可能導致在使用 Node.baseURI
時返回 null
值。Document
支持 "HTML" [DOM Level 2 HTML] 特性,則計算 Node.baseURI
時 HTML BASE 元素的 href 屬性優先於此屬性。
Node adoptNode(Node source) throws DOMException
ownerDocument
、它的子節點以及連接的屬性節點(如果有)。如果源節點有父節點,則首先從其父節點的子節點列表中移除它。此方法允許將子階層樹從一個文檔移動到另一個文檔(與 importNode()
不同,後者創建源節點副本,而不是移動子階層樹)。失敗時,應用程序應該改為使用 Document.importNode()
。注意,如果採用的節點已經是此文檔的一部分(即源文檔和目標文檔相同),此方法仍可有效地從其父節點(如果有)的子列表移除源節點。下表描述了每種型別節點的細節。
Attr
上,將 ownerElement
屬性設置為 null
並將 specified
標誌設置為 true
。遞歸地採用源 Attr
的後代。Document
節點。DocumentType
節點。Entity
節點。EntityReference
節點本身並丟棄其後代,因為源文檔和目標文檔可能以不同方式定義實體。如果要導入的文檔提供了對此實體名稱的定義,則分派其值。Notation
節點。註: 由於它與 Document.importNode()
方法不同,不創建新的節點,因此此方法不引發 INVALID_CHARACTER_ERR
異常,並且應用程序應該使用 Document.normalizeDocument()
方法來檢查導入的名稱是否是遵循正在使用的 XML 版本的 XML 名稱。
source
- 要移入此文檔的節點。
null
。
DOMException
- NOT_SUPPORTED_ERR:如果源節點屬於 DOCUMENT
、DOCUMENT_TYPE
型別,則引發此異常。 DOMConfiguration getDomConfig()
Document.normalizeDocument()
時使用的配置。
void normalizeDocument()
EntityReference
節點的替換階層樹並規範化 Text
節點,如在方法 Node.normalize()
中定義的那樣。Document.domConfig
物件上設置的、控制哪個操作實際發生的特性。值得注意的是,此方法還可以按照其中描述的演算法使文檔名稱空間格式良好、檢查字元規範化、移除 CDATASection
節點,等等。有關詳細資訊請參見 DOMConfiguration
。
// Keep in the document the information defined // in the XML Information Set (Java example) DOMConfiguration docConfig = myDocument.getDomConfig(); docConfig.setParameter("infoset", Boolean.TRUE); myDocument.normalizeDocument();
Node.nodeName
套件含無效字元,則將使用與 "error-handler" 參數相關聯的 DOMErrorHandler
物件報告錯誤或警告(DOMError.SEVERITY_ERROR
或 DOMError.SEVERITY_WARNING
)。注意,如果實作無法從錯誤中恢復,則此方法還可能報告嚴重錯誤(DOMError.SEVERITY_FATAL_ERROR
)。
Node renameNode(Node n, String namespaceURI, String qualifiedName) throws DOMException
ELEMENT_NODE
或 ATTRIBUTE_NODE
型別的現有節點。Element
,則其屬性移動到新節點;將新節點插入舊節點原來在其父(如果有)的子節點列表中的位置;將連接到舊節點的使用者資料連接到新節點。Element
時,只移動指定的屬性,源於 DTD 的預設屬性按照新的元素名稱更新。此外,實作還可以更新源自其他網要的預設屬性。應用程序應該使用 Document.normalizeDocument()
來保證這些屬性是最新的。Element
的 Attr
時,則首先從 Element
屬性映射中移除該節點。然後,一旦通過修改現有節點或創建新節點(如上所述)重命名,則將它放回原處。NODE_RENAMED
,
http://www.w3.org/2001/xml-events
DOMElementNameChanged
} 或 { http://www.w3.org/2001/xml-events
DOMAttributeNameChanged
}。
n
- 要重命名的節點。namespaceURI
- 新的名稱空間 URI。qualifiedName
- 新的限定名稱。
DOMException
- NOT_SUPPORTED_ERR:當指定節點的型別不是 ELEMENT_NODE
,也不是 ATTRIBUTE_NODE
時,或者如果實作不支持重命名文檔元素,則引發此異常。 Document.xmlVersion
屬性中指定的 XML 版本的 XML 名稱,則引發此異常。 qualifiedName
為錯誤格式的限定名稱;如果 qualifiedName
有前綴且 namespaceURI
為 null
;或者如果 qualifiedName
有前綴 "xml" 且 namespaceURI
不同於 "http://www.w3.org/XML/1998/namespace" [XML Namespaces]。當正被重命名的節點為一屬性時,如果 qualifiedName
或其前綴為 "xmlns" 且 namespaceURI
不同於 "http://www.w3.org/2000/xmlns/",也引發此異常。
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。