XML 參考手冊

XML 參考手冊

節點類型

下面的表格列出了不同的 W3C 節點類型,以及它們可擁有的子元素:

節點類型 描述 子元素
Document 表示整個文檔(DOM 樹的根節點)
  • Element (max. one)
  • ProcessingInstruction
  • Comment
  • DocumentType
DocumentFragment 表示輕量級的 Document 對象,其中容納了一部分文檔。
  • ProcessingInstruction
  • Comment
  • Text
  • CDATASection
  • EntityReference
DocumentType 向為文檔定義的實體提供接口。 None
ProcessingInstruction 表示處理指令。 None
EntityReference 表示實體引用元素。
  • ProcessingInstruction
  • Comment
  • Text
  • CDATASection
  • EntityReference
Element 表示 element(元素)元素
  • Text
  • Comment
  • ProcessingInstruction
  • CDATASection
  • EntityReference
Attr 表示屬性。
  • Text
  • EntityReference
Text 表示元素或屬性中的文本內容。 None
CDATASection 表示文檔中的 CDATA 區段(文本不會被解析器解析) None
Comment 表示注釋。 None
Entity 表示實體。
  • ProcessingInstruction
  • Comment
  • Text
  • CDATASection
  • EntityReference
Notation 表示在 DTD 中聲明的符號。 None

節點類型 - 所返回的值

下面的表格列出了對每個節點類型來說,nodeName 和 nodeValue 屬性可返回的值:

節點類型 nodeName 的返回值 nodeValue 的返回值
Document #document null
DocumentFragment #document fragment null
DocumentType doctype 名稱 null
EntityReference 實體引用名稱 null
Element element name null
Attr 屬性名稱 屬性值
ProcessingInstruction target 節點的內容
Comment #comment 注釋文本
Text #text 節點內容
CDATASection #cdata-section 節點內容
Entity 實體名稱 null
Notation 符號名稱 null

NodeTypes - 有名常數

NodeType Named Constant
1 ELEMENT_NODE
2 ATTRIBUTE_NODE
3 TEXT_NODE
4 CDATA_SECTION_NODE
5 ENTITY_REFERENCE_NODE
6 ENTITY_NODE
7 PROCESSING_INSTRUCTION_NODE
8 COMMENT_NODE
9 DOCUMENT_NODE
10 DOCUMENT_TYPE_NODE
11 DOCUMENT_FRAGMENT_NODE
12 NOTATION_NODE

Top

XML DOM Node 對象

Node 對象的屬性

屬性 描述
attributes 包含此節點的屬性的 NamedNodeMap(如果此節點是元素)。
baseURI 返回節點的絕對基準 URI。
childNodes 返回節點的子節點的 NodeList。
firstChild 返回節點的第一個子節點。
lastChild 返回節點的最后一個子節點。
nextSibling 返回節點之后緊跟的同級節點。
nodeName 返回節點的名稱,根據其類型。
nodeType 返回節點的類型。
nodeValue 設置或返回節點的值,根據其類型。
ownerDocument 返回節點的根元素(document 對象)。
parentNode 返回節點的父節點。
prefix 設置或返回節點的命名空間前綴。
previousSibling 返回節點之前緊跟的同級節點。
textContent 設置或返回節點及其后代的文本內容。

Node 對象的方法

方法 描述
appendChild() 將新的子節點追加到節點子節點列表的末尾。
cloneNode() 克隆節點。
compareDocumentPosition() 比較 DOM 層次結構(文檔)中兩個節點的位置。
getFeature(feature,version) 返回 DOM 對象,該對象實現指定特性和版本的專用 API。
getUserData(key)

返回與節點上的鍵關聯的對象。

必須首先將對象設置到此節點,通過使用相同的鍵調用 setUserData。

hasAttributes() 如果指定節點有任何屬性則返回 true,否則返回 false。
hasChildNodes() 如果指定節點有子節點則返回 true,否則返回 false。
insertBefore() 在指定的子節點前插入新的子節點。
isDefaultNamespace(URI) 返回指定的命名空間 URI 是否為默認。
isEqualNode() 檢查兩個節點是否相等。
isSameNode() 檢查兩個節點是否是相同的節點。
lookupNamespaceURI() 返回與給定前綴關聯的命名空間 URI。
lookupPrefix() 返回與給定名稱空間 URI 關聯的前綴。
normalize() 合并相鄰的文本節點并刪除空的文本節點。
removeChild() 刪除(并返回)當前節點的指定子節點。
replaceChild() 用新節點替換子節點。
setUserData(key,data,handler) 將對象與節點上的鍵關聯。

Top

XML DOM NodeList 對象

NodeList 對象的屬性

屬性 描述
length 返回節點列表中的節點數。

NodeList 對象的方法

方法 描述
item() 返回節點列表中指定索引處的節點。

Top

XML DOM NamedNodeMap 對象

NamedNodeMap 對象的屬性

屬性 描述
length 返回列表中的節點數。

NamedNodeMap 對象的方法

方法 描述
getNamedItem() 返回擁有特定名稱的節點。
getNamedItemNS() 返回擁有特定名稱和命名空間的節點。
item() 返回指定索引處的節點。
removeNamedItem() 刪除擁有特定名稱的節點。
removeNamedItemNS() 刪除擁有特定名稱和命名空間的節點。
setNamedItem() 設置指定的節點(按名稱)。
setNamedItemNS() 設置指定的節點(按名稱和命名空間)。

Top

XML DOM Document 對象

Document 對象的屬性

屬性 描述
childNodes 返回文檔的子節點的 NodeList。
doctype 返回與文檔關聯的文檔類型聲明。
documentElement 返回文檔的根節點。
documentURI 設置或返回文檔的位置。
domConfig 返回調用 normalizeDocument() 時使用的配置。
firstChild 返回文檔的第一個子節點。
implementation 返回處理此文檔的 DOMImplementation 對象。
inputEncoding 返回文檔使用的編碼方式(在解析時)。
lastChild 返回文檔的最后一個子節點。
nodeName 返回節點的名稱(取決于其類型)。
nodeType 返回節點的節點類型。
nodeValue 設置或返回節點的值(取決于其類型)。
xmlEncoding 返回文檔的 XML 編碼方式。
xmlStandalone 設置或返回文檔是否是獨立的。
xmlVersion 設置或返回文檔的 XML 版本。

Document 對象的方法

方法 描述
adoptNode() 將另一個文檔中的節點采納到本文檔中,并返回被采納的節點。
createAttribute() 創建擁有指定名稱的屬性節點,并返回新的 Attr 對象。
createAttributeNS() 創建擁有指定名稱和命名空間的屬性節點,并返回新的 Attr 對象。
createCDATASection() 創建 CDATA section 節點。
createComment() 創建注釋節點。
createDocumentFragment() 創建空的 DocumentFragment 對象并返回它。
createElement() 創建元素節點。
createElementNS() 創建擁有指定命名空間的元素節點。
createEntityReference() 創建 EntityReference 對象,并返回此對象。
createProcessingInstruction() 創建 ProcessingInstruction 對象,并返回此對象。
createTextNode() 創建文本節點。
getElementById() 返回擁有給定值的 id 屬性的元素。
getElementsByTagName() 返回擁有指定名稱的所有元素的 NodeList。
getElementsByTagNameNS() 返回擁有指定名稱和命名空間的所有元素的 NodeList。
importNode() 將節點從另一個文檔導入到此文檔。
normalizeDocument()
renameNode() 重命名元素節點或屬性節點。

DocumentType 對象的屬性

每個文檔都有一個 DOCTYPE 屬性,其值為 null 或 DocumentType 對象。

DocumentType 對象提供了為 XML 文檔定義的實體的接口。

屬性 描述
name 返回 DTD 的名稱。
publicId 返回 DTD 的公共標識符。
systemId 返回外部 DTD 的系統標識符。

DocumentImplementation 對象的方法

DOMImplementation 對象執行獨立于文檔對象模型的任何特定實例的操作。

方法 描述
createDocument() 創建指定的文檔類型的新 DOM Document 對象。
createDocumentType() 創建空的 DocumentType 節點。
getFeature() 返回實現指定特性和版本的 API 的對象(如果有)。
hasFeature() 檢查 DOM 實現是否實現了特定的特性和版本。

ProcessingInstruction 對象的屬性

ProcessingInstruction 對象表示處理指令。

處理指令是被用作將處理器特定信息保留在 XML 文檔文本中的方法。

屬性 描述
data 設置或返回該處理指令的內容。
target 返回該處理指令的目標。

Top

XML DOM Element 對象

Element 對象的屬性

屬性 描述
attributes 返回元素的屬性的 NamedNodeMap。
baseURI 返回元素的絕對基準 URI。
childNodes 返回元素的子節點的 NodeList。
firstChild 返回元素的第一個子元素。
lastChild 返回元素的最后一個子元素。
localName 返回元素名稱的本地部分。
namespaceURI 返回元素的命名空間 URI。
nextSibling 返回緊隨該元素之后的節點。
nodeName 返回節點的名稱,取決于其類型。
nodeType 返回節點的類型。
ownerDocument 返回元素的根元素(文檔對象)。
parentNode 返回元素的父節點。
prefix 設置或返回元素的命名空間前綴。
previousSibling 返回緊鄰該元素之前的節點。
schemaTypeInfo 返回與元素相關聯的類型信息。
tagName 返回元素的名稱。
textContent 設置或返回元素及其后代的文本內容。

Element 對象的方法

方法 描述
appendChild() 將新的子節點添加到該節點的子節點列表的末尾。
cloneNode() 克隆節點。
compareDocumentPosition() 比較兩個節點的文檔位置。
getAttribute() 返回屬性的值。
getAttributeNS() 返回屬性的值(帶有命名空間)。
getAttributeNode() 返回屬性節點,以 Attribute 對象。
getAttributeNodeNS() 返回屬性節點(帶有命名空間),以 Attribute 對象。
getElementsByTagName() 返回匹配元素節點及其子節點的 NodeList。
getElementsByTagNameNS() 返回匹配元素節點(帶有命名空間)及其子節點的 NodeList。
getFeature(feature,version) 返回 DOM 對象,該對象實現指定特性和版本的專用 API。
getUserData(key) 返回與節點上的鍵關聯的對象。必須首先將對象設置到此節點,通過使用相同的鍵來調用 setUserData。
hasAttribute() 返回元素是否擁有與指定名稱匹配的屬性。
hasAttributeNS() 返回元素是否擁有與指定名稱和命名空間匹配的屬性。
hasAttributes() 返回元素是否擁有屬性。
hasChildNodes() 返回該元素是否有子節點。
insertBefore() 在現有子節點之前插入新的子節點。
isDefaultNamespace(URI) 返回指定的 namespaceURI 是否是默認的。
isEqualNode() 檢查兩個節點是否相等。
lookupNamespaceURI() 返回與指定前綴匹配的命名空間 URI。
lookupPrefix() 返回與指定命名空間 URI 匹配的前綴。
normalize()

normalize() 方法移除空的文本節點,并連接相鄰的文本節點。

將元素下的所有文本節點(包括屬性)正規化,其中僅結構(例如元素、注釋、處理指令、CDATA 部分和實體引用)分隔文本節點。

即,既不存在相鄰的文本節點,也不存在空的文本節點。

removeAttribute() 刪除指定的屬性。
removeAttributeNS() 刪除指定的屬性(帶有命名空間)。
removeAttributeNode() 刪除指定的屬性節點。
removeChild() 刪除子節點。
replaceChild() 替換子節點。
setUserData(key,data,handler) 將對象與元素上的鍵相關聯。
setAttribute() 添加新屬性。
setAttributeNS() 添加新屬性(帶有命名空間)。
setAttributeNode() 添加新的屬性節點。
setAttributeNodeNS(attrnode) 添加新的屬性節點(帶有命名空間)。
setIdAttribute(name,isId) 如果 Attribute 對象的 isId 屬性為 true,則此方法將指定的屬性聲明為用戶確定的 ID 屬性。
setIdAttributeNS(uri,name,isId) 如果 Attribute 對象的 isId 屬性為 true,則此方法將指定的屬性(帶有命名空間)聲明為用戶確定的 ID 屬性。
setIdAttributeNode(idAttr,isId) 如果 Attribute 對象的 isId 屬性為 true,則此方法將指定的屬性聲明為用戶確定的 ID 屬性。

Top

Attr 對象的屬性

屬性 描述
baseURI 返回屬性的絕對基準 URI。
isId 如果屬性是 id 類型,則返回 true,否則返回 false。
localName 返回屬性名稱的本地部分。
name 返回屬性的名稱。
namespaceURI 返回屬性的命名空間 URI。
nodeName 返回節點的名稱,根據其類型。
nodeType 返回節點的類型。
nodeValue 設置或返回節點的值,根據其類型。
ownerDocument 返回屬性的根元素(文檔對象)。
ownerElement 返回屬性所附屬的元素節點。
prefix 設置或返回屬性的命名空間前綴。
schemaTypeInfo 返回與該屬性相關聯的類型信息。
specified

如果在文檔中設置了該屬性值,則返回 true;

如果屬性值是 DTD/Schema 中的默認值,則返回 false。

textContent 設置或返回屬性的文本內容。
value 設置或返回屬性的值。

Top

XML DOM Text 對象

Text 對象的屬性

屬性 描述
data 設置或返回元素或屬性的文本。
isElementContentWhitespace 判斷文本節點是否包含空白字符內容。
length 返回元素或屬性的文本長度。
wholeText 返回與該節點相鄰的文本節點的所有文本,按文檔順序連接。

Text 對象的方法

方法 描述
appendData() 將數據追加到節點。
deleteData() 從節點中刪除數據。
insertData() 將數據插入節點中。
replaceData() 替換節點中的數據。
replaceWholeText(text) 用指定的文本替換該節點和所有相鄰文本節點的文本。
splitText() 把一個 Text 節點拆分成兩個。
substringData() 從節點中提取數據。

Top

XML DOM CDATASection 對象

CDATASection 對象的屬性

屬性 描述
data 設置或返回該節點的文本。
length 返回 CDATA 部分的長度。

CDATASection 對象的方法

方法 描述
appendData() 將數據追加到節點。
deleteData() 從節點中刪除數據。
insertData() 將數據插入節點中。
replaceData() 替換節點中的數據。
splitText() 將 CDATA 節點拆分為兩個節點。
substringData() 從節點中提取數據。

Top

XML DOM Comment 對象

Comment 對象的屬性

屬性 描述
data 設置或返回該節點的文本。
length 返回該節點的文本長度。

Comment 對象的方法

方法 描述
appendData() 將數據追加到節點。
deleteData() 從節點中刪除數據。
insertData() 將數據插入節點中。
replaceData() 替換節點中的數據。
substringData() 從節點中提取數據。

Top

XML DOM XMLHttpRequest 對象

XMLHttpRequest 對象的方法

方法 描述
abort() 取消當前請求。
getAllResponseHeaders() 返回標頭信息。
getResponseHeader() 返回指定的 HTTP 響應頭部的值。
open(method,url,async,uname,pswd)

指定請求的類型、URL、是否應異步處理請求以及請求的其他可選屬性。

  • method: 請求類型:GET 或 POST
  • url: 文件在服務器上的位置
  • async: true(異步)或 false(同步)
send(string)

將請求發送到服務器。

string:僅用于 POST 請求

setRequestHeader() 將標簽/值對添加到要發送的標頭。

XMLHttpRequest 對象的屬性

屬性 描述
onreadystatechange 存儲每次 readyState 屬性更改時自動調用的函數(或函數名稱)。
readyState

保存 XMLHttpRequest 的狀態。從 0 到 4 的變化:

  • 0: 請求未初始化
  • 1: 服務器連接已建立
  • 2: 請求收到
  • 3: 請求處理中
  • 4: 請求已完成,響應已就緒
responseText 返回響應數據,以字符串。
responseXML 返回響應數據,以 XML 數據。
status 返回狀態號(例如 "404" 表示 "Not Found",或 "200" 表示 "OK")。
statusText 返回狀態文本(例如 "Not Found" 或 "OK")。

Top

XSD 元素

元素 解釋
all 規定子元素能夠以任意順序出現,每個子元素可出現零次或一次。
annotation annotation 元素是一個頂層元素,規定 schema 的注釋。
any 使創作者可以通過未被 schema 規定的元素來擴展 XML 文檔。
anyAttribute 使創作者可以通過未被 schema 規定的屬性來擴展 XML 文檔。
appInfo 規定 annotation 元素中應用程序要使用的信息。
attribute 定義一個屬性。
attributeGroup 定義在復雜類型定義中使用的屬性組。
choice 僅允許在 <choice> 聲明中包含一個元素出現在包含元素中。
complexContent 定義對復雜類型(包含混合內容或僅包含元素)的擴展或限制。
complexType 定義復雜類型。
documentation 定義 schema 中的文本注釋。
element 定義元素。
extension 擴展已有的 simpleType 或 complexType 元素。
field 規定 XPath 表達式,該表達式規定用于定義標識約束的值。
group 定義在復雜類型定義中使用的元素組。
import 向一個文檔添加帶有不同目標命名空間的多個 schema。
include 向一個文檔添加帶有相同目標命名空間的多個 schema。
key 指定屬性或元素值(或一組值)必須是指定范圍內的鍵。
keyref 規定屬性或元素值(或一組值)對應指定的 key 或 unique 元素的值。
list 把簡單類型定義為指定數據類型的值的一個列表。
notation 描述 XML 文檔中非 XML 數據的格式。
redefine 重新定義從外部架構文件中獲取的簡單和復雜類型、組和屬性組。
restriction 定義對 simpleType、simpleContent 或 complexContent 的約束。
schema 定義 schema 的根元素。
selector 指定 XPath 表達式,該表達式為標識約束選擇一組元素。
sequence 要求子元素必須按順序出現。每個子元素可出現 0 到任意次數。
simpleContent 包含對 complexType 元素的擴展或限制且不包含任何元素。
simpleType 定義一個簡單類型,規定約束以及關于屬性或僅含文本的元素的值的信息。
union 定義多個 simpleType 定義的集合。
unique 指定屬性或元素值(或者屬性或元素值的組合)在指定范圍內必須是唯一的。

對數據類型的 XSD 限定

參閱 XSD 限定 / Facets

限定 描述
enumeration 定義可接受值的一個列表
fractionDigits 定義所允許的最大的小數位數。必須大于等于0。
length 定義所允許的字符或者列表項目的精確數目。必須大于或等于0。
maxExclusive 定義數值的上限。所允許的值必須小于此值。
maxInclusive 定義數值的上限。所允許的值必須小于或等于此值。
maxLength 定義所允許的字符或者列表項目的最大數目。必須大于或等于0。
minExclusive 定義數值的下限。所允許的值必需大于此值。
minInclusive 定義數值的下限。所允許的值必需大于或等于此值。
minLength 定義所允許的字符或者列表項目的最小數目。必須大于或等于0。
pattern 定義可接受的字符的精確序列。
totalDigits 定義所允許的阿拉伯數字的精確位數。必須大于0。
whiteSpace 定義空白字符(換行、回車、空格以及制表符)的處理方式。

Top

XSLT 元素

元素 描述
apply-imports 應用來自導入樣式表中的模版規則。
apply-templates 向當前元素或當前元素的子元素應用模板。
attribute 向元素添加屬性。
attribute-set 創建命名的屬性集。
call-template 調用一個指定的模板。
choose 與<when>以及<otherwise>協同使用,來表達多重條件測試。
comment 在結果樹中創建注釋節點。
copy 創建當前節點的一個備份(無子節點及屬性)。
copy-of 創建當前節點的一個備份(帶有子節點及屬性)。
decimal-format 定義當通過 format-number() 函數把數字轉換為字符串時,所要使用的字符和符號。
element 在輸出文檔中創建一個元素節點。
fallback 假如處理器不支持某個XSLT元素,規定一段備用代碼來運行。
for-each 遍歷指定的節點集中的每個節點。
if 包含一個模板,僅當某個指定的條件成立時應用此模板。
import 用于把一個樣式表中的內容倒入另一個樣式表中。
include 把一個樣式表中的內容包含到另一個樣式表中。
key 聲明一個命名的鍵。
message 向輸出寫一條消息(用于錯誤報告)。
namespace-alias 把樣式表中的命名空間替換為輸出中不同的命名空間。
number 測定當前節點的整數位置,并對數字進行格式化。
otherwise 規定 <choose> 元素的默認動作。
output 定義輸出文檔的格式。
param 聲明一個局部或全局參數。
preserve-space 用于定義保留空白的元素。
processing-instruction 生成處理指令節點。
sort 對結果進行排序。
strip-space 定義應當刪除空白字符的元素。
stylesheet 定義樣式表的根元素。
template 當指定的節點被匹配時所應用的規則。
text 通過樣式表生成文本節點。
transform 定義樣式表的根元素。
value-of 提取選定節點的值。
variable 聲明局部或者全局的變量。
when 規定 <choose> 元素的動作。
with-param 規定需被傳入某個模板的參數的值。

Top

XSLT、XPath 以及 XQuery 函數

存取函數

名稱 說明
fn:node-name(node) 返回參數節點的節點名稱。
fn:nilled(node) 返回是否拒絕參數節點的布爾值。
fn:data(item.item,...) 接受項目序列,并返回原子值序列。
  • fn:base-uri()
  • fn:base-uri(node)
返回當前節點或指定節點的 base-uri 屬性的值。
fn:document-uri(node) 返回指定節點的 document-uri 屬性的值。

錯誤和跟蹤函數

名稱 說明
  • fn:error()
  • fn:error(error)
  • fn:error(error,description)
  • fn:error(error,description,error-object)

例子:error(fn:QName('http://example.com/test', 'err:toohigh'), 'Error: Price is too high')

結果:向外部處理環境返回 http://example.com/test#toohigh 以及字符串 "Error: Price is too high"。

fn:trace(value,label) 用于對查詢進行 debug。

有關數值的函數

名稱 說明
fn:number(arg)

返回參數的數值。參數可以是布爾值、字符串或節點集。

例子:number('100')

結果:100

fn:abs(num)

返回參數的絕對值。

例子:abs(3.14)

結果:3.14

例子:abs(-3.14)

結果:3.14

fn:ceiling(num)

返回大于 num 參數的最小整數。

例子:ceiling(3.14)

結果:4

fn:floor(num)

返回不大于 num 參數的最大整數。

例子:floor(3.14)

結果:3

fn:round(num)

把 num 參數舍入為最接近的整數。

例子:round(3.14)

結果:3

fn:round-half-to-even()

例子:round-half-to-even(0.5)

結果:0

例子:round-half-to-even(1.5)

結果:2

例子:round-half-to-even(2.5)

結果:2

有關字符串的函數

名稱 說明
fn:string(arg)

返回參數的字符串值。參數可以是數字、邏輯值或節點集。

例子:string(314)

結果:"314"

fn:codepoints-to-string(int,int,...)

根據代碼點序列返回字符串。

例子:codepoints-to-string(84, 104, 233, 114, 232, 115, 101)

結果:'Thérèse'

fn:string-to-codepoints(string)

根據字符串返回代碼點序列。

例子:string-to-codepoints("Thérèse")

結果:84, 104, 233, 114, 232, 115, 101

fn:codepoint-equal(comp1,comp2) 根據 Unicode 代碼點對照,如果 comp1 的值等于 comp2 的值,則返回 true。(http://www.w3.org/2005/02/xpath-functions/collation/codepoint),否則返回 false。
  • fn:compare(comp1,comp2)
  • fn:compare(comp1,comp2,collation)

如果 comp1 小于 comp2,則返回 -1。如果 comp1 等于 comp2,則返回 0。如果 comp1 大于 comp2,則返回 1。(根據所用的對照規則)。

例子:compare('ghi', 'ghi')

結果:0

fn:concat(string,string,...)

返回字符串的拼接。

例子:concat('XPath ','is ','FUN!')

結果:'XPath is FUN!'

fn:string-join((string,string,...),sep)

使用 sep 參數作為分隔符,來返回 string 參數拼接后的字符串。

例子:string-join(('We', 'are', 'having', 'fun!'), ' ')

結果:' We are having fun! '

例子:string-join(('We', 'are', 'having', 'fun!'))

結果:'Wearehavingfun!'

例子:string-join((), 'sep')

結果:''

  • fn:substring(string,start,len)
  • fn:substring(string,start)

返回從 start 位置開始的指定長度的子字符串。第一個字符的下標是 1。如果省略 len 參數,則返回從位置 start 到字符串末尾的子字符串。

例子:substring('Beatles',1,4)

結果:'Beat'

例子:substring('Beatles',2)

結果:'eatles'

  • fn:string-length(string)
  • fn:string-length()

返回指定字符串的長度。如果沒有 string 參數,則返回當前節點的字符串值的長度。

例子:string-length('Beatles')

結果:7

  • fn:normalize-space(string)
  • fn:normalize-space()

刪除指定字符串的開頭和結尾的空白,并把內部的所有空白序列替換為一個,然后返回結果。如果沒有 string 參數,則處理當前節點。

例子:normalize-space(' The   XML ')

結果:'The XML'

fn:normalize-unicode() 執行 Unicode 規格化。
fn:upper-case(string)

把 string 參數轉換為大寫。

例子:upper-case('The XML')

結果:'THE XML'

fn:lower-case(string)

把 string 參數轉換為小寫。

例子:lower-case('The XML')

結果:'the xml'

fn:translate(string1,string2,string3)

把 string1 中的 string2 替換為 string3。

例子:translate('12:30','30','45')

結果:'12:45'

例子:translate('12:30','03','54')

結果:'12:45'

例子:translate('12:30','0123','abcd')

結果:'bc:da'

fn:escape-uri(stringURI,esc-res)

例子:escape-uri("http://example.com/test#car", true())

結果:"http%3A%2F%2Fexample.com%2Ftest#car"

例子:escape-uri("http://example.com/test#car", false())

結果:"http://example.com/test#car"

例子:escape-uri ("http://example.com/~bébé", false())

結果:"http://example.com/~b%C3%A9b%C3%A9"

fn:contains(string1,string2)

如果 string1 包含 string2,則返回 true,否則返回 false。

例子:contains('XML','XM')

結果:true

fn:starts-with(string1,string2)

如果 string1 以 string2 開始,則返回 true,否則返回 false。

例子:starts-with('XML','X')

結果:true

fn:ends-with(string1,string2)

如果 string1 以 string2 結尾,則返回 true,否則返回 false。

例子:ends-with('XML','X')

結果:false

fn:substring-before(string1,string2)

返回 string2 在 string1 中出現之前的子字符串。

例子:substring-before('12/10','/')

結果:'12'

fn:substring-after(string1,string2)

返回 string2 在 string1 中出現之后的子字符串。

例子:substring-after('12/10','/')

結果:'10'

fn:matches(string,pattern)

如果 string 參數匹配指定的模式,則返回 true,否則返回 false。

例子:matches("Merano", "ran")

結果:true

fn:replace(string,pattern,replace)

把指定的模式替換為 replace 參數,并返回結果。

例子:replace("Bella Italia", "l", "*")

結果:'Be**a Ita*ia'

例子:replace("Bella Italia", "l", "")

結果:'Bea Itaia'

fn:tokenize(string,pattern)

例子:tokenize("XPath is fun", "\s+")

結果:("XPath", "is", "fun")

針對 anyURI 的函數

名稱 說明
fn:resolve-uri(relative,base)  

關于布爾值的函數

名稱 說明
fn:boolean(arg) 返回數字、字符串或節點集的布爾值。
fn:not(arg)

首先通過 boolean() 函數把參數還原為一個布爾值。

如果該布爾值為 false,則返回 true,否則返回 true。

例子:not(true())

結果:false

fn:true()

返回布爾值 true。

例子:true()

結果:true

fn:false()

返回布爾值 false。

例子:false()

結果:false

有關持續時間、日期和時間的函數

日期、時間、持續時間的組件提取函數

名稱 說明
fn:dateTime(date,time) 把參數轉換為日期和時間。
fn:years-from-duration(datetimedur) 返回參數值的年份部分的整數,以標準詞匯表示法來表示。
fn:months-from-duration(datetimedur) 返回參數值的月份部分的整數,以標準詞匯表示法來表示。
fn:days-from-duration(datetimedur) 返回參數值的天部分的整數,以標準詞匯表示法來表示。
fn:hours-from-duration(datetimedur) 返回參數值的小時部分的整數,以標準詞匯表示法來表示。
fn:minutes-from-duration(datetimedur) 返回參數值的分鐘部分的整數,以標準詞匯表示法來表示。
fn:seconds-from-duration(datetimedur) 返回參數值的分鐘部分的十進制數,以標準詞匯表示法來表示。
fn:year-from-dateTime(datetime)

返回參數本地值的年部分的整數。

例子:year-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))

結果:2005

fn:month-from-dateTime(datetime)

返回參數本地值的月部分的整數。

例子:month-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))

結果:01

fn:day-from-dateTime(datetime)

返回參數本地值的天部分的整數。

例子:day-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))

結果:10

fn:hours-from-dateTime(datetime)

返回參數本地值的小時部分的整數。

例子:hours-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))

結果:12

fn:minutes-from-dateTime(datetime)

返回參數本地值的分鐘部分的整數。

例子:minutes-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))

結果:30

fn:seconds-from-dateTime(datetime)

返回參數本地值的秒部分的十進制數。

例子:seconds-from-dateTime(xs:dateTime("2005-01-10T12:30:00-04:10"))

結果:0

fn:timezone-from-dateTime(datetime) 返回參數的時區部分,如果存在。
fn:year-from-date(date)

返回參數本地值中表示年的整數。

例子:year-from-date(xs:date("2005-04-23"))

結果:2005

fn:month-from-date(date)

返回參數本地值中表示月的整數。

例子:month-from-date(xs:date("2005-04-23"))

結果:4

fn:day-from-date(date)

返回參數本地值中表示天的整數。

例子:day-from-date(xs:date("2005-04-23"))

結果:23

fn:timezone-from-date(date) 返回參數的時區部分,如果存在。
fn:hours-from-time(time)

返回參數本地值中表示小時部分的整數。

例子:hours-from-time(xs:time("10:22:00"))

結果:10

fn:minutes-from-time(time)

返回參數本地值中表示分鐘部分的整數。

例子:minutes-from-time(xs:time("10:22:00"))

結果:22

fn:seconds-from-time(time)

返回參數本地值中表示秒部分的整數。

例子:seconds-from-time(xs:time("10:22:00"))

結果:0

fn:timezone-from-time(time) 返回參數的時區部分,如果存在。
fn:adjust-dateTime-to-timezone(datetime,timezone)

如果 timezone 參數為空,則返回沒有時區的 dateTime。

否則返回帶有時區的 dateTime。

fn:adjust-date-to-timezone(date,timezone)

如果 timezone 參數為空,則返回沒有時區的 date。

否則返回帶有時區的 date。

fn:adjust-time-to-timezone(time,timezone)

如果 timezone 參數為空,則返回沒有時區的 time。

否則返回帶有時區的 time。

與 QNames 相關的函數

名稱 說明
fn:QName()  
fn:local-name-from-QName()  
fn:namespace-uri-from-QName()  
fn:namespace-uri-for-prefix()  
fn:in-scope-prefixes()  
fn:resolve-QName()  

關于節點的函數

名稱 說明
  • fn:name()
  • fn:name(nodeset)
返回當前節點的名稱或指定節點集中的第一個節點。
  • fn:local-name()
  • fn:local-name(nodeset)
返回當前節點的名稱或指定節點集中的第一個節點 - 不帶有命名空間前綴。
  • fn:namespace-uri()
  • fn:namespace-uri(nodeset)
返回當前節點或指定節點集中第一個節點的命名空間 URI。
fn:lang(lang)

如果當前節點的語言匹配指定的語言,則返回 true。

例子:Lang("en") is true for <p xml:lang="en">...</p>

例子:Lang("de") is false for <p xml:lang="en">...</p>

  • fn:root()
  • fn:root(node)
返回當前節點或指定的節點所屬的節點樹的根節點。通常是文檔節點。

有關序列的函數

一般性的函數

名稱 說明
fn:index-of((item,item,...),searchitem)

返回在項目序列中等于 searchitem 參數的位置。

例子:index-of ((15, 40, 25, 40, 10), 40)

結果:(2, 4)

例子:index-of (("a", "dog", "and", "a", "duck"), "a")

Result (1, 4)

例子:index-of ((15, 40, 25, 40, 10), 18)

結果:()

fn:remove((item,item,...),position)

返回由 item 參數構造的新序列 - 同時刪除 position 參數指定的項目。

例子:remove(("ab", "cd", "ef"), 0)

結果:("ab", "cd", "ef")

例子:remove(("ab", "cd", "ef"), 1)

結果:("cd", "ef")

例子:remove(("ab", "cd", "ef"), 4)

結果:("ab", "cd", "ef")

fn:empty(item,item,...)

如果參數值是空序列,則返回 true,否則返回 false。

例子:empty(remove(("ab", "cd"), 1))

結果:false

fn:exists(item,item,...)

如果參數值不是空序列,則返回 true,否則返回 false。

例子:exists(remove(("ab"), 1))

結果:false

fn:distinct-values((item,item,...),collation)

返回唯一不同的值。

例子:distinct-values((1, 2, 3, 1, 2))

結果:(1, 2, 3)

fn:insert-before((item,item,...),pos,inserts)

返回由 item 參數構造的新序列 - 同時在 pos 參數指定位置插入 inserts 參數的值。

例子:insert-before(("ab", "cd"), 0, "gh")

結果:("gh", "ab", "cd")

例子:insert-before(("ab", "cd"), 1, "gh")

結果:("gh", "ab", "cd")

例子:insert-before(("ab", "cd"), 2, "gh")

結果:("ab", "gh", "cd")

例子:insert-before(("ab", "cd"), 5, "gh")

結果:("ab", "cd", "gh")

fn:reverse((item,item,...))

返回指定的項目的顛倒順序。

例子:reverse(("ab", "cd", "ef"))

結果:("ef", "cd", "ab")

例子:reverse(("ab"))

結果:("ab")

fn:subsequence((item,item,...),start,len)

返回 start 參數指定的位置返回項目序列,序列的長度由 len 參數指定。

第一個項目的位置是 1。

例子:subsequence(($item1, $item2, $item3,...), 3)

結果:($item3, ...)

例子:subsequence(($item1, $item2, $item3, ...), 2, 2)

結果:($item2, $item3)

fn:unordered((item,item,...)) 依據實現決定的順序來返回項目。

測試序列容量的函數

名稱 說明
fn:zero-or-one(item,item,...) 如果參數包含零個或一個項目,則返回參數,否則生成錯誤。
fn:one-or-more(item,item,...) 如果參數包含一個或多個項目,則返回參數,否則生成錯誤。
fn:exactly-one(item,item,...) 如果參數包含一個項目,則返回參數,否則生成錯誤。

Equals, Union, Intersection and Except

名稱 說明
fn:deep-equal(param1,param2,collation) 如果 param1 和 param2 與彼此相等(deep-equal),則返回 true,否則返回 false。

合計函數

名稱 說明
fn:count((item,item,...)) 返回節點的數量。
fn:avg((arg,arg,...))

返回參數值的平均數。

例子:avg((1,2,3))

結果:2

fn:max((arg,arg,...))

返回大于其它參數的參數。

例子:max((1,2,3))

結果:3

例子:max(('a', 'k'))

結果:'k'

fn:min((arg,arg,...))

返回小于其它參數的參數。

例子:min((1,2,3))

結果:1

例子:min(('a', 'k'))

結果:'a'

fn:sum(arg,arg,...) 返回指定節點集中每個節點的數值的總和。

生成序列的函數

名稱 說明
fn:id((string,string,...),node) 返回元素節點序列,這些節點的 ID 值等于 string 參數中指定的一個或多個值。
fn:idref((string,string,...),node) 返回元素或屬性節點序列,這些節點的 IDREF 值等于 string 參數中指定的一個或多個值。
fn:doc(URI)  
fn:doc-available(URI) 如果 doc() 函數返回文檔節點,則返回 true,否則返回 false。
  • fn:collection()
  • fn:collection(string)
 

上下文函數

名稱 說明
fn:position()

返回當前正在被處理的節點的 index 位置。

例子://book[position()<=3]

結果:選擇前三個 book 元素

fn:last()

返回在被處理的節點列表中的項目數目。

例子://book[last()]

結果:選擇最后一個 book 元素

fn:current-dateTime() 返回當前的 dateTime(帶有時區)。
fn:current-date() 返回當前的日期(帶有時區)。
fn:current-time() 返回當前的時間(帶有時區)。
fn:implicit-timezone() 返回隱式時區的值。
fn:default-collation() 返回默認對照的值。
fn:static-base-uri() 返回 base-uri 的值。

XSLT 函數

此外,還有以下內置的 XSLT 函數:

名稱 描述
current() 返回當前節點作為唯一成員的節點集。
document() 用于訪問外部 XML 文檔中的節點。
element-available() 檢測 XSLT 處理器是否支持指定的元素。
format-number() 把數字轉換為字符串。
function-available() 檢測 XSLT 處理器是否支持指定的函數。
generate-id() 返回唯一標識指定節點的字符串值。
key() 檢索以前使用 <xsl:key> 語句標記的元素。
node-set 將樹轉換為節點集。產生的節點集總是包含單個節點并且是樹的根節點。
system-property() 返回系統屬性的值。
unparsed-entity-uri() 返回未解析實體的 URI。

Top

其他 XML DOM 對象

Top