2014-04-20 29 views
0

我有很多包含<h1>text</h1>的XML文档。 例如:使用xquery读取xml文档的错误逻辑?

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

我插入此代码:

for $p in (1 to 351) 
return <a href="{$p}">{data(doc(concat("/db/INDEX/",$p,".html"))//h1)}</a> 

结果是这样的:

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

注意:当一个页面有两个标签或更<h1>文本显示在一个标签<a>

但在EED这样的:

<a href="2"> 
text-1 
</a> 
<a href="2"> 
text-2 
</a> 

当在一个页面中都没有<h1>标签,显示空<a>

+0

你必须移动一些functionnality你XQUERY语句中。这是什么XSLT方面?您使用了该标签,但在您的解决方案中似乎没有XSLT组件。 –

+0

请使用真正符合您的问题的标签(这与XSLT无关),并确保在解决您的问题时选择接受的答案。看看[常见问题]。 –

回答

1

如何:

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

好的。我决心:

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>