XSLT中document()
和fn:doc()
之间有什么区别?
答案 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。