使用xquery读取xml文档时的错误逻辑?

使用xquery读取xml文档时的错误逻辑?,xml,xquery,exist-db,Xml,Xquery,Exist Db,我有很多包含文本的XML文档。 例如: <p> <h1> text-1 </h1> a lot text <h1> text-2 </h1> </p> 文本-1 大量文本 文本-2 我插入以下代码: for $p in (1 to 351) return <a href="{$p}">{data(doc(concat("/db/INDEX/",$p,".html"))//h1)}&l

我有很多包含
文本的XML文档。
例如:

<p>
 <h1>
   text-1
 </h1>
 a lot text
 <h1>
   text-2
 </h1>
</p>

文本-1
大量文本
文本-2

我插入以下代码:

for $p in (1 to 351)
return <a href="{$p}">{data(doc(concat("/db/INDEX/",$p,".html"))//h1)}</a>
中的$p(1到351)
返回
结果是:

<a href="2"<----this is page number >
 text-1
 text-2
</a>
<a href="3"<----this is page number />

当页面中没有
标记时,显示空

Ok。我决心:

xquery version "3.0";
for $P in 1 to 351
  let $S := data(doc(concat('/db/INDEX/' , $P , '.html'))//h1)
    for $result in $S
     return <a>{$result}</a>
xquery版本“3.0”;
从1到351美元的P
设$S:=data(doc(concat('/db/INDEX/',$P,'.html'))//h1)
对于$S,结果是$S
返回{$result}
那么:

for $h in collection("/db/INDEX")//h1
let $i := replace(document-uri(root($h)), ".*/(.*)\.html", "$1")
return
    <a href="{$i}">{string($h)}</a>
集合(“/db/INDEX”)/h1中$h的

让$i:=replace(文档uri(根($h)),“*/(.*)\.html”,“$1”)
返回

您必须在XQUERY语句中移动一些函数性。这其中的XSLT方面是什么?您使用了标记,但您的解决方案中似乎没有XSLT组件。请使用与您的问题实际匹配的标记(这与XSLT无关),并确保在答案解决您的问题时选择为已接受的答案。看一看这张照片。
for $h in collection("/db/INDEX")//h1
let $i := replace(document-uri(root($h)), ".*/(.*)\.html", "$1")
return
    <a href="{$i}">{string($h)}</a>