1

我是 xQuery 的初学者,我正在尝试在 XML 文件中列出根节点的所有子类。但是,XML 文档中的根节点在其中定义了命名空间,这意味着我的 xQuery 在引用时不起作用。

for $x in doc("/db/books.xml")/bookstore/book return $x 不返回任何带有在 bookstore 标签中定义的命名空间的东西

当我从标签中删除命名空间时,查询完美运行。

有什么办法可以在不删除 XML 文件中的命名空间的情况下解决这个问题?

编辑:我最终将对数百个名称空间差异很大的 XML 文件执行这些查询

先感谢您

4

2 回答 2

0

您是否在查询中声明了您的命名空间?喜欢 :

declare namespace ns = "http://example.org";

然后在查询中使用它:

for $x in doc("/db/books.xml")/ns:bookstore/ns:book return $x
于 2012-12-03T11:39:14.637 回答
0

如果您更懒惰(并且可以确保避免像<a:foo />vs之类的名称冲突<b:foo />),您甚至可能想要使用:

for $x in doc("/db/books.xml")/*:bookstore/*:book return $x* 匹配任何给定的命名空间(甚至是“无命名空间”)

于 2012-12-03T16:16:25.140 回答