1

我试图用参数调用一个函数,发送一个id并返回照片的url,这个想法是当你点击一个按钮时显示元素的照片,问题是我不能调用这个函数我发誓我尝试过,并用谷歌搜索过,但我根本做不到:P

这是函数的代码和声明

xquery 版本“1.0”;

声明命名空间本地=“本地”;声明选项存在:序列化“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

圣诞节顺便说一句:3

4

1 回答 1

1

两个问题很明显

  1. AS xs:string? -- 我认为 XQuery(作为 XPath)是区分大小写的。因此,AS应该引发错误,因为语法上合法的标记是as.

  2. 函数体:

.

for $dir in doc("pubs.xml")//dir
    where  id= $dir/id
    return $dir/photo/text();

在 XQuery(和 XSLT)中没有为函数定义初始上下文节点。因此,任何相关的 XPath 表达式都是未定义的。就是这种情况id ——什么的孩子id

解决方案是必须使用绝对表达式来代替——例如:

 $someParam/id 
于 2012-12-28T16:51:02.613 回答