问题标签 [xerces2-j]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
370 浏览

java - Jena 在要求缺席 Xerces 的课程时失败,同时包含 Xerces 2

我收到错误

在运行一个简单的 Jena 示例时,但我的 Mavenpom.xml文件中确实有这两个依赖项:

我检查了可下载的 Jena 存档,它的lib目录确实包含 Xerces 2.11.0 jar 文件,所以版本是正确的。

这里缺少什么?

更新:

AndyS 指出不需要依赖,这NoClassDefFoundError与更常见的不同ClassNotFoundException

在没有依赖关系的情况下发生错误。至于NoClassDefFoundError,不知道是什么原因造成的。我的代码非常简单:

test.jsonld存在

包括异常在内的完整输出如下。我不知道如何开始解决这个问题,有什么建议吗?

0 投票
2 回答
1350 浏览

java - Xerces2 XML 解析器和 Xalan XSLT 处理器——状态和替换?

现在是 2018 年。用于 Java 的Xerces2 XML 解析器Xalan XSLT 处理器库的状态如何?他们的最新版本似乎分别是2013 年的 2.11.02014 年的 2.7.2

  • 他们还维护吗?

  • 它们是否完美到不需要偶尔发布补丁?

  • 是否可以使用来自不同供应商的替代库?这些替代品和这两个一样免费吗?

  • 仅使用 JDK 提供的功能,通常可以不使用这些吗?

0 投票
1 回答
1265 浏览

java - Xerces v2.12.0 XML Schema 1.1 验证

Xerces 2.12.0 声称支持 XSD 1.1 ( https://xerces.apache.org/xerces2-j/faq-xs.html ),但我无法通过 SchemaFactory.newInstance 调用。

更多背景:

此行失败:

有这个特例:

这是我正在使用的 Maven 依赖项:

虽然我找到了几篇声称这有效的帖子,但它不适合我。

我见过人们推荐这个非常古老的依赖项:

是的,这有点用,但我更喜欢使用 Apache 版本,特别是因为它声称支持 XSD 1.1。

0 投票
0 回答
35 浏览

java - 如何获取违反多字段 XSD 断言的 XML 元素

我有一个<assert>验证多个字段的 XSD 规则,例如:

我经过验证的 XML 如下所示:

我的验证代码看起来像这样(变得更短更容易):

当我验证 XML 时,resident/data带有ID123 的块违反了断言,因为 FIELD1 为 3(在 2、3、4 中)并且 FIELD2 没有值。我的 SAXParseException 与我的断言消息一起抛出(“字段 1 是 2、3 或 4,但字段 2 仍然没有值。请检查一下”)。XMLStreamReader reader站在我的结束</data>标记的位置,即 END_ELEMENT 。对于 END_ELEMENT,我不能调用reader.getElementText(),所以有机会回到起始元素并打印<ID>(123) 的内容吗?

或者有没有其他方法可以获得<data>---</data>导致错误的整个块?

亲切的问候蒂莫

0 投票
0 回答
37 浏览

xerces2-j - 如何配置 xerces 自定义 xincludehandler

我使用自定义 XIncludeHandler 类的新实例在 Xerces 解析器配置上设置了“http://apache.org/xml/properties/internal/xinclude-handler”属性。然后,我使用该配置创建一个新的 SAXParser。我通过在配置和解析器上调用 getProperty() 来验证自定义 xincludehandler 是否已安装。

xinclude 处理已启用。

但是当我调用 parse() 时,解析器使用默认的 XIncludeHandler 类,如默认处理程序发现无效的 href 属性(我的自定义处理程序应该拦截和修复)时发出的堆栈跟踪所示。

我已经在 v2.12.0、2.12.1 和 2.9.1 中确认了这种行为。

堆栈跟踪的相关部分是:

0 投票
0 回答
150 浏览

java - 如何使用 XERCES2 从 XSD 访问任何元素并获取其数据类型和其他相关信息

我想解析我的 XSD 并从中获取元素和数据类型。我正在寻找某种机制,我可以在其中传递element名称并为其获取名称datatype

在搜索了一个高效、高性能的开源库后,我发现XERCES2这将是一个不错的选择。因此,我XERCES2用来解析我的 XSD。我有点卡在无法datatype绕过element name. 如果有人可以对此提供一些指导,那就太好了。

我想获得typefor element name

以下是我的 XSD:

以下是我的 Java 代码,我在其中传递 XSD 文件的位置并使用以下方法对其进行解析XERCES2

另外,我有一个问题:我有一个 XML 文件,我正在使用SAX解析器为每个我想知道 XSD 类型的元素解析它。因此我正在这样做,所以我想知道是否XERCES2是最佳选择,或者我可以使用其他一些库SAXON

0 投票
1 回答
25 浏览

xsd - Xerces-J xsd:base64binary 词法验证问题

我最近将我的项目从 Xerces-J 2.7.0 升级到 Xerces-J 2.12.1,并且我看到模式验证行为发生了变化。我不完全清楚我的测试是错误的还是 Xerces 是错误的。

鉴于此架构:

而这个实例文件:

对于 Xerces-J 2.7.0,该实例文档将是有效的,但是在使用 Xerces-J 2.12.1 时,它现在被标记为无效。

我查看了模式 base64binary 规范,但我不清楚这是否应该有效(我的代码是正确的,Xerces-J 是错误的)或反之亦然。这是让我震惊的一段话:

请注意,此文法要求词法形式中的非空白字符数为四的倍数,并且等号仅出现在词法形式的末尾;不满足这些约束的字符串不是 base64Binary 的合法词法形式,因为它们不能被 base64 解码器成功解码。

注意:上述词汇空间的定义比 [RFC 2045] 中关于空格的定义更严格——这在实践中不是问题。任何与 RFC 兼容的字符串都可以出现在通过这种类型验证的元素或属性中,因为这种类型的·whiteSpace· facet 固定为折叠,这意味着所有前导和尾随空格都将被剥离,并且所有内部空格都折叠为单个空格字符,在执行上述语法之前。

根据枚举的定义,它限制了value-space,而不是lexical-space。在这种情况下,值空间似乎覆盖了原始二进制内容。如果是这种情况,那么空格应该是没有意义的。

任何关于我的代码或 Xerces 是否不正确的澄清将不胜感激。

0 投票
1 回答
77 浏览

java - 如何使用 Xerces2-j 验证带有目录的 xml 文件

我正在尝试使用 oasis 目录验证 xml 文件。我需要提供 xml 文件的路径和包含 xsd 作为输入的目录的路径,并将验证(真或错误消息)作为输出。

到目前为止我所做的是:

所以它到目前为止工作。

问题是添加目录。我找到了一些代码示例,但它不起作用:

}

最后,xsd 没有找到,验证失败。

有人可以解释我做错了什么吗?我觉得它应该很简单,但我错过了一些东西。

感谢。

0 投票
1 回答
16 浏览

java - XSModel 对象可以从 Schema 对象中获取吗?

使用 JAXP,我可以创建一个 Schema 对象。例如

我正在使用 Xerces。有没有办法获得与架构对象对应的XSModel(org.apache.xerces.xs.XSModel)?

0 投票
2 回答
38 浏览

java - 公共标识符、系统标识符和基本系统标识符在 XML 中指的是什么?

Xerces2-j XMLInputSource以及 SAX InputSource指的是公共和系统标识符。Xerces2-JXMLInputSource也指基本系统标识符。

这些标识符代表什么?

编辑:Xerces-J,当将文件位置作为 SystemId 时,将打开文件作为输入。如果输入是作为字节流提供的,而不是从其他来源(例如数据库)提供,那么公共 ID 或系统 ID 有什么用途吗?