问题标签 [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.
xml - XSD key/keyref 初学者问题
我正在尝试实现一个非常简单的 XML 模式约束。
<batz>类型元素的idref属性应该只允许具有与至少一个元素<bar>的id属性匹配的值。
如果这对您没有任何意义,那么请看下面的示例 XML 文档,我认为它实际上比我试图用文字来解释它更好。
所以,问题:为什么 xmllint 让下面的 schema/xml 组合通过(它说文档是有效的)?如何修复它以实现所需的约束?
架构:
文件:
xpath - 根据 XPath 中的元素类型定义 keyref 选择器
假设我有一个如下所示的 XML 文件:
在定义此 XML 文件结构的 XSD 文件中,我将名称为“b”和“c”的元素定义为相同类型(并且该类型需要属性“d”)。
假设我想对'b'和'c'都是类型的所有元素进行keyReference,XPath中有什么方法可以做到这一点吗?
在“a”类型的定义中,我希望是这样的:
这样的事情是否可能,或者 XPath,即使在 XSD 中,也是不知道模式的?
xml - 如何为相同类型的嵌套元素创建带有 key/keyrefs 的 xml 模式
我定期处理一些 XML 文件,并希望获得比 DTD 提供的更好的验证。所以我开始阅读模式,看看是否能帮助我。到目前为止,我已经能够创造出几乎像我需要的东西,除了一件。我希望能够将元素的属性限制为具有相同元素类型的兄弟元素或祖先元素的不同属性的值。这甚至可以使用 XML Schema 键/keyref 限制吗?
我有一个看起来像这样的文件:
在本文档中,节点可以“扩展”其他节点:
- 兄弟姐妹
- 父母的兄弟姐妹
但是,节点不应“扩展”:
- 父母
- 父母兄弟姐妹的子节点
这意味着MyHouse可以“扩展” Table,这没有意义,但我可以接受。
同样重要的是,两个房屋节点都应该能够拥有自己的名为DiningRoom的节点。
我当前的架构类似于:
这个模式做了我正在寻找的一部分。它将键设置为nodeContainer中第一级节点的名称,这些键可用于“扩展” nodeContainer或以下任何级别的任何节点。只要我不想在较低级别“扩展”兄弟姐妹,这就是有效的。由于这一行,上面的示例文档无法验证:
在我创建的架构中,RoomWithDoor不是分配给“扩展”的有效键,因为它不是nodeContainer中第一级节点的一部分。但是无论如何要编写密钥/密钥引用以使它们成为有效密钥?键/keyref 定义的放置是否有所不同?我的 xpath 是否过于具体(它们怎么可能不那么具体)?
xml - XSD Key/KeyRef 以及如何引用
我们使用 XML 来定义一个模型,然后我们用它来生成代码。该文件看起来像这样:
我真正想要强制执行的是,任何标签的 ref 属性都与别名标签、obj1 标签或 obj2 标签或某些预定义值(例如String或int32 )的名称标签匹配。我已经定义了文件在 XSD 中必须具有的一般结构。我想用 XSD 实现什么?
谢谢
xml - XML Schema keyref 问题,可能是递归元素的问题
好吧,我一直在用我的头撞这个很久,我想我的大脑已经严重受损,以至于忘记了莎士比亚。没关系,我不怎么用他。这是我的问题。
我在 xml 文档的顶部有一个水果列表。这就是所谓的“查找表”。
然后我在下面构建一个菜单系统。每个菜单可以有更多菜单或产品列表。这些产品必须与顶部的水果相对应。
我已经能够确认正在填充水果列表,甚至可以获得 keyref 来验证菜单的一级。但我无法让它验证整个菜单树。我已经标记了我尝试使用 keyref 运行的位置<!-- KEY FAIL -->
。
我正在使用 xmllint 进行验证。如果我在其中使用 // 执行任何 xpath,我会得到“无法编译”。
这是示例 xml:
这是xsd:
xml - Visual Studio 2010 中的 XSD 密钥/keyref 智能感知验证支持
我一直在寻找答案,但找不到:
- 在 Visual Studio 2010 中是否有通过Intellisense的 XSD 密钥/keyref 验证支持?
- 如果是这样,如何使它工作?
- 如果没有,Visual Studio 中是否有(内置)方法可以在具有 XSD 架构的 XML 中进行键/引用验证?
谢谢!
更新:请注意,问题不是关于如何验证具有 XSD 文件的 XML。我专门询问 Visual Studio 中的key/keyref intellisense/whatever 支持,这似乎根本没有添加。
xml - 用于 key / keyref 的 XML Schema 验证器
是否有在线 XML 验证器报告 key 和 keyref 违规错误?
根据我的尝试,例如使用corefiling,它不起作用。在我看来,它只是忽略了 key 和 keyref 规范。
我想要的是针对 Schema 验证 XML 实例并在
- 有重复的键
- keyrefs 没有引用现有元素 的情况下得到错误
php - 针对 xml 模式的 XML 验证在 php 中失败,但在 .NET (VS2010) 中有效
我有几个 xml 文件,但我将只展示一个和我验证它的 xsd。让我首先描述一下这个问题。我在 VS2010 中编辑文件,VS 运行时解析器在编辑 xml 文件时没有显示错误。然后,当我运行一个加载 xml 文件并根据 xml 模式验证它的 php 命令行脚本时,它以一个 excption 结尾
警告:DOMDocument::schemaValidate(): 元素“元素”:没有为 keyref 'elementRef' 的键序列 ['answers'] 找到匹配项。
但是,我真的看不到 xsd 文件中的错误。
xml文件:
xsd 文件中的 XML 架构:
xml - 递归复杂类型定义中的 XML、XSD xs:keyref
我有一些 xml 数据,顶部有一个允许类型的列表,以及一个引用允许类型的对象和子对象的递归列表类型:
我已经定义了验证此文档的架构,如下所示:
在 oXygen 13.2 中进行验证时,出现以下错误:
我相信这是因为 xs:keyref 是 xs:complexType 定义的子元素,它不是定义 xs:unique 的 xs:element 的子元素。
我可以将 xs:keyref 移动到 ROOT 定义中并使用 XPath 定位 TYPE 元素,但是 // 语法是不允许的,所以我会失去递归并且必须为每个嵌套级别定义一个新的 xs:keyref。** UPDATE - // 在 XPath 开始时允许,前面有一个点!**
Is there a solution I have missed (still using XSDs)? Thanks in advance..
xml - XSD 架构参考完整性 xs:keyref
我有一个名为 Event 的 xsd,其中包含两个类型为 AccountStructureItem 和 EventItem 的列表(“AccountStructures”和“Events”)。AccountStructureItem 中有一个属性:SourceId 定义为 unique 和 key。EventItem 类型还有一个 SourceId 属性,它是对 AccountStructureItem 的 SourceId 的引用。
我将 AccountStructureItem 的 ID 声明如下:
这种关系是一对多的,可以有很多 EventItem 引用同一个 AccountStructureItem 的 SourceId。因此 EventItem 的键是另一个属性。
我的问题:尝试使用下面的 xs:keyref 创建对 accountstructure 的 accounts_key 的 keyreference 约束时出现错误。
验证中的错误消息如下:“keyref 事件找不到引用的键或范围内唯一”
请参阅下面提供的完整 XSD 和测试 xml 文件: