【问题标题】:XML key/keyref across multiple XML instances跨多个 XML 实例的 XML 键/键引用
【发布时间】:2013-09-27 13:32:31
【问题描述】:

是否可以跨多个 XML 实例验证 key/keyref。示例:xsd1 为 DataTypes 列表定义了一个模式和命名空间,每个 DataType 都有一个唯一的标识符 ID,它被定义为一个 keyref。 xsd2 定义了一个实体列表,这些实体应使用 xsd1 中的 ID。在 XML 创作软件 Oxygen 中,例如跨两个命名空间的 key/keyref 的 xsd 引用有效,但我没有设法创建一个验证场景,例如: "XML2 中的字段 X(针对 xsd2 验证)只能包含来自 XML1 中的字段 ID 的值(针对 xsd1 验证)"

这在 XML 创作状态下是否可行?还是我总是必须手动实施该验证?这没什么大不了的,但如果存在的话,为用户提供一个复杂的创作验证工具箱可能会有所帮助。

提前非常感谢!

【问题讨论】:

    标签: xml validation xsd key keyref


    【解决方案1】:

    XSD 无法做到这一点。您可以使用 Schematron 跨文档执行此操作。现在,key/keyref 的 Schematron 等效项不像其 XSD 对应项那样具有声明性,但仍然可行。请查看this article 了解详细信息...请记住,它是 key/unique/keyref 构造的通用解决方案,您可能可以针对您的特定情况做更简单的处理。

    【讨论】:

    • 感谢您提供此信息。但要确保我对 schematron 的看法是正确的:在编写 XML 文件时,仍然没有“即时”检查/验证整个 XML/实时,对吧?没有什么能像用于 XML 创作的 IntelliSense 那样在编写时查看特定的 XML 文件来验证和/或建议 XML,对吧?我之所以问,是因为我想为必须创建符合我的模式的 XML 的用户找到最好的工具套件。他们仍然必须编写所有 XML 并通过对我的系统进行一些验证来运行它,以检查一切是否有效?!
    • 当然你可以“即时”完成;但是,您想到了什么创作软件?您是在问诸如 Oxygen 之类的东西是否可以做到,或者一般来说,您希望自己构建的东西吗?后者可能相对容易构建......基于开放技术的专有编辑器可以完全实现您想要的。
    • 抱歉不清楚。我的问题是,如果这样的东西已经存在。我知道实施它不会有什么大不了的。
    • 你的意思是存在于某种 API 中?爪哇? 。网?我不知道。
    • 不,是否存在支持此功能的工具/工具套件?但我预计不会。
    猜你喜欢
    • 2014-10-19
    • 1970-01-01
    • 2010-11-23
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多