2014-04-20 56 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>