标签: basex

高效且用户友好的方式来呈现缓慢加载的结果

我已经阅读了很多关于使用jQuery取消POST请求的类似问题,但似乎没有一个与我的接近.

我有你的日常表单,有一个PHP页面作为一个动作:

<form action="results.php">
  <input name="my-input" type="text">
  <input type="submit" value="submit">
</form>
Run Code Online (Sandbox Code Playgroud)

处理results.php在服务器端,基于形式给出的职位信息,需要很长的时间(30秒甚至更多,我们预计同比增长,因为我们的搜索空间将在未来几周内增加以及).我们正在访问包含所有数据的Basex服务器(版本7.9,不可升级).用户生成的XPath代码以表单形式提交,然后操作URL将XPath代码发送到返回结果的Basex服务器.从可用性的角度来看,我已经显示了一个"加载"屏幕,因此用户至少知道正在生成结果:

$("form").submit(function() {
  $("#overlay").show();
});

<div id="overlay"><p>Results are being generated</p></div>
Run Code Online (Sandbox Code Playgroud)

但是,我还想让用户选择按下按钮取消请求,在用户关闭页面时取消请求.请注意,在前一种情况下(按钮单击),这也意味着用户应该保持在同一页面上,可以编辑他们的输入,并立即重新提交他们的请求.最重要的是,当他们取消请求时,他们也可以立即重新发送它:服务器应该真正中止,并且在能够处理新查询之前不完成查询.

我想到这样的事情:

$("form").submit(function() {
  $("#overlay").show();
});
$("#overlay button").click(abortRequest);
$(window).unload(abortRequest);

function abortRequest() {
  // abort correct request
}

<div id="overlay">
  <p>Results are being generated</p>
  <button>Cancel</button>
</div>
Run Code Online (Sandbox Code Playgroud)

但正如您所看到的,我并不完全确定如何填写abortRequest以确保后续请求被中止和终止,以便可以发送新查询.请填写空白!或者我需要.preventDefault()提交表单,而是从jQuery执行ajax()调用?


正如我所说,我也想停止进程服务器端,从我读到的我需要exit()这个.但是我怎么能有exit另外一个PHP函数呢?例如,假设results.php我有一个处理脚本,我需要退出该脚本,我会这样做吗?

<?php
  if (isset($_POST['my-input'])) {
    $input = $_POST['my-input'];
    function processData() { …
Run Code Online (Sandbox Code Playgroud)

php jquery basex

18
推荐指数
1
解决办法
636
查看次数

使用Basex在XML中插入数据

我在BaseX中存储了两个XML文档,即医院和办公室.

以下是办公室xml:

<Staff>
    <Employee Name="Brian">
        <Personal>
            <SSN> 666-66-6666 </SSN>
        </Personal>
        <StaffInfo>
            <Position> Doctor </Position>
            <AccountableTo> David </AccountableTo>
        </StaffInfo>
    </Employee>
    <Employee Name="David">
        <Personal>
            <SSN> 555-55-5555 </SSN>
        </Personal>
        <StaffInfo>
            <Position> Doctor </Position>
            <AccountableTo />
        </StaffInfo>
    </Employee>
</Staff>
Run Code Online (Sandbox Code Playgroud)

在这个XML中,我想添加一个或多个员工.如何使用BaseX添加元素?

xquery xml-database xquery-update basex

6
推荐指数
1
解决办法
4496
查看次数

使用 BaseX 查询 XML 文件

我正在使用 BaseX 本机 XML 数据库来查询 XML 文件。我正在使用 BaseX 文档中提供的 BaseXClient.java 文件。我正在启动 basex 服务器并使用 BaseXClient.java 连接到服务器。

// create session
final BaseXClient session = new BaseXClient("localhost", 1984, "admin", "admin");

String query = "doc('xmlfiles/juicers.xml')//image";
// version 1: perform command and print returned string
System.out.println(session.execute(query));
Run Code Online (Sandbox Code Playgroud)

现在juicers.xml 文件有xmlns信息。

<?xml version="1.0"?>
<juicers
xmlns="http://www.juicers.org"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.juicers.org 
                    juicers.xsd">

<juicer>
    <name>OJ Home Juicer</name>
    <image>images\mighty_oj.gif</image>
    <description>There&apos;s just no substitute for a properly squeezed
        orange in the morning. So delicate and refreshing. The finest hotels
        use mechanical juicers of …
Run Code Online (Sandbox Code Playgroud)

xml xquery basex

5
推荐指数
1
解决办法
6204
查看次数

使用 BaseX 读取多个 XML 文件

嗨,我是 BaseX 的新手,我正在尝试从文件夹中读取一堆 XML 文件。读取这些文件后,我会将数据输出到数据库表(一些 RDBMS)中。但是我不知道从哪里开始,因为我找不到很多关于使用 BaseX 的教程。我已经在互联网上搜索过,但仍然没有太大帮助。有人可以帮我解决这个问题。

提前致谢。

xml basex

5
推荐指数
1
解决办法
3811
查看次数

BaseX:在哪里声明要对其执行查询的 XML 文档

使用 BaseX 程序,我能够使用 XPath 和 XQuery 来查询位于我的主目录中的 XML 文档,但是我在 XSLT 中执行相同操作时遇到了问题。

我正在查询的文档是BookstoreQ.xml

XPath 版本,运行完全正常:

doc("/home/ioannis/Desktop/BookstoreQ.xml")/Bookstore/Book/Title
Run Code Online (Sandbox Code Playgroud)

我要执行的 XSLT 代码:

<xsl:stylesheet version = "2.0" xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">
  <xsl:output method= "xml" indent = "yes" omit-xml-declaration = "yes" />
  <xsl:template match = "Book"></xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

在 XSLT 上阅读了BaseX 的文档,但没有找到解决方案。我如何运行给定的 XSLT?

xslt xquery basex

5
推荐指数
1
解决办法
1376
查看次数

是应该将xs:double转换为xs:decimal实现为BigDecimal.valueOf(double)还是new BigDecimal(double)?

与XSLT和XPath 2.0及更高版本共享的XQuery支持各种数字数据类型,其中两种是xs:doublexs:decimal.如http://www.w3.org/TR/xquery-operators/#casting-to-numerics中所定义,可以转换xs:double为an .xs:decimal

在Java中完成的实现似乎xs:double使用Java double数据类型并xs:decimal使用java.math.BigDecimal类来实现.该类支持两种将a转换double为a的方式BigDecimal,即do BigDecimal.valueOf(doubleValue)new BigDecimal(doubleValue).据/sf/answers/503040891/,前者给出了更直观的结果,而后者给出了更准确的结果,例如BigDecimal.valueOf(1.1)导致1.1new BigDecimal(1.1)导致1.100000000000000088817841970012523233890533447265625.

当我尝试的演员xs:doublexs:decimal与撒克逊和存在,那么

xquery version "1.0";

let $d1 as xs:double := 1.1E0
return xs:decimal($d1)
Run Code Online (Sandbox Code Playgroud)

输出1.100000000000000088817841970012523233890533447265625,同时用BaseX它输出1.1.我认为差异来自不同的实现,BaseX做BigDecimal.valueOf(1.1),Saxon和Exist new BigDecimal(1.1).

我的问题是:根据http://www.w3.org/TR/xquery-operators/#casting-to-numerics,哪种方法是实施演员操作的正确方法?

java xquery saxon exist-db basex

5
推荐指数
1
解决办法
674
查看次数

xquery从外部xs:string变量(basex)插入节点

我正在尝试使用BaseX将新元素插入到xml文档中。

declare variable $part external; 
insert nodes $part as first into db:open("PARTDB")/assembly[@name="ZB09010"]
Run Code Online (Sandbox Code Playgroud)

我正在使用BaseX GUI进行测试,并定义了$ part变量(通过单击$图标)。

如果我使用“本地”变量,例如

let $up := <Employee Name="Joe">
    <Personal>
      <SSN>666-66-1234</SSN>
    </Personal>
    <StaffInfo>
      <Position>Doctor</Position>
      <AccountableTo>Jeff</AccountableTo>
    </StaffInfo>
  </Employee>
  return
insert node $up as last into doc('office')/Staff
Run Code Online (Sandbox Code Playgroud)

那么插入将正常工作,但是,使用外部变量,每个保留的xml字符都将转换为xml转义字符序列,例如:<变为&lt;

我已经通过使用函数xquery:eval($ part)来包装变量来使其成功工作,但是在我看来,这就像是黑客。

我应该使用xs:string以外的其他类型来阻止翻译吗?还是我需要与外部变量一起使用以防止转换的某些功能。我也尝试用CDATA包装$ part xml内容,但是xml仍然转换为转义字符。

xquery basex

5
推荐指数
1
解决办法
493
查看次数

BaseX 中的基准测试:如何设置

目前,我是一个研究小组的实习生,该小组可以搜索大量文本(语料库)。不仅可以搜索文字字符串,更重要的是,还可以查找与给定输入类似的语法依赖结构,而无需精通任何编程语言或语料库注释风格。很明显,这个工具是为语言学家准备的。

在项目开始时 - 在我参与该项目之前 - 该工具仅限于相当小的语料库(最多 900 万字)。目标是使大量文本也可搜索。我们谈论的是 +- 5 亿字。已经进行了尝试,理论上应该通过减少搜索空间来提高速度(请参阅本文),但这尚未经过测试。这种尝试的结果是一个新的文件结构。与未处理的结构 A 相比,我们将此结构称为 B。我们希望 B 在使用 BaseX 查询时提供更快的结果。

我的问题是:用 Perl 脚本测试和比较这两种方法的最佳方法是什么?您可以在下面找到我当前用于在本地查询 BaseX 的脚本。它需要两个参数。存储不同文件的目录。这些文件各自单独存储 XPath。这些 XPath 是我选择用来进行基准测试的那些。第二个参数是返回结果的限制。当设置为零时,没有设置限制。

由于数据集的某些部分非常庞大,因此我们也将它们分成了不同的、大小相同的文件,称为 treebankparts。它们存储在<tb>标签里面treebankparts.lst

#!/usr/bin/perl

use warnings;

$| = 1;    # flush every print

# Directory where XPaths are stored
my $directory = shift(@ARGV);

# Set limit. If set to zero all results will be returned
my $limit = shift(@ARGV);

# Create session, connect to BaseX
my $session = Session->new([INFORMATION …
Run Code Online (Sandbox Code Playgroud)

perl benchmarking xquery basex

5
推荐指数
1
解决办法
323
查看次数

最有效的方法来计算XQuery中多个值的出现次数

我有1581个单词需要在荷兰语的XML语料库中查找(5亿字).该语料库本身在许多数据库中被分开.(你可以在这里阅读原因.)我们使用BaseX作为服务器(版本7.9),它使用XQuery作为输入.

我感兴趣的是找出每个字有多少次是在用中性判断(胼HET)或非中性判断() -这是通过查找由一个NP(名词短语)的XPath的结构做了哪些有两个女儿,一个带有lemma dehet的限定词,和一个头,这是我感兴趣的词.

de的示例结构

/node[@cat="np" and node[@rel="det" and @pt="lid" and @lemma="de"] and node[@rel="hd" and @pt="n" and @word="accelerator"]]
/node[@cat="np" and node[@rel="det" and @pt="lid" and @lemma="de"] and node[@rel="hd" and @pt="n" and @word="accountant"]]
/node[@cat="np" and node[@rel="det" and @pt="lid" and @lemma="de"] and node[@rel="hd" and @pt="n" and @word="ace"]]
/node[@cat="np" and node[@rel="det" and @pt="lid" and @lemma="de"] and node[@rel="hd" and @pt="n" and @word="acroniem"]]
Run Code Online (Sandbox Code Playgroud)

het的示例结构

/node[@cat="np" and node[@rel="det" and @pt="lid" and @lemma="het"] and node[@rel="hd" and @pt="n" …
Run Code Online (Sandbox Code Playgroud)

xml perl xpath xquery basex

5
推荐指数
1
解决办法
367
查看次数

Java错误:无法初始化主类

我正在尝试运行此代码,但出现以下错误。

package practicaXML;
import javax.xml.xquery.*;
import org.w3c.dom.Node;
import net.xqj.basex.BaseXXQDataSource;

public class App {
    public static void main(String[] args) {
        try {
            XQDataSource xqs = new BaseXXQDataSource();
            xqs.setProperty("serverName", "localhost");
            xqs.setProperty("port", "1984");
            xqs.setProperty("databaseName", "facts");

            XQConnection conn = xqs.getConnection("admin", "admin");

            String xqueryString = "//province[contains(@name, 'x')]";
            XQExpression xqe = conn.createExpression();
            XQResultSequence rs = xqe.executeQuery(xqueryString);

            Node n;
            while(rs.next()) {
                n = rs.getNode();
                System.out.println(n.getAttributes().getNamedItem("name").getNodeValue());
            }

            conn.close();
        } catch (Exception e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

安慰:

Error: Unable to initialize main class practicaXML.App …
Run Code Online (Sandbox Code Playgroud)

java xml xpath xquery basex

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

basex ×10

xquery ×8

xml ×4

java ×2

perl ×2

xpath ×2

benchmarking ×1

exist-db ×1

jquery ×1

php ×1

saxon ×1

xml-database ×1

xquery-update ×1

xslt ×1