- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为什么以下 xpath 在 Java 中使用 Saxon 9.6 时不返回任何结果?
//字段
奇怪的是,我还评估了 //*
并循环比较了节点名称与“field”的结果,并为我的文档获得了 889 次点击。
下面是完整的代码示例:
初始化并运行测试:
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(file);
test(doc, "//*");
test(doc, "//field");
测试执行代码:
private void test(Document doc, String xpathString) throws Exception {
System.setProperty("javax.xml.xpath.XPathFactory:" + NamespaceConstant.OBJECT_MODEL_SAXON, "net.sf.saxon.xpath.XPathFactoryImpl");
XPathFactory xpf;
xpf = XPathFactory.newInstance(NamespaceConstant.OBJECT_MODEL_SAXON);
XPath xpath = xpf.newXPath();
XPathExpression expr = xpath.compile(xpathString);
Object result = expr.evaluate(doc, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
int fieldHits = 0;
for (int i = 0; i < nodes.getLength(); i++) {
Node node = nodes.item(i);
String name = node.getNodeName();
fieldHits = "field".equals(nodes.item(i).getNodeName()) ? fieldHits + 1 : fieldHits;
}
System.out.println("#hits total: " + nodes.getLength());
System.out.println("#hits 'field': " + fieldHits);
}
输出:
#hits total: 26256
#hits 'field': 889
#hits total: 0
#hits 'field': 0
示例 XML 文件(感谢 wero,我现在知道它与命名空间有关):
<?xml version="1.0" encoding="UTF-8"?>
<?xfa generator="AdobeLiveCycleDesignerES_V9.0.1.0.20091206.1.615263" APIVersion="3.2.9310.0"?>
<xdp:xdp xmlns:xdp="http://ns.adobe.com/xdp/" timeStamp="2015-11-17T07:12:49Z" uuid="262c190c-1563-4ae8-ae6e-4c8d59494a3c">
<template xmlns:xliff="urn:oasis:names:tc:xliff:document:1.1" xmlns="http://www.xfa.org/schema/xfa-template/2.8/">
<field name="A"></field>
<field name="B"></field>
<field name="C"></field>
<field name="D"></field>
<field name="E"></field>
<field name="F"></field>
</template>
</xdp:xdp>
最佳答案
最可能的解释是您的 field
元素具有非空命名空间 uri,因此与您的 XPath 表达式不匹配。
编辑:
正如我猜测的那样,您的文档声明了默认命名空间
xmlns="http://www.xfa.org/schema/xfa-template/2.8/"
因此 template
和 field
元素位于该命名空间中。
要匹配 field
元素,您需要 tweak您的 XPath 查询还可以声明该 namespace 或仅搜索本地名称。
关于java - 使用 Saxon 进行 XPath 评估不适用于节点名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33800484/
我有一个现有的 CentOS 7 服务器(当然是由其他人设置的)运行 Saxon。如果我运行: /usr/bin/java net.sf.saxon.Transform -s:input.xml -x
我目前正在使用各种版本的 Saxon-Processor 进行纯 XSL 转换。下面是我的简短样式表,根据我的问题的需要进行了简化: Call of func_
我正在尝试从 java 代码中抛出异常,该异常将在使用 Saxon 时包含来自 xsl:message 标记的消息。 使用下面的 xslt 文件 exception me
Saxon似乎不是gradle试图发送它的地方: Not Found For request 'GET /artifact/net/sf/saxon/saxon-HE/9.9.0-2/saxon-HE
我最近获得了 Saxon-PE 的试用许可证,并希望在 Camel 中使用此版本的 Saxon。我下载了 Saxon-PE-9.6.0.8 jar 并通过 maven 将它们包含到我的项目中。我正在使
我正在使用 Saxon 9.0.4 并将 Home Edition jar 包含在我的 Eclipse 项目中。但是每当我发出查询字符串时,什么也没有发生,并且我没有得到任何输出。当我从命令行使用以下
我想使用 xpath 3.1 fn:transform 创建一个输出文档。以下是 A.xsl。它在直接运行时创建 A.xml(从氧气中):
我对此很陌生。 我有一个查询和一个 xml 文件。 我可以写一个对该特定文件的查询 for $x in doc("file:///C:/Users/Foo/IdeaProjects/XQuery/sr
简单的问题! 如何找出我正在运行的 Saxon 版本?我有“sazon9he.jar”文件,但我似乎无法弄清楚确切的版本(即它是 9.7 还是 9.6...) 谢谢! 最佳答案 在发布问题几分钟后终于
Saxon 是否有办法按排序顺序返回节点,其中“顺序”由返回节点中的 1 个或多个节点/属性定义? 换句话说,XPath 查询可以是: /Order/Dates/Date order by . 谢谢
我发现 saxon 9.9.1-4 中 XQueryCompiler 的行为非常奇怪。当我第一次运行 XQuery 时,无论 XQuery 复杂性如何,编译都会花费大量时间(400 毫秒)——例如 m
我正在使用 Saxon 解析器将大文件拆分为较小的文件。下面是我的示例代码, TransformerFactory tFactory = TransformerFactory.newInstanc
我们通常会进行大量的 XPath 查询,但几乎没有一个重复。因此每个查询都会被编译、执行,然后被抛出。 在 Saxon 中是否有一种模式,我们应该设置告诉它构建一次性使用的编译查询,这样在这种模式下使
我们将撒克逊语与我们的图书馆一起运送。我们以代码形式向其传递许可证,因此不发送 saxon-library.lic 文件。我们的系统一切都运行良好。 但是,我们的一位客户遇到了一个问题,当 hazel
我最初应该通过声明我们的代码使用嵌入式 saxon 扩展函数来发布我的问题 - saxon:parse($xml) 返回 xml 的根元素/节点。但是,在 Saxon-HE 中,该扩展不再可用 - 所
给定以下xml: Wells 使用 Xerces,以下 xpath 查询有效: //urn:company.com:catalog.01:author 当我使用
有谁知道用于在 XSLT 中执行合并的内置函数,还是我需要编写自己的函数? 我有一些像这样的 xml: Worldwide WorldwideName 78 GB
如何将多个字段传递到 Saxon-HE ExtensionFunction 中? 扩展通常需要一个参数数组: new ExtensionFunction { @Override pub
我想知道是否有人有使用 XQuery 的经验,因为 free version of Saxon 支持它。 。一般可以认为它是完整且可用的吗? 最佳答案 是的,我发现免费版本快速且稳定。 XQuery
我有一个将 Json 转换为 Json 的 XQuery。我制作了一个可以在命令行上运行的演示版本,我想在 java 中使用它。 问题是我不知道如何在 XQuery 中设置参数。 我的源文件“1.js
我是一名优秀的程序员,十分优秀!