Xquery函数首先调用self而不单击然后单击函数调用self并使用Xpath

时间:2014-03-05 23:47:32

标签: jquery xml xpath exist-db

标题很奇怪,但是......

在Exist-db中

如何在同一页面上正常调用函数。只需在XML中显示evrythink,然后再使用XPath点击hiperlink调用self ..

我有这个功能。 Meaby它是完全治疗的...我... ...

declare function app:WyswietlAkweny($loc, $evtObj) {

    <table border="1" width="100%">
    <th>Podrzędne</th><th>Nazwa</th><th>Typ</th><th>Powierzchnia</th><th>Edycja</th>
    {
        for $x in doc('/db/Dane/akweny.xml/')//akwen
        let $nazwa := $x/nazwa,
            $typ := $x/typ,
            $powierzchnia := $x/powierzchnia
            return <tr>
                <th><a href="TO THE PARRENT"><img src="/exist/apps/Obrazki/lupa.jpg" alt="Podrzedny" /> KLIK</a></th>
                <th bgcolor="#F46978">{$nazwa}</th>
                <th>{$typ}</th>
                <th>{$powierzchnia}</th>
                <th>Edytuj</th>
                </tr>
    }
    </table>
};

这是我的XML

<?xml version="1.0" encoding="utf-8"?>
    <akweny>
        <akwen>
            <nazwa>Atlantycki</nazwa>
            <typ>ocean</typ>
            <powierzchnia>106450</powierzchnia>
            <akweny>
                <akwen>
                    <nazwa>Północne</nazwa>
                    <typ>morze</typ>
                    <powierzchnia>750</powierzchnia>
                </akwen>
                <akwen>
                    <nazwa>Batyckie</nazwa>
                    <typ>morze</typ>
                    <powierzchnia>386</powierzchnia>
                    <akweny>
                        <akwen>
                            <nazwa>Botnicka</nazwa>
                            <typ>zatoka</typ>
                            <powierzchnia>117</powierzchnia>
                        </akwen>
                    </akweny>
                </akwen>
            </akweny>
        </akwen>
        <akwen>
            <nazwa>Spokojny</nazwa>
            <typ>ocean</typ>
            <powierzchnia>179700</powierzchnia>
        </akwen>
    </akweny>

所以问题是,当我点击“KLIK”时,它必须只显示找到任何元素 akweny ,其元素 akwen 重复到结束元素与nazwa子元素的值为当前点击元素 akwen

总之,当我选择nazwa = Batyckie时,它应该显示下面的所有节点。

有什么想法吗?

PS。 nazwa =波兰语中的名字

1 个答案:

答案 0 :(得分:0)

我不确定我能理解你的XML或者你想要导航到什么,但是从一个查询到另一个查询的超链接,它只是所有直接的HTTP。例如你可以做一些改变这样的事情:

<th><a href="TO THE PARRENT"><img src="/exist/apps/Obrazki/lupa.jpg" alt="Podrzedny" /> KLIK</a></th>

为:

<th><a href="/exist/rest/db/myquery.xqy?search=parent&amp;current={util:node-id($x)}"><img src="/exist/apps/Obrazki/lupa.jpg" alt="Podrzedny" /> KLIK</a></th>

显然,您需要将/db/myquery.xqy替换为XQuery的路径。在您的XQuery中,您可以使用if / else来决定是否使用参数调用它并采取不同的操作过程。 e.g:

if(request:get-parameter("search", ()) eq "search" and request:get-parameter("current", ()))then
    let $current := util:node-by-id(doc("/db/Dane/akweny.xml"), request:get-parameter("current", ()))
    return
        $current (: TODO do something to find the parent instead! :)

else
    (: TODO whatever you are already doing :)

虽然我使用util:node-idutil:node-by-id从一个查询链接到另一个查询,但我不建议这样做,因为这些ID不稳定。相反,您应该将ID添加到您有兴趣直接寻址的每条记录的XML中并使用它们。