- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在尝试使用 xs:key 和 xs:keyref 定义在 XML 架构上定义一些外键约束。我希望文档的结构按以下方式分层:
<?xml version="1.0" encoding="UTF-8"?>
<tns:root xmlns:tns="http://www.example.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.org/ SampleSchema.xsd ">
<parent parentKey="parent1">
<child childKey="child1"/>
<child childKey="child2"/>
</parent>
<parent parentKey="parent2">
<child childKey="child1"/>
<child childKey="child2"/>
</parent>
<referrer parentRef="parent1" childRef="child2"/>
</tns:root>
每个父项都有一个(全局)唯一键,由 parentKey 定义。每个子项都有由 childKey 定义的键,但 childKey 仅在其包含父项的范围内是唯一的。
然后会有一个引用者列表,其中包含对特定父项和子项的外键引用。
我可以根据需要定义键,只需将它们放在正确的元素上:根元素上的 parentKey 约束和父元素上的 childKey 约束。我还可以毫不费力地将 keyref 定义为 parentKey。
当尝试为 childKey 定义一个 keyref 时会出现问题。我尝试在根元素上为 childKey 定义一个简单的 keyref,但这不起作用,因为我看不到仅选择正确父子树下的子元素的方法。 (至少,Eclipse 验证器总是简单地根据文档中最后 父子树的内容进行验证...)。
然后我尝试定义一个组合键(在 root 上):
如果在父项下定义了多个子项,则此操作失败。这是基于 XSD 1.1 spec 的正确行为,第 3.11.4 节,第 3 项,其中规定键必须最多匹配每个字段定义的一个节点。
重申一下:如果我强制 childKeys 是全局唯一的,这很容易实现;困难在于引用本地唯一的子键。
有 XSD 高手有想法吗?
作为引用,这里有一个示例 XSD,其中注释掉了失败的 childKey keyref:
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/" xmlns:tns="http://www.example.org/" elementFormDefault="unqualified">
<element name="root">
<complexType>
<sequence>
<element name="parent" maxOccurs="unbounded" minOccurs="1">
<complexType>
<sequence>
<element name="child" maxOccurs="unbounded" minOccurs="1">
<complexType>
<attribute name="childKey" type="string" use="required"/>
</complexType>
</element>
</sequence>
<attribute name="parentKey" type="string" use="required"/>
</complexType>
<key name="childKeyDef">
<selector xpath="child"/>
<field xpath="@childKey"/>
</key>
</element>
<element name="referrer" maxOccurs="unbounded" minOccurs="1">
<complexType>
<attribute name="parentRef" type="string"/>
<attribute name="childRef" type="string"/>
</complexType>
</element>
</sequence>
</complexType>
<key name="parentKeyDef">
<selector xpath="parent"/>
<field xpath="@parentKey"/>
</key>
<keyref name="parentKeyRef" refer="tns:parentKeyDef">
<selector xpath="referrers"/>
<field xpath="@parentRef"/>
</keyref>
<!-- <keyref name="childKeyRef" refer="tns:childKeyDef">-->
<!-- <selector xpath="referrers"/>-->
<!-- <field xpath="@childRef"/>-->
<!-- </keyref>-->
</element>
</schema>
最佳答案
如何从 child 引用 parent ?即使有很多 child ,也只有一个 parent ,并且组合 (parent,child) 会创建一个全局唯一的键,即使子键仅在其父项中是唯一的:
<key name="childKeyDef">
<selector xpath="child"/>
<field xpath="@childKey"/>
<field xpath="../@parentKey"/>
</key>
这在 xmllint 中不起作用,即使规范似乎没有明确禁止对字段进行此操作 - 仅适用于选择器:3.11.4 , (2) 表示选择器不能是祖先(它只能是上下文节点或后代。)
啊,致命一击(查看具体语法):允许的 XPath 表达式非常有限,根本不包括“..”http://www.w3.org/TR/xmlschema-1/#c-fields-xpaths
所以,抱歉,这不能回答您的问题,但也许它会给您一些想法。
关于xml - XSD key /keyref : hierarchical key structure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/891324/
我有这样的源数据 Childid | Parent ID ------- | --------- 1 | NULL 2 | 1 3 | 1 4 | 2 5 | 4 6 | 5 7 | 6 我需要一个
我想显示父级选择,以便我可以选择父级以进行布局。 这个问题在 WordPress 论坛中没有得到解答。它可能是一个缺失或即将推出的功能。有人让它工作吗? register_post_type('foo
我有一个包含 3 级分层数据的表,但我的查询对级别的分类不正确。 我的查询: SELECT t1.name AS lev1, t2.name as lev2, t3.name as lev3 FRO
我需要一个文件的 URI(我将其放入资源目录中)。如果我使用 MyClass.class.getClassLoader().getResource(resource) 我明白 java.lang.Il
我刚开始在我的 Java 程序(为 Windows 7 制作)中使用 Jsch 进行 SSH 连接。我遇到了将私钥合并到我的程序中的问题。我使用以下代码: URL keyFileURL = Main.
所以我一直在处理一个有一些严重缺陷的自制 DB 框架,使用的理由是不使用 ORM 将节省执行的查询数量。 如果我从可连接对象层次结构的顶层选择所有可能的记录,那么在使用 ORM(例如 Hibernat
我估计了一个具有许多随机效应的复杂层次模型,但我真的不知道检查收敛性的最佳方法是什么。我有来自几百个人的复杂纵向数据,并为每个人估计了相当多的参数。正因为如此,我可以通过许多跟踪图进行目视检查。或者我
我已经对此进行了研究,并且知道我不是第一个提出问题的人,但我似乎无法理解它。我创建了一个简单的示例,如果有人可以提供缺失的链接,我认为它可以帮助我破解它! 我有一个区域表,其中包含层次结构中的大陆和国
好吧,这应该很容易,但我一直在撕扯我的头发。这是我的 POCO(它与机器零件有关,所以一个零件可以包含在父零件中): public class Part { public int ID { ge
我正在绑定(bind)到 SiteMapDataSource(分层)。 我正在重写 PerformDataBinding 以从数据源中获取数据。 页面加载时一切正常。但是,当我在页面上的任何位置执行回
我想从 ViewModel 中的数据动态创建 Hierarchical ContextMenu。 在 ViewMode 中,我定义了 ContextMenuAction: public class C
我正在评估 Backbone javascript framework用于在 TreeView 小部件中显示分层模型的项目(想想 Windows 文件浏览器)。 我喜欢 Backbone 对世界的看法
考虑一个具有 32 位虚拟地址和 1KB 页面的虚拟内存系统。每个页表条目都需要 32 位。希望将页表大小限制为一页。 需要多少级页表? 两个级别的表有 256 个条目;一个级别的表有 64 个条目。
我编写了一个 Oracle 层次结构查询,它将为我们提供特定员工的高层管理人员。 例如如果我们有示例 Emp 和 Manager 映射,例如: WITH emp_manager_mapping AS
考虑一个具有 32 位虚拟地址和 1KB 页面的虚拟内存系统。每个页表条目都需要 32 位。希望将页表大小限制为一页。 需要多少级页表? 两个级别的表有 256 个条目;一个级别的表有 64 个条目。
我想了解如何构建数据集以通过分层边缘捆绑进行可视化。 这是我的测试数据集 [ {"name":"Flare.Expertise.Informatics","imports":["F
我正在尝试使用 Python 和 xml.etree.ElementTree 处理 XML 文件,但遇到多个“分层”默认 namespace 的问题。我需要做的是更改一些节点的文本字段的内容,然后以相
我正在寻找一种将具有复杂层次结构的数据合并到pandas DataFrame中的方法。这种层次结构是由数据中不同的相互依存关系引起的。例如。有一些参数定义了数据的生成方式,然后有时间相关的可观测值,空
我正在实现类别结构,有些产品会有一级类别,但其他产品可能有两级或更多级别: /posts/cat2/post-sulg /posts/cat-1/sub-1/post-slug /posts/cat-
在关于人类可读 URL 的 now migrated question 中,我允许自己详细说明我的一个小爱好: When I encounter URLs like http://www.exampl
我是一名优秀的程序员,十分优秀!