可能并不困难,但我找不到正确的命令和语法:
我打开了一个包含几个XML文档的BaseX数据库:
/document-uri()
看起来像这样
/dirA/dirA1/x01.xml
/dirA/dirA1/x02.xml
/dirA/dirA2/x03.xml
/dirA/dirA3/dirA31/x04.xml
/dirA/dirA3/dirA31/x05.xml
/dirA/dirA3/dirA32/x06.xml
/dirB/dirB1/x07.xml
/dirB/dirB2/x08.xml
/dirC/dirC1/x09.xml
/dirC/dirC2/dirC11/x10.xml
/dirD/dirD1/dirD11/x11.xml
/dirE/dirE1/dirE11/x12.xml
我正在寻找的是一个XQuery,它可以通过URI选择文档并将其用作XPath上下文。像这样:
document("/dirA/dirA1/x01.xml")/root/foo
另一种也非常有用:在目录路径中选择所有文档(递归:))
document("/dirA/dirA1/")/root/foo
具有doc
功能,因此doc('/dirA/dirA1/x01.xml')
应该选择文档。还有collection
函数,它可能允许您选择collection('/dirA/dirA1')
。收集函数的确切用法取决于XQuery处理器,例如您如何在BaseX中设置数据库。
因此,基本上doc
和collection
函数在XQuery中应该有所帮助。仅XSLT具有您在示例中使用的名为document
的函数。