If条件を使用して、xqueryの変数に値を割り当てようとしています。これを行う方法がわかりません。
これは私が試したものです:
declare namespace libx='http://libx.org/xml/libx2';
declare namespace atom='http://www.w3.org/2005/Atom';
declare variable $entry_type as xs:string external;
let $libx_node :=
if ($entry_type = 'package' or 'libapp') then
{element {fn:concat("libx:", $entry_type)} {()} }
else if ($entry_type = 'module') then
'<libx:module>
<libx:body>{$module_body}</libx:body>
</libx:module>'
このコードは、[XPST0003]不完全な「if」式エラーをスローします。誰かがこれを修正するのを手伝ってくれる?
また、誰かがxqueriesを学ぶためのいくつかの良いチュートリアルを提案できますか?.
ありがとう、ソニー
これは、XQueryの 条件式の指定else-expressionが常に必要であるためです。
_[45] IfExpr ::= "if" "(" Expr ")" "then" ExprSingle "else" ExprSingle
_
したがって、2番目のelse
句を記述する必要があります(たとえば、空のシーケンスを返す場合があります)。
_declare namespace libx='http://libx.org/xml/libx2';
declare namespace atom='http://www.w3.org/2005/Atom';
declare variable $entry_type as xs:string external;
let $libx_node :=
if ($entry_type = ('package','libapp')) then
element {fn:concat("libx:", $entry_type)} {()}
else if ($entry_type = 'module') then
<libx:module>
<libx:body>{$module_body}</libx:body>
</libx:module>
else ()
... (your code here) ...
_
いくつかの明らかなバグも修正されています:
if($entry_type = ('package', 'libapp'))
が必要ですXQueryチュートリアルについて。 W3CSchoolsのXQueryチュートリアル は、かなり良い出発点です。