在过去几周处理过 XQuery 之后,在混合 XQuery 和 (X)HTML 代码时,我有时仍然不同意 XQuery 语法。
由于我的 XML 文档中的结构更复杂,我有一个嵌套的 FLWOR 语句。在某些时候我需要插入一些if-then-else
语句,但根据它们在代码中的位置,它们要么根本没有问题,要么文件将不再被验证。
这是我的代码的缩短版本:
xquery version "3.0";
declare option exist:serialize "method=xhtml media-type=text/html";
<html>
<head>
<meta HTTP-EQUIV="Content-Type" content="text/html; charset=UTF-8"/>
<link rel="stylesheet" type="text/css" href="style.css"/>
<title>{$page-title}</title>
</head>
<body>
{
let some variables
...
return
for $text in $texts
let some variables
...
return
<div id="text">
<div id="title">{$title}</div>
<div id="id">({data($id)})</div>
{
if ($headword/form = $searchphrase) then
<div id="headword2">{$headword/form}</div>
else
<div id="headword1">{$headword/form}</div>
}
{
for $variant in $variants
return
***
<div id="variant">{$variant/form}
***
{
for $variant_cit in $variant/citation
return
if ($variant_cit/form = $searchphrase) then
<div id="variant_cit_2">{$variant_cit/form}</div>
else
<div id="variant_cit_1">{$variant_cit/form}</div>
}
</div>
}
</div>
}
</body>
</html>
此代码按预期工作,但只要我想替换
<div id="variant">{$variant/form}
(星号之间的线)由
if ($variant/form = $searchphrase) then
<div id="variant2">{$variant/form}
else
<div id="variant1">{$variant/form}
无法再验证代码。添加另一对括号也无济于事。
也许我只是错过了一个微小的细节,但我没有看到它。有人可以帮忙吗?