问题标签 [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.
java - Jena 在要求缺席 Xerces 的课程时失败,同时包含 Xerces 2
我收到错误
在运行一个简单的 Jena 示例时,但我的 Mavenpom.xml
文件中确实有这两个依赖项:
我检查了可下载的 Jena 存档,它的lib
目录确实包含 Xerces 2.11.0 jar 文件,所以版本是正确的。
这里缺少什么?
更新:
AndyS 指出不需要依赖,这NoClassDefFoundError
与更常见的不同ClassNotFoundException
。
在没有依赖关系的情况下发生错误。至于NoClassDefFoundError
,不知道是什么原因造成的。我的代码非常简单:
与test.jsonld
存在
包括异常在内的完整输出如下。我不知道如何开始解决这个问题,有什么建议吗?
java - Xerces2 XML 解析器和 Xalan XSLT 处理器——状态和替换?
现在是 2018 年。用于 Java 的Xerces2 XML 解析器和Xalan XSLT 处理器库的状态如何?他们的最新版本似乎分别是2013 年的 2.11.0和2014 年的 2.7.2。
他们还维护吗?
它们是否完美到不需要偶尔发布补丁?
是否可以使用来自不同供应商的替代库?这些替代品和这两个一样免费吗?
仅使用 JDK 提供的功能,通常可以不使用这些吗?
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。
java - 如何获取违反多字段 XSD 断言的 XML 元素
我有一个<assert>
验证多个字段的 XSD 规则,例如:
我经过验证的 XML 如下所示:
我的验证代码看起来像这样(变得更短更容易):
当我验证 XML 时,resident/data
带有ID
123 的块违反了断言,因为 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>
导致错误的整个块?
亲切的问候蒂莫
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 中确认了这种行为。
堆栈跟踪的相关部分是:
java - 如何使用 XERCES2 从 XSD 访问任何元素并获取其数据类型和其他相关信息
我想解析我的 XSD 并从中获取元素和数据类型。我正在寻找某种机制,我可以在其中传递element
名称并为其获取名称datatype
。
在搜索了一个高效、高性能的开源库后,我发现XERCES2
这将是一个不错的选择。因此,我XERCES2
用来解析我的 XSD。我有点卡在无法datatype
绕过element name
. 如果有人可以对此提供一些指导,那就太好了。
我想获得type
for element name
。
以下是我的 XSD:
以下是我的 Java 代码,我在其中传递 XSD 文件的位置并使用以下方法对其进行解析XERCES2
:
另外,我有一个问题:我有一个 XML 文件,我正在使用SAX
解析器为每个我想知道 XSD 类型的元素解析它。因此我正在这样做,所以我想知道是否XERCES2
是最佳选择,或者我可以使用其他一些库SAXON
。
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 是否不正确的澄清将不胜感激。
java - 如何使用 Xerces2-j 验证带有目录的 xml 文件
我正在尝试使用 oasis 目录验证 xml 文件。我需要提供 xml 文件的路径和包含 xsd 作为输入的目录的路径,并将验证(真或错误消息)作为输出。
到目前为止我所做的是:
所以它到目前为止工作。
问题是添加目录。我找到了一些代码示例,但它不起作用:
}
最后,xsd 没有找到,验证失败。
有人可以解释我做错了什么吗?我觉得它应该很简单,但我错过了一些东西。
感谢。
java - XSModel 对象可以从 Schema 对象中获取吗?
使用 JAXP,我可以创建一个 Schema 对象。例如
我正在使用 Xerces。有没有办法获得与架构对象对应的XSModel(org.apache.xerces.xs.XSModel)?
java - 公共标识符、系统标识符和基本系统标识符在 XML 中指的是什么?
Xerces2-j XMLInputSource以及 SAX InputSource指的是公共和系统标识符。Xerces2-JXMLInputSource
也指基本系统标识符。
这些标识符代表什么?
编辑:Xerces-J,当将文件位置作为 SystemId 时,将打开文件作为输入。如果输入是作为字节流提供的,而不是从其他来源(例如数据库)提供,那么公共 ID 或系统 ID 有什么用途吗?