Ace 编辑器根据指定的 XSD 编辑 XML?
如果没有,还有其他选择吗?
是可能的,只是 Ace 附带的库不支持它,因此您需要使用其他东西来针对 XSD 文件验证您的 XML。然后,您只需将收到的错误输出转换为注释,并使用以下命令禁用默认语法验证器:
editor.getSession().setUseWorker(false);
例如,我正在使用AgeGWT,这是一个包装器,允许在Java和GWT中使用Ace。请注意,github版本有非常过时的库(3-4年(。也许它们将来会更新,但看起来页面没有得到积极维护(,所以我只是使用 npm 下载并设置 Ace,以便我可以复制并使用 Ace 的最新库(具有额外的功能(。
然后,我使用了一个返回所有错误的 Java XML 验证器,类似于此处找到的错误。
这将检索 SAXParseException 的列表/数组。此类型允许查询错误文本以及行号和列号 - 这是设置注释所需的最少信息(我将它们全部设置为具有错误注释类型(。
注释本身是在 Ace 回调上设置的,每次更改编辑器中的文本时都会触发该回调:
editor.addOnChangeHandler(new AceEditorCallback() { @Override public void invokeAceCallback(JavaScriptObject obj) { // validate XSD...
然后,我在 Ace 编辑器中使用验证器之前收集的信息设置注释。
您不必使用 Java 或指定的库来完成这项工作。在 JavaScript 中以类似的方式执行此操作应该没有问题,也许使用 sax js...事实上,这可能会容易得多。
显然不是,根据2013年谷歌小组的讨论
CodeMirror 是另一个具有 XML 提示功能的 JS 编辑器。请参阅演示。可以自定义架构。
有几种具有完整验证功能的桌面替代方案。请参阅 O'Reilly 选择 XML 编辑器。