问题标签 [keyref]
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.
xsd - 在 XSD 中使用 keyRef:如何引用位于不同 XSD 中的键(超出范围错误)
我的系统解析两个 XML 文件(通过JAXB
解组和xjc
生成的代码)
- componentModel.xml :从建模工具生成
- detailDesign.xml : 手册,添加信息
为了避免对内容和结构进行代码检查,每个文件都使用自己的 XSD 进行验证
- 组件模型.xsd
- 详细设计.xsd
这两个 xsd 都包括“utilities.xsd”,其中定义了常见的复杂和简单类型
一切正常
我现在想添加一致性检查:
- Id 的唯一性(组件名称)
- “detailsDesign”中的组件必须通过“name”和“nameRef”属性引用“componentModel”中的组件之一
以下是结构(我已简化文件中的名称和结构以仅显示相关信息)注意:如您所见,除了默认名称外,我不使用任何名称空间
组件模型.xml
组件模型.xsd
实用程序.xsd
详细设计.xml
详细设计.xsd
它适用于组件之间“名称”属性的唯一性(从ValidationEventHandler
set on检索的错误unmarshaller
):
为元素“组件”的标识约束声明的重复键值 [id1]。
但我无法使“keyref”功能正常工作(从ValidationEventHandler
set on检索错误unmarshaller
):
身份约束错误:身份约束“KeyRef@272ed83b”有一个 keyref,它引用了超出范围的键或唯一值。
如何使 keyRef 以查看在其他 XSD 文件中定义的密钥
谢谢
马思
xml - xsd 模式中的常量键
我有以下 XSD 架构(摘录):
说明:我想指定一些我可以在函数、变量和其他类型中引用的类型。
现在我想引用原始类型,它们没有在 XML 中声明,但应该是 XSD 模式中可以引用的常量键。
我尝试过的(但不起作用):
如何在 XSD 架构中指定常量键?
xml - 为密钥设置 xsd 并验证 xml
我正在尝试为 xml 设置一个 xsd,并确保元素没有重复的子元素值。下面是一个无效的 xml 示例。
我已经创建了 xsd,它可以正确验证架构,但不能因为 Type 元素的键无效而引发异常。
老实说,我已经很久没有使用 XMl 了,而且似乎找不到太多关于处理元素值(而不是属性)处的键的在线文档。
xml - xsd中的可选keyref?
是否可以在 xsd 中定义一个属性,以便它可能有一个空值,但在有值时检查是否引用另一个元素?
我尝试了以下架构:
我可以使用选择器/字段以某种方式排除空属性吗?
我正在尝试为现有文件创建架构,并且不希望不必更改它们以删除空属性。
xml - XSD - complexeType 中的 keyref - 未找到匹配项
我编写了一个 XSD 来定义以下元素:
- 词汇表
- 定义 [术语=唯一]
- 术语[参考=术语]
- 定义 [术语=唯一]
“词汇表”包含“定义”列表。每个“定义”都有一个唯一的属性“术语”。“定义”可以包含带有元素“术语”的混合文本。每个“术语”都有一个属性“ref”,它引用定义的术语属性。
请注意,keyref
(命名为“termRef”)是complexType
定义(命名为“textType”)的一部分,因为这种类型应该在 xsd 文档的多个位置有用,而不仅仅是在“定义”中。
我不明白为什么 XML linter 找不到关键参考。
这是我写的代码:
XSD:
XML:
这是来自 xmllint 的错误消息:
架构有效性错误:元素“{foo}term”:未找到 keyref '{foo}termRef' 的键序列 ['ik 1'] 的匹配项。
非常感谢您的帮助!:)