我正在尝试用参数调用一个函数,发送一个id并返回一张照片的url,想法是当你点击一个按钮时显示该元素的照片,问题是我不能打电话给我,我发誓,我尝试了,并用Google搜索,但我根本不能:P
这是函数的代码和声明
xquery版本“1.0”;
声明namespace local =“local”; 声明选项存在:serialize“method = xhtml media-type = text / html”;
xquery version "1.0";
declare namespace local = "local";
declare option exist:serialize "method=xhtml media-type=text/html";
declare function local:showPhoto($id as xs:decimal?)AS xs:string?
{
for $dir in doc("pubs.xml")//dir
where id= $dir/id
return $dir/photo/text();
};
这里是表格和代码来调用它,确定如果你知道一个更好的方法来做它只是告诉我:P(当然我是一个小菜鸟,所以我相信你可以告诉我是一个更好的方法来做到这一点)
<table id="pubs" border="1">
{
for $directorio in doc("/db/Ocio/pubs.xml")//dir
order by $dir/name
return
<tr>
<td>{$dir/name/text()}</td>
<td><a href="{$dir/web/text()}">Web url</a></td>
<td><input onclick="{local:showPhoto($dir/id)" type="button" value="MOAR INFO"></input></td>
</tr>
}
</table>
也许这里有一个错误,但这是因为我将代码翻译成英文,当我执行ir时这是错误:
XPDY0002:...的未定义上下文序列
不知道该怎么做所以我问它,非常感谢你提前:D:D:D
X-mas btw:3
答案 0 :(得分:1)
两个问题很明显:
AS xs:string?
- 我认为XQuery(作为XPath)区分大小写。因此,AS
应该引发错误,因为语法上合法的令牌是as
。
功能正文:
for $dir in doc("pubs.xml")//dir
where id= $dir/id
return $dir/photo/text();
在XQuery(和XSLT)中没有为函数定义初始上下文节点。因此,任何相对XPath表达式都是未定义的。这是id
的情况 - 孩子id
是什么?
解决方案必须使用绝对表达式 - 例如:
$someParam/id