BaseX 是一個使用 Java 撰寫的 XML 資料庫, 也可以作為 XQuery processor 使用,採用 BSD-3-Clause 授權, 使用 XQuery 作為其查詢語言,實作 XQuery 多項相關標準, 並且設計了自己的 Server Protocol。
basexserver 預設的 port 為 1984,初次啟動需要使用 -cPASSWORD 設定 admin 的密碼。
basexserver -cPASSWORD
下面使用 basexclient 連線到 server(-U 為 username,-P 為 password)。
basexclient -Uadmin -Padmin
建立一個新的使用者 danilo,並且給予全域的 CREATE 權限(BaseX 將權限分為 global 與 local, global 有 NONE, READ, WRITE, CREATE, ADMIN 的區別,而 local 則是 NONE, READ, WRITE)。
CREATE USER danilo password
ALTER PASSWORD danilo password
GRANT CREATE TO danilo
其中 CREATE USER 可以在建立使用者的時候同時設定密碼,在之後如果要修改密碼可以使用 ALTER PASSWORD 修改。
如果要移除使用者:
DROP USER danilo
使用 basexclient 建立新的資料庫:
- Create an empty database
CREATE DB <database_name> - To create a database with initial data
CREATE DB <database_name> <path/to/input> - To add multiple documents to a newly created empty database
CREATE DB store ADD factbook.xml ADD https://files.basex.org/xml/xmark.xml
如果使用 XQuery 建立資料庫:
db:create('myDatabaseName', 'path/to/input.xml')
如果要列出目前的資料庫:
LIST
如果使用 XQuery 列出目前的資料庫:
db:list()
使用 basexclient 刪除資料庫:
DROP DB [name]
如果使用 XQuery 刪除資料庫:
db:drop($name)
Tools
BaseX 提供了一些工具可以使用。 basexserver 為 BaseX database server,而 basexclient 則是其 client 的程式。 basexgui 使用 Java Swing 撰寫,是 BaseX 的圖型界面管理工具,可以用來管理其資料庫以及測試一些 XQuery 語句。 basex 可以用來執行 BaseX 或者是 XQuery 的指令。
下面是一個使用 basex 的例子,用來解 1-9位數不重複印出來的練習問題,
使用者輸入1 印1-9
使用者輸入2 印1-98 (11, 22, 33等重複的不印)
使用者輸入3 印1-987 (121, 988, 667等有重複的不印)
basex -bnumber=9 -Qcount.xq
參數 -b 用來設定外部變數。count.xq 的內容如下:
declare variable $number external;
if (xs:integer($number) lt 1 or xs:integer($number) gt 9) then (
<error>
<message>Invalid data</message>
</error>
) else (
let $max := xs:integer(math:exp10($number) - 1)
for $i in 1 to $max
return
if(not(matches(fn:string($i), '1.*1|2.*2|3.*3|4.*4|5.*5|6.*6|7.*7|8.*8|9.*9|0.*0'))) then (
$i
)
)
沒有留言:
張貼留言
注意:只有此網誌的成員可以留言。