问题标签 [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.

0 投票
0 回答
266 浏览

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

它适用于组件之间“名称”属性的唯一性(从ValidationEventHandlerset on检索的错误unmarshaller):

为元素“组件”的标识约束声明的重复键值 [id1]。

但我无法使“keyref”功能正常工作(从ValidationEventHandlerset on检索错误unmarshaller):

身份约束错误:身份约束“KeyRef@272ed83b”有一个 keyref,它引用了超出范围的键或唯一值。

如何使 keyRef 以查看在其他 XSD 文件中定义的密钥

谢谢

马思

0 投票
1 回答
52 浏览

xml - xsd 模式中的常量键

我有以下 XSD 架构(摘录):

说明:我想指定一些我可以在函数、变量和其他类型中引用的类型。

现在我想引用原始类型,它们没有在 XML 中声明,但应该是 XSD 模式中可以引用的常量键。

我尝试过的(但不起作用):

如何在 XSD 架构中指定常量键?

0 投票
1 回答
21 浏览

xml - 为密钥设置 xsd 并验证 xml

我正在尝试为 xml 设置一个 xsd,并确保元素没有重复的子元素值。下面是一个无效的 xml 示例。

我已经创建了 xsd,它可以正确验证架构,但不能因为 Type 元素的键无效而引发异常。

老实说,我已经很久没有使用 XMl 了,而且似乎找不到太多关于处理元素值(而不是属性)处的键的在线文档。

0 投票
1 回答
24 浏览

xml - xsd中的可选keyref?

是否可以在 xsd 中定义一个属性,以便它可能有一个空值,但在有值时检查是否引用另一个元素?

我尝试了以下架构:

我可以使用选择器/字段以某种方式排除空属性吗?

我正在尝试为现有文件创建架构,并且不希望不必更改它们以删除空属性。

0 投票
2 回答
28 浏览

xml - XSD - complexeType 中的 keyref - 未找到匹配项

我编写了一个 XSD 来定义以下元素:

  • 词汇表
    • 定义 [术语=唯一]
      • 术语[参考=术语]

“词汇表”包含“定义”列表。每个“定义”都有一个唯一的属性“术语”。“定义”可以包含带有元素“术语”的混合文本。每个“术语”都有一个属性“ref”,它引用定义的术语属性。

请注意,keyref(命名为“termRef”)是complexType定义(命名为“textType”)的一部分,因为这种类型应该在 xsd 文档的多个位置有用,而不仅仅是在“定义”中。

我不明白为什么 XML linter 找不到关键参考。

这是我写的代码:

XSD:

XML:

这是来自 xmllint 的错误消息:

架构有效性错误:元素“{foo}term”:未找到 keyref '{foo}termRef' 的键序列 ['ik 1'] 的匹配项。

非常感谢您的帮助!:)