XQuery/Wikibook 程式碼連結列表
外觀
< XQuery
本華夏公益教科書包含指向在大學伺服器上執行的程式碼示例的連結。我們需要跟蹤所有連結,以確保它們保持活動狀態,以便所有連結都可以由測試平臺執行,並支援目錄結構或檔名更改。
該指令碼類似於開頭處的索引指令碼,用於獲取書籍中的頁面列表。然後它獲取每個頁面並提取其中 href 包含“.xq” 的錨點標籤。這有點寬泛,包括一些誤報。華夏公益教科書頁面連結來自頁面標題,實際 URL 列出在頁面標題下方。
xquery version "1.0";
import module namespace httpclient = "http://exist-db.org/xquery/httpclient";
declare option exist:serialize "method=xhtml media-type=text/html";
let $book:= request:get-parameter("book","XQuery")
let $base := "https://wikibook.tw"
let $indexPage :=httpclient:get(xs:anyURI(concat($base,"/wiki/Category:",$book,"?x")),false(),())/httpclient:body/*
let $pages := $indexPage//div[@class="mw-category"]//li
return
<html>
<head>
<title>Index of {$book} code samples</title>
</head>
<body>
<h1>Index of {$book} code samples</h1>
<ul>
{
for $letter in distinct-values($pages/upper-case(substring(substring-after(.,'/'),1,1)))[string-length(.) = 1]
for $page in $pages[starts-with(upper-case(substring-after(.,'/')),$letter)]
let $title := string($page)
let $url := concat($base,$page/a/@href)
let $refs := httpclient:get(xs:anyURI($url),false(),())/httpclient:body//a[contains(@href,".xq")]
order by $title
return
if (exists($refs))
then
<div>
<li><a href="{$url}">{$title}</a>
<ul>
{for $ref in $refs
return
<li> {string( $ref /@href)} </li>
}
</ul>
</li>
</div>
else ()
}
</ul>
</body>
</html>