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