我已经阅读了很多关于使用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) 我在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添加元素?
我正在使用 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'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) 嗨,我是 BaseX 的新手,我正在尝试从文件夹中读取一堆 XML 文件。读取这些文件后,我会将数据输出到数据库表(一些 RDBMS)中。但是我不知道从哪里开始,因为我找不到很多关于使用 BaseX 的教程。我已经在互联网上搜索过,但仍然没有太大帮助。有人可以帮我解决这个问题。
提前致谢。
使用 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和XPath 2.0及更高版本共享的XQuery支持各种数字数据类型,其中两种是xs:double和xs: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.1而new BigDecimal(1.1)导致1.100000000000000088817841970012523233890533447265625.
当我尝试的演员xs:double到xs: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,哪种方法是实施演员操作的正确方法?
我正在尝试使用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仍然转换为转义字符。
目前,我是一个研究小组的实习生,该小组可以搜索大量文本(语料库)。不仅可以搜索文字字符串,更重要的是,还可以查找与给定输入类似的语法依赖结构,而无需精通任何编程语言或语料库注释风格。很明显,这个工具是为语言学家准备的。
在项目开始时 - 在我参与该项目之前 - 该工具仅限于相当小的语料库(最多 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) 我有1581个单词需要在荷兰语的XML语料库中查找(5亿字).该语料库本身在许多数据库中被分开.(你可以在这里阅读原因.)我们使用BaseX作为服务器(版本7.9),它使用XQuery作为输入.
我感兴趣的是找出每个字有多少次是在用中性判断(胼HET)或非中性判断(德) -这是通过查找由一个NP(名词短语)的XPath的结构做了哪些有两个女儿,一个带有lemma de或het的限定词,和一个头,这是我感兴趣的词.
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) 我正在尝试运行此代码,但出现以下错误。
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)