关系XML模式是';他工作得不太好

关系XML模式是';他工作得不太好,xml,xsd,xmlschemaset,Xml,Xsd,Xmlschemaset,我一直在基于一个非常容易理解的数据库表编写xsd文件。想象一下“用户”。这些用户有普通字段(firstname、lastname等),也有电话和地址字段(每个用户可以有多个电话和地址)。我想为这种关系创建最佳的XML模式,以便将来根据预先确定的模式生成xsd文件 所以我在XML模式中得到了这个(但我认为最重要的部分是在哪里实现我的键和键引用): 包含所有对象 包含所有员工信息 包含所有已创建的电话 包含创建的所有地址 包含完成创建的地址对象的所有地址行 在那之后,我创建了一个小XML文件来测

我一直在基于一个非常容易理解的数据库表编写xsd文件。想象一下“用户”。这些用户有普通字段(firstname、lastname等),也有电话和地址字段(每个用户可以有多个电话和地址)。我想为这种关系创建最佳的XML模式,以便将来根据预先确定的模式生成xsd文件

所以我在XML模式中得到了这个(但我认为最重要的部分是在哪里实现我的键和键引用)


包含所有对象
包含所有员工信息
包含所有已创建的电话
包含创建的所有地址
包含完成创建的地址对象的所有地址行
在那之后,我创建了一个小XML文件来测试我所有的键、格式、模式和枚举是否工作正常

到目前为止,我得到的是:


用户UID1
UserFirstName1
UserLastName1
用户一
userone@gmail.com
电话号码1
电话号码2
电话号码4
0
用户扇区1
先生

你能帮我吗

非常感谢,
Vincent

您将keyref定义为

<xs:keyref name="FKPhonetoUsers" refer="PhoneUID">
    <xs:selector xpath="User/UserPhones/*" />
    <xs:field xpath="PhoneUID" />
</xs:keyref>

现在,
User/UserPhones/*
选择三个
PhoneUID
元素。相对于这些元素计算
xs:field
表达式。它们都没有名为
PhoneUID
的子级,因此未选择任何内容,因此未验证任何内容。将
xs:field
更改为
xpath=“.”
即可正常工作


显然,您对SQL的思考非常深入,SQL用户在使用XPath时犯的一个常见错误是忘记了使用元素名X意味着
child::X
,而不是
self::X

我刚刚开始使用XML和XML模式,所以是的,我肯定还没有正确思考。无论如何,非常感谢,这正是我所需要的。