掌握XQuery 3.0中的标记内容(exists-db)

时间:2014-06-30 13:14:17

标签: xquery exist-db

我使用以下XQuery代码来选择集合中的所有.html文档 存在db。该脚本应创建一个XML文档(序列化为JSON),其中包含文档URI和标题(存储为第一个H1元素)。 但是元素仍然是空的。为什么呢?

xquery version "3.0";
declare option exist:serialize "method=json media-type=text/javascript";

<result> {
    let $data-collection := '/db/output'
    for $doc in collection($data-collection)
    where contains(base-uri($doc), '.html')
    return 
        <item>
            <url>{base-uri($doc)}</url>
            <title>{$doc/h1/text()}</title>
        </item>
}
</result>

1 个答案:

答案 0 :(得分:3)

我简化了对HTML文档的查找,但我认为你的h1元素不是文档的根,而是我假设它可能在文档的任何位置,所以使用了{{1}轴,例如descendant-or-self并且由于您的HTML可能位于命名空间中,我使用//前缀来指示任何命名空间。

*: