在XQuery 3.0(exist db)中获取标记内容

在XQuery 3.0(exist db)中获取标记内容,xquery,exist-db,Xquery,Exist Db,我使用以下XQuery代码来选择集合中的所有.html文档 数据库的存在。脚本应该创建一个XML文档(序列化为JSON),其中包含文档URI和标题(存储为第一个H1元素)。 但是,元素仍然为空。为什么? xquery version "3.0"; declare option exist:serialize "method=json media-type=text/javascript"; <result> { let $data-collection := '/db/ou

我使用以下XQuery代码来选择集合中的所有.html文档 数据库的存在。脚本应该创建一个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>
xquery版本“3.0”;
declare option exist:序列化“method=json media type=text/javascript”;
{
让$data collection:='/db/output'
对于集合中的$doc($data collection)
其中包含(基本uri($doc),“.html”)
返回
{基本uri($doc)}
{$doc/h1/text()}
}

我简化了HTML文档的查找,但我认为您的
h1
元素不是文档的根,而是我假设它可能位于文档中的任何位置,因此使用了
子体或self
轴,例如,
/
由于您的HTML可能位于名称空间中,我使用了
*:
前缀来指示任何名称空间

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)[ends-with(base-uri(.), '.html')]
    return 
        <item>
            <url>{base-uri($doc)}</url>
            <title>{$doc//*:h1/text()}</title>
        </item>
}
</result>
xquery版本“3.0”;
declare option exist:序列化“method=json media type=text/javascript”;
{
让$data collection:='/db/output'
对于集合中的$doc($data collection)[以(基本uri(.),'.html')结束]
返回
{基本uri($doc)}
{$doc/*:h1/text()}
}