【问题标题】:Xquery function call self first without click and then after click function call self with XpathXquery 函数首先调用 self 而不单击,然后单击函数调用 self 后使用 Xpath
【发布时间】:2014-04-08 08:19:55
【问题描述】:

标题很奇怪,但是...

在 Exist-db 中

如何正常调用同一页面上的函数。只需在 XML 中显示 evrythink,然后单击 hiperlink 再次使用 XPath 调用 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”时,它必须只显示找到任何具有父元素 akwen 的元素 akweny重复以当前点击元素 akwen

的值为 nazwa 子元素结束

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

有什么想法吗?

ps。 nazwa=波兰语名称

【问题讨论】:

    标签: jquery xml xpath exist-db


    【解决方案1】:

    我不确定我是否能理解您的 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 来确定是否已使用参数调用它并采取不同的行动。例如:

    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 中并使用它们。

    【讨论】:

    • 我收到此错误:无法读取源文件 C:\eXist-db\webapp\aps\AkwenyXML\text.xq 即使我将整个链接放入 util:node-by-id
    • 这没有任何意义,请问您可以发布您的查询吗?
    • 看看我的答案。由于太长,我无法将代码添加到评论中。
    • 你的回答对我没有帮助,用 pastebin 什么的呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-11
    • 2017-10-08
    • 2013-07-03
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    • 2013-02-16
    相关资源
    最近更新 更多