XSLT中的document()和fn:doc()有什么区别?

时间:2016-05-21 06:15:08

标签: xml xslt

XSLT中document()fn:doc()之间有什么区别?

1 个答案:

答案 0 :(得分:2)

引入了document函数in 1999 in XSLT 1.0并具有以下签名:node-set document(object, node-set?),即它将对象作为第一个参数,并将可选的第二个参数作为node-set类型并返回一个节点集。第一个参数可以是URI值的节点集,例如,给定输入<files><file>doc1.xml</file><file>doc2.xml</file><file>doc3.xml</file></files>document(/files/file)的调用将返回三个文档节点document('file1.xml') | document('file2.xml') | document('file3.xml')的并集。

XSLT和XPath 2.0的进一步开发与XQuery 1.0开发相结合并定义了common functions for XSLT and XPath 2.0 and XQuery 1.0 in 2007,其中一个是the doc function,它具有以下签名:fn:doc($uri as xs:string?) as document-node()?,即function接受带有URI的单个字符串参数并返回一个文档节点(或者它将一个空序列作为其参数并返回一个空序列),所以基本上它加载一个XML文档,例如doc('file1.xml')

document功能继续be available in XSLT 2.0并且有签名

document($uri-sequence as item()*) as node()*
document($uri-sequence as item()*, $base-node as node()) as node()*

正如您在链接规范中看到的那样,doc函数用于解释XSLT 2.0中document函数的语义。

此外,document函数允许在URI引用参数中使用片段标识符。

总之,doc函数允许在XSLT和XPath 2.0及更高版本以及XQuery 1.0及更高版本中解析单个文档,而document函数更复杂,并且其使用仅限于XSLT。