2012-04-20 35 views
3

例如如何使用XQuery打印「<" and ">」?

我創建包含動態數據的一個元素 -

XQUERY 
let $sttag:= concat('<', '/') 
return concat ($sttag, "newTag") 

上述XQuery返回輸出作爲&lt;/newTag代替</newTag

它有什麼辦法用xquery打印「<」和「>」?

回答

2

我推薦使用XQuery's element constructors。您可以動態使用computed element constructor創建元素:

element book { 
    attribute isbn {"isbn-0060229357" }, 
    element title { "Harold and the Purple Crayon"}, 
    element author { 
     element first { "Crockett" }, 
     element last {"Johnson" } 
    } 
} 

結果

<book isbn="isbn-0060229357"> 
    <title>Harold and the Purple Crayon</title> 
    <author> 
     <first>Crockett</first> 
     <last>Johnson</last> 
    </author> 
</book> 

(例如,從W3C XQuery specs

在你的情況,你可以使用

element newTag { ... } 
+0

我只想補充一點,你的'newTag'也可以動態構造,例如'element {concat(「new」,「Tag」)} {...}'。 – joewiz 2012-04-20 21:07:15

+0

我還想補充一點,您可以將XML元素直接放入xQuery中。我發現它比'element {}'語法更具可讀性。當我需要動態創建元素時,我只使用'element {}'語法。 – 2012-12-20 02:27:34

2

這裏是最多的插圖構建一個元素動態的方式 - 這個名字是不是在編譯時已知的,在每次執行一般是不同的:

let $name := translate(concat('N', current-time()), ':','_') 
    return 
     element {$name} {} 

產生

<N21_26_40.708-07_00/>